123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- //
- // QNServerConfigCache.m
- // QiniuSDK
- //
- // Created by yangsen on 2021/8/30.
- // Copyright © 2021 Qiniu. All rights reserved.
- //
- #import "QNServerConfigCache.h"
- #import "QNUtils.h"
- #import "QNFileRecorder.h"
- #define kQNServerConfigDiskKey @"config"
- #define kQNServerUserConfigDiskKey @"userConfig"
- @interface QNServerConfigCache(){
- QNServerConfig *_config;
- QNServerUserConfig *_userConfig;
- }
- @property(nonatomic, strong)id<QNRecorderDelegate> recorder;
- @end
- @implementation QNServerConfigCache
- - (instancetype)init {
- if (self = [super init]) {
- self.recorder = [QNFileRecorder fileRecorderWithFolder:[[QNUtils sdkCacheDirectory] stringByAppendingString:@"/ServerConfig"] error:nil];
- }
- return self;
- }
- //MARK: --- config
- - (QNServerConfig *)getConfigFromDisk {
- NSData *data = nil;
- @synchronized (self) {
- data = [self.recorder get:kQNServerConfigDiskKey];
- }
- if (data == nil) {
- return nil;
- }
- NSError *error = nil;
- NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
- if (error != nil || ![info isKindOfClass:[NSDictionary class]]) {
- @synchronized (self) {
- [self.recorder del:kQNServerConfigDiskKey];
- }
- return nil;
- }
- return [QNServerConfig config:info];
- }
- - (void)saveConfigToDisk:(QNServerConfig *)config {
- if (self.recorder == nil || config.info == nil) {
- return;
- }
- NSData *data = [NSJSONSerialization dataWithJSONObject:config.info options:NSJSONWritingPrettyPrinted error:nil];
- if (data) {
- @synchronized (self) {
- [self.recorder set:kQNServerConfigDiskKey data:data];
- }
- }
- }
- //MARK: --- user config
- - (QNServerUserConfig *)getUserConfigFromDisk {
- NSData *data = nil;
- @synchronized (self) {
- data = [self.recorder get:kQNServerUserConfigDiskKey];
- }
- if (data == nil) {
- return nil;
- }
- NSError *error = nil;
- NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
-
- if (error != nil || ![info isKindOfClass:[NSDictionary class]]) {
- @synchronized (self) {
- [self.recorder del:kQNServerUserConfigDiskKey];
- }
- return nil;
- }
- return [QNServerUserConfig config:info];
- }
- - (void)saveUserConfigToDisk:(QNServerUserConfig *)config {
- if (self.recorder == nil || config.info == nil) {
- return;
- }
- NSData *data = [NSJSONSerialization dataWithJSONObject:config.info options:NSJSONWritingPrettyPrinted error:nil];
- if (data) {
- @synchronized (self) {
- [self.recorder set:kQNServerUserConfigDiskKey data:data];
- }
- }
- }
- - (void)removeConfigCache {
- @synchronized (self) {
- [self.recorder del:kQNServerConfigDiskKey];
- [self.recorder del:kQNServerUserConfigDiskKey];
- }
- }
- @end
|