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