Merge pull request #2997 from dreampiggy/black_list_error_code
Mark the black list formal error code, support remove the failed URL from black list
This commit is contained in:
commit
16e2f6f6a1
|
@ -19,6 +19,7 @@ typedef NS_ERROR_ENUM(SDWebImageErrorDomain, SDWebImageError) {
|
||||||
SDWebImageErrorInvalidURL = 1000, // The URL is invalid, such as nil URL or corrupted URL
|
SDWebImageErrorInvalidURL = 1000, // The URL is invalid, such as nil URL or corrupted URL
|
||||||
SDWebImageErrorBadImageData = 1001, // The image data can not be decoded to image, or the image data is empty
|
SDWebImageErrorBadImageData = 1001, // The image data can not be decoded to image, or the image data is empty
|
||||||
SDWebImageErrorCacheNotModified = 1002, // The remote location specify that the cached image is not modified, such as the HTTP response 304 code. It's useful for `SDWebImageRefreshCached`
|
SDWebImageErrorCacheNotModified = 1002, // The remote location specify that the cached image is not modified, such as the HTTP response 304 code. It's useful for `SDWebImageRefreshCached`
|
||||||
|
SDWebImageErrorBlackListed = 1003, // The URL is blacklisted because of unrecoverable failsure marked by downloader (such as 404), you can use `.retryFailed` option to avoid this
|
||||||
SDWebImageErrorInvalidDownloadOperation = 2000, // The image download operation is invalid, such as nil operation or unexpected error occur when operation initialized
|
SDWebImageErrorInvalidDownloadOperation = 2000, // The image download operation is invalid, such as nil operation or unexpected error occur when operation initialized
|
||||||
SDWebImageErrorInvalidDownloadStatusCode = 2001, // The image download response a invalid status code. You can check the status code in error's userInfo under `SDWebImageErrorDownloadStatusCodeKey`
|
SDWebImageErrorInvalidDownloadStatusCode = 2001, // The image download response a invalid status code. You can check the status code in error's userInfo under `SDWebImageErrorDownloadStatusCodeKey`
|
||||||
SDWebImageErrorCancelled = 2002, // The image loading operation is cancelled before finished, during either async disk cache query, or waiting before actual network request. For actual network request error, check `NSURLErrorDomain` error domain and code.
|
SDWebImageErrorCancelled = 2002, // The image loading operation is cancelled before finished, during either async disk cache query, or waiting before actual network request. For actual network request error, check `NSURLErrorDomain` error domain and code.
|
||||||
|
|
|
@ -261,6 +261,17 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
||||||
*/
|
*/
|
||||||
- (void)cancelAll;
|
- (void)cancelAll;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specify URL from failed black list.
|
||||||
|
* @param url The failed URL.
|
||||||
|
*/
|
||||||
|
- (void)removeFailedURL:(nonnull NSURL *)url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove all the URL from failed black list.
|
||||||
|
*/
|
||||||
|
- (void)removeAllFailedURLs;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the cache key for a given URL, does not considerate transformer or thumbnail.
|
* Return the cache key for a given URL, does not considerate transformer or thumbnail.
|
||||||
* @note This method does not have context option, only use the url and manager level cacheKeyFilter to generate the cache key.
|
* @note This method does not have context option, only use the url and manager level cacheKeyFilter to generate the cache key.
|
||||||
|
|
|
@ -194,7 +194,9 @@ static id<SDImageLoader> _defaultImageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url.absoluteString.length == 0 || (!(options & SDWebImageRetryFailed) && isFailedUrl)) {
|
if (url.absoluteString.length == 0 || (!(options & SDWebImageRetryFailed) && isFailedUrl)) {
|
||||||
[self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidURL userInfo:@{NSLocalizedDescriptionKey : @"Image url is nil"}] url:url];
|
NSString *description = isFailedUrl ? @"Image url is blacklisted" : @"Image url is nil";
|
||||||
|
NSInteger code = isFailedUrl ? SDWebImageErrorBlackListed : SDWebImageErrorInvalidURL;
|
||||||
|
[self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:SDWebImageErrorDomain code:code userInfo:@{NSLocalizedDescriptionKey : description}] url:url];
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,6 +228,21 @@ static id<SDImageLoader> _defaultImageLoader;
|
||||||
return isRunning;
|
return isRunning;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)removeFailedURL:(NSURL *)url {
|
||||||
|
if (!url) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SD_LOCK(self.failedURLsLock);
|
||||||
|
[self.failedURLs removeObject:url];
|
||||||
|
SD_UNLOCK(self.failedURLsLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)removeAllFailedURLs {
|
||||||
|
SD_LOCK(self.failedURLsLock);
|
||||||
|
[self.failedURLs removeAllObjects];
|
||||||
|
SD_UNLOCK(self.failedURLsLock);
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - Private
|
#pragma mark - Private
|
||||||
|
|
||||||
// Query normal cache process
|
// Query normal cache process
|
||||||
|
|
Loading…
Reference in New Issue