187 lines
6.6 KiB
Objective-C
187 lines
6.6 KiB
Objective-C
/*
|
|
* This file is part of the SDWebImage package.
|
|
* (c) Olivier Poitrey <rs@dailymotion.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import "SDWebImageCompat.h"
|
|
#import "SDWebImageOperation.h"
|
|
|
|
typedef NS_OPTIONS(NSUInteger, SDWebImageDownloaderOptions) {
|
|
SDWebImageDownloaderLowPriority = 1 << 0,
|
|
SDWebImageDownloaderProgressiveDownload = 1 << 1,
|
|
|
|
/**
|
|
* By default, request prevent the of NSURLCache. With this flag, NSURLCache
|
|
* is used with default policies.
|
|
*/
|
|
SDWebImageDownloaderUseNSURLCache = 1 << 2,
|
|
|
|
/**
|
|
* Call completion block with nil image/imageData if the image was read from NSURLCache
|
|
* (to be combined with `SDWebImageDownloaderUseNSURLCache`).
|
|
*/
|
|
|
|
SDWebImageDownloaderIgnoreCachedResponse = 1 << 3,
|
|
/**
|
|
* In iOS 4+, continue the download of the image if the app goes to background. This is achieved by asking the system for
|
|
* extra time in background to let the request finish. If the background task expires the operation will be cancelled.
|
|
*/
|
|
|
|
SDWebImageDownloaderContinueInBackground = 1 << 4,
|
|
|
|
/**
|
|
* Handles cookies stored in NSHTTPCookieStore by setting
|
|
* NSMutableURLRequest.HTTPShouldHandleCookies = YES;
|
|
*/
|
|
SDWebImageDownloaderHandleCookies = 1 << 5,
|
|
|
|
/**
|
|
* Enable to allow untrusted SSL ceriticates.
|
|
* Useful for testing purposes. Use with caution in production.
|
|
*/
|
|
SDWebImageDownloaderAllowInvalidSSLCertificates = 1 << 6,
|
|
|
|
/**
|
|
* Put the image in the high priority queue.
|
|
*/
|
|
SDWebImageDownloaderHighPriority = 1 << 7,
|
|
};
|
|
|
|
typedef NS_ENUM(NSInteger, SDWebImageDownloaderExecutionOrder) {
|
|
/**
|
|
* Default value. All download operations will execute in queue style (first-in-first-out).
|
|
*/
|
|
SDWebImageDownloaderFIFOExecutionOrder,
|
|
|
|
/**
|
|
* All download operations will execute in stack style (last-in-first-out).
|
|
*/
|
|
SDWebImageDownloaderLIFOExecutionOrder
|
|
};
|
|
|
|
extern NSString *const SDWebImageDownloadStartNotification;
|
|
extern NSString *const SDWebImageDownloadStopNotification;
|
|
|
|
typedef void(^SDWebImageDownloaderProgressBlock)(NSInteger receivedSize, NSInteger expectedSize);
|
|
|
|
typedef void(^SDWebImageDownloaderCompletedBlock)(UIImage *image, NSData *data, NSError *error, BOOL finished);
|
|
|
|
typedef NSDictionary *(^SDWebImageDownloaderHeadersFilterBlock)(NSURL *url, NSDictionary *headers);
|
|
|
|
/**
|
|
* Asynchronous downloader dedicated and optimized for image loading.
|
|
*/
|
|
@interface SDWebImageDownloader : NSObject
|
|
|
|
/**
|
|
* Decompressing images that are downloaded and cached can improve peformance but can consume lot of memory.
|
|
* Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption.
|
|
*/
|
|
@property (assign, nonatomic) BOOL shouldDecompressImages;
|
|
|
|
@property (assign, nonatomic) NSInteger maxConcurrentDownloads;
|
|
|
|
/**
|
|
* Shows the current amount of downloads that still need to be downloaded
|
|
*/
|
|
@property (readonly, nonatomic) NSUInteger currentDownloadCount;
|
|
|
|
|
|
/**
|
|
* The timeout value (in seconds) for the download operation. Default: 15.0.
|
|
*/
|
|
@property (assign, nonatomic) NSTimeInterval downloadTimeout;
|
|
|
|
|
|
/**
|
|
* Changes download operations execution order. Default value is `SDWebImageDownloaderFIFOExecutionOrder`.
|
|
*/
|
|
@property (assign, nonatomic) SDWebImageDownloaderExecutionOrder executionOrder;
|
|
|
|
/**
|
|
* Singleton method, returns the shared instance
|
|
*
|
|
* @return global shared instance of downloader class
|
|
*/
|
|
+ (SDWebImageDownloader *)sharedDownloader;
|
|
|
|
/**
|
|
* Set username
|
|
*/
|
|
@property (strong, nonatomic) NSString *username;
|
|
|
|
/**
|
|
* Set password
|
|
*/
|
|
@property (strong, nonatomic) NSString *password;
|
|
|
|
/**
|
|
* Set filter to pick headers for downloading image HTTP request.
|
|
*
|
|
* This block will be invoked for each downloading image request, returned
|
|
* NSDictionary will be used as headers in corresponding HTTP request.
|
|
*/
|
|
@property (nonatomic, copy) SDWebImageDownloaderHeadersFilterBlock headersFilter;
|
|
|
|
/**
|
|
* Set a value for a HTTP header to be appended to each download HTTP request.
|
|
*
|
|
* @param value The value for the header field. Use `nil` value to remove the header.
|
|
* @param field The name of the header field to set.
|
|
*/
|
|
- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
|
|
|
|
/**
|
|
* Returns the value of the specified HTTP header field.
|
|
*
|
|
* @return The value associated with the header field field, or `nil` if there is no corresponding header field.
|
|
*/
|
|
- (NSString *)valueForHTTPHeaderField:(NSString *)field;
|
|
|
|
/**
|
|
* Sets a subclass of `SDWebImageDownloaderOperation` as the default
|
|
* `NSOperation` to be used each time SDWebImage constructs a request
|
|
* operation to download an image.
|
|
*
|
|
* @param operationClass The subclass of `SDWebImageDownloaderOperation` to set
|
|
* as default. Passing `nil` will revert to `SDWebImageDownloaderOperation`.
|
|
*/
|
|
- (void)setOperationClass:(Class)operationClass;
|
|
|
|
/**
|
|
* Creates a SDWebImageDownloader async downloader instance with a given URL
|
|
*
|
|
* The delegate will be informed when the image is finish downloaded or an error has happen.
|
|
*
|
|
* @see SDWebImageDownloaderDelegate
|
|
*
|
|
* @param url The URL to the image to download
|
|
* @param options The options to be used for this download
|
|
* @param progressBlock A block called repeatedly while the image is downloading
|
|
* @param completedBlock A block called once the download is completed.
|
|
* If the download succeeded, the image parameter is set, in case of error,
|
|
* error parameter is set with the error. The last parameter is always YES
|
|
* if SDWebImageDownloaderProgressiveDownload isn't use. With the
|
|
* SDWebImageDownloaderProgressiveDownload option, this block is called
|
|
* repeatedly with the partial image object and the finished argument set to NO
|
|
* before to be called a last time with the full image and finished argument
|
|
* set to YES. In case of error, the finished argument is always YES.
|
|
*
|
|
* @return A cancellable SDWebImageOperation
|
|
*/
|
|
- (id <SDWebImageOperation>)downloadImageWithURL:(NSURL *)url
|
|
options:(SDWebImageDownloaderOptions)options
|
|
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
|
completed:(SDWebImageDownloaderCompletedBlock)completedBlock;
|
|
|
|
/**
|
|
* Sets the download queue suspension state
|
|
*/
|
|
- (void)setSuspended:(BOOL)suspended;
|
|
|
|
@end
|