forked from mrnuku/cam
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCoreAssetManager.h
More file actions
105 lines (78 loc) · 3.85 KB
/
CoreAssetManager.h
File metadata and controls
105 lines (78 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//
// CoreAssetManager.h
// CoreAssetManager
//
// Created by Bálint Róbert on 04/05/15.
// Copyright (c) 2015 Incepteam All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <NUUtil/OKOMutableWeakArray.h>
#import <NUUtil/NUManager.h>
#import <NUUtil/UtilMacros.h>
#define kCoreAssetManagerFetchWithBlockPriorLevel 9999
#define kCoreAssetManagerFetchWithBlockRetryCount 3
#define kCoreAssetManagerDefaultRetryCount 1
#define USE_CACHE 2 // 0 - dont use cache, 1 - cache evrything, 2 - cache controlled by asset item (shouldCache)
NS_ASSUME_NONNULL_BEGIN
typedef enum : NSInteger {
CAMNotReachable = 0,
CAMReachableViaWiFi,
CAMReachableViaWWAN
} CoreAssetManagerNetworkStatus;
// version in format major.minor.patch
typedef enum : NSInteger {
CAMVersionMajor = 0,
CAMVersionMinor = 4,
CAMVersionPatch = 0
} CoreAssetManagerVersion;
@class CoreAssetItemNormal;
typedef void (^CoreAssetManagerCompletionBlock)(id assetData);
typedef void (^CoreAssetManagerFailureBlock)(NSError *reason);
@protocol CoreAssetManagerDelegate <NSObject>
@optional
- (void)cachedImageDictChanged:(NSDictionary *)cacheDict;
@end
@interface CoreAssetManager : NUManager {
@private
NSMutableArray *_classList;
}
@property (nonatomic, copy, readonly) NSDictionary *threadDescriptors;
@property (nonatomic, readonly) NSArray *classList;
@property (nonatomic, assign) BOOL terminateDownloads;
@property (nonatomic, strong) OKOMutableWeakArray *delegates;
#ifdef USE_CACHE
@property (nonatomic, strong) NSCache *dataCache;
@property (nonatomic, strong) NSMutableDictionary<NSString *, NSDate *> *dataCacheAges;
#endif
@property (nonatomic, strong) NSCondition *loginCondition;
@property (nonatomic, strong) NSNumber *loginCount;
@property (nonatomic, strong) NSNumber *loginSuccessful;
@property (atomic) CoreAssetManagerNetworkStatus networkStatus;
+ (NSString *)userAgent;
- (void)registerThreadForClass:(Class)clss;
/// killing all download worker threads
- (void)stopAllDownloads;
/// remving all cached file
- (void)removeAllCaches;
- (void)resumeDownloadAllClass;
- (void)performRelogin;
- (_Nullable id)fetchAssetDataClass:(Class)clss forAssetName:(id)assetName withCompletionHandler:(CoreAssetManagerCompletionBlock)completionHandler;
- (_Nullable id)fetchAssetDataClass:(Class)clss forAssetName:(id)assetName withCompletionHandler:(CoreAssetManagerCompletionBlock)completionHandler withFailureHandler:(CoreAssetManagerFailureBlock)failureHandler;
/// for priorizing user stuff
- (void)prioratizeAssetWithName:(NSString *)assetName forClass:(Class)clss priorLevel:(NSUInteger)priorLevel retryCount:(NSUInteger)retryCount startDownload:(BOOL)startDownload;
// example: NSDictionary *stuff = [[CoreAssetManager sharedInstance] getCacheDictForDataClass:[CoreAssetItemPDF class]];
- (NSDictionary *)getCacheDictForDataClass:(Class)clss;
- (void)addWeakDelegate:(NSObject<CoreAssetManagerDelegate> *)delegate;
- (void)removeWeakDelegate:(NSObject<CoreAssetManagerDelegate> *)delegate;
+ (void)disableBackupForFilePath:(NSString *)path;
+ (_Nullable id)fetchImageWithName:(NSString *)assetName withCompletionHandler:(void (^)(UIImage *image))completionHandler;
+ (NSArray<NSString *> *)listFilesInCacheDirectoryWithExtension:(NSString *)extension withSubpath:(NSString *)subpath;
// methods to override
- (void)finishedDownloadingAsset:(NSDictionary *)assetDict;
- (void)failedDownloadingAsset:(NSDictionary *)assetDict;
- (BOOL)determineLoginFailure:(id)postprocessedData assetItem:(CoreAssetItemNormal *)assetItem; // warning: this method is being called from one of the worker threads
- (void)reauthenticateWithCompletionHandler:(CoreAssetManagerCompletionBlock)completionHandler withFailureHandler:(CoreAssetManagerFailureBlock)failureHandler;
- (NSString *)reachabilityHost;
@end
NS_ASSUME_NONNULL_END