QNServerConfigCache.m 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //
  2. // QNServerConfigCache.m
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2021/8/30.
  6. // Copyright © 2021 Qiniu. All rights reserved.
  7. //
  8. #import "QNServerConfigCache.h"
  9. #import "QNUtils.h"
  10. #import "QNFileRecorder.h"
  11. #define kQNServerConfigDiskKey @"config"
  12. #define kQNServerUserConfigDiskKey @"userConfig"
  13. @interface QNServerConfigCache(){
  14. QNServerConfig *_config;
  15. QNServerUserConfig *_userConfig;
  16. }
  17. @property(nonatomic, strong)id<QNRecorderDelegate> recorder;
  18. @end
  19. @implementation QNServerConfigCache
  20. - (instancetype)init {
  21. if (self = [super init]) {
  22. self.recorder = [QNFileRecorder fileRecorderWithFolder:[[QNUtils sdkCacheDirectory] stringByAppendingString:@"/ServerConfig"] error:nil];
  23. }
  24. return self;
  25. }
  26. //MARK: --- config
  27. - (QNServerConfig *)getConfigFromDisk {
  28. NSData *data = nil;
  29. @synchronized (self) {
  30. data = [self.recorder get:kQNServerConfigDiskKey];
  31. }
  32. if (data == nil) {
  33. return nil;
  34. }
  35. NSError *error = nil;
  36. NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
  37. if (error != nil || ![info isKindOfClass:[NSDictionary class]]) {
  38. @synchronized (self) {
  39. [self.recorder del:kQNServerConfigDiskKey];
  40. }
  41. return nil;
  42. }
  43. return [QNServerConfig config:info];
  44. }
  45. - (void)saveConfigToDisk:(QNServerConfig *)config {
  46. if (self.recorder == nil || config.info == nil) {
  47. return;
  48. }
  49. NSData *data = [NSJSONSerialization dataWithJSONObject:config.info options:NSJSONWritingPrettyPrinted error:nil];
  50. if (data) {
  51. @synchronized (self) {
  52. [self.recorder set:kQNServerConfigDiskKey data:data];
  53. }
  54. }
  55. }
  56. //MARK: --- user config
  57. - (QNServerUserConfig *)getUserConfigFromDisk {
  58. NSData *data = nil;
  59. @synchronized (self) {
  60. data = [self.recorder get:kQNServerUserConfigDiskKey];
  61. }
  62. if (data == nil) {
  63. return nil;
  64. }
  65. NSError *error = nil;
  66. NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
  67. if (error != nil || ![info isKindOfClass:[NSDictionary class]]) {
  68. @synchronized (self) {
  69. [self.recorder del:kQNServerUserConfigDiskKey];
  70. }
  71. return nil;
  72. }
  73. return [QNServerUserConfig config:info];
  74. }
  75. - (void)saveUserConfigToDisk:(QNServerUserConfig *)config {
  76. if (self.recorder == nil || config.info == nil) {
  77. return;
  78. }
  79. NSData *data = [NSJSONSerialization dataWithJSONObject:config.info options:NSJSONWritingPrettyPrinted error:nil];
  80. if (data) {
  81. @synchronized (self) {
  82. [self.recorder set:kQNServerUserConfigDiskKey data:data];
  83. }
  84. }
  85. }
  86. - (void)removeConfigCache {
  87. @synchronized (self) {
  88. [self.recorder del:kQNServerConfigDiskKey];
  89. [self.recorder del:kQNServerUserConfigDiskKey];
  90. }
  91. }
  92. @end