1*5d8188f5SBen Roth // Copyright 2015-present 650 Industries. All rights reserved.
2*5d8188f5SBen Roth 
3*5d8188f5SBen Roth @import Foundation;
4*5d8188f5SBen Roth 
5*5d8188f5SBen Roth NS_ASSUME_NONNULL_BEGIN
6*5d8188f5SBen Roth 
7*5d8188f5SBen Roth extern NSString * const EXNetworkErrorDomain;
8*5d8188f5SBen Roth extern NSTimeInterval const EXFileDownloaderDefaultTimeoutInterval;
9*5d8188f5SBen Roth 
10*5d8188f5SBen Roth typedef void (^EXFileDownloaderSuccessBlock)(NSData *data, NSURLResponse *response);
11*5d8188f5SBen Roth typedef void (^EXFileDownloaderErrorBlock)(NSError *error, NSURLResponse *response);
12*5d8188f5SBen Roth 
13*5d8188f5SBen Roth @interface EXFileDownloader : NSObject
14*5d8188f5SBen Roth 
15*5d8188f5SBen Roth @property (nonatomic, strong, nullable) NSString *abiVersion;
16*5d8188f5SBen Roth @property (nonatomic, strong) NSURLSessionConfiguration *urlSessionConfiguration; // default is `defaultSessionConfiguration`
17*5d8188f5SBen Roth @property (nonatomic, assign) NSTimeInterval timeoutInterval; // default is NSURLRequest's default of 60 seconds.
18*5d8188f5SBen Roth @property (nonatomic, strong, nullable) NSString *releaseChannel;
19*5d8188f5SBen Roth 
20*5d8188f5SBen Roth - (void)downloadFileFromURL:(NSURL *)url
21*5d8188f5SBen Roth                successBlock:(EXFileDownloaderSuccessBlock)successBlock
22*5d8188f5SBen Roth                  errorBlock:(EXFileDownloaderErrorBlock)errorBlock;
23*5d8188f5SBen Roth 
24*5d8188f5SBen Roth - (void)setHTTPHeaderFields:(NSMutableURLRequest *)request;
25*5d8188f5SBen Roth 
26*5d8188f5SBen Roth @end
27*5d8188f5SBen Roth 
28*5d8188f5SBen Roth NS_ASSUME_NONNULL_END
29