QNFixedZone.m 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. //
  2. // QNFixZone.m
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2020/4/16.
  6. // Copyright © 2020 Qiniu. All rights reserved.
  7. //
  8. #import "QNFixedZone.h"
  9. #import "QNZoneInfo.h"
  10. @interface QNFixedZone ()
  11. @property (nonatomic, strong) QNZonesInfo *zonesInfo;
  12. @end
  13. @implementation QNFixedZone
  14. + (instancetype)zone0 {
  15. static QNFixedZone *z0 = nil;
  16. static dispatch_once_t onceToken;
  17. dispatch_once(&onceToken, ^{
  18. z0 = [[QNFixedZone alloc] initWithUpDomainList:@[@"upload.qiniup.com", @"up.qiniup.com"]
  19. oldUpList:@[@"upload.qbox.me", @"up.qbox.me"]
  20. regionId:@"z0"];
  21. });
  22. return z0;
  23. }
  24. + (instancetype)zoneCnEast2 {
  25. static QNFixedZone *zoneCnEast2 = nil;
  26. static dispatch_once_t onceToken;
  27. dispatch_once(&onceToken, ^{
  28. zoneCnEast2 = [[QNFixedZone alloc] initWithUpDomainList:@[@"upload-cn-east-2.qiniup.com", @"up-cn-east-2.qiniup.com"]
  29. oldUpList:nil
  30. regionId:@"cn-east-2"];
  31. });
  32. return zoneCnEast2;
  33. }
  34. + (instancetype)zone1 {
  35. static QNFixedZone *z1 = nil;
  36. static dispatch_once_t onceToken;
  37. dispatch_once(&onceToken, ^{
  38. z1 = [[QNFixedZone alloc] initWithUpDomainList:@[@"upload-z1.qiniup.com", @"up-z1.qiniup.com"]
  39. oldUpList:@[@"upload-z1.qbox.me", @"up-z1.qbox.me"]
  40. regionId:@"z1"];
  41. });
  42. return z1;
  43. }
  44. + (instancetype)zone2 {
  45. static QNFixedZone *z2 = nil;
  46. static dispatch_once_t onceToken;
  47. dispatch_once(&onceToken, ^{
  48. z2 = [[QNFixedZone alloc] initWithUpDomainList:@[@"upload-z2.qiniup.com", @"up-z2.qiniup.com"]
  49. oldUpList:@[@"upload-z2.qbox.me", @"up-z2.qbox.me"]
  50. regionId:@"z2"];
  51. });
  52. return z2;
  53. }
  54. + (instancetype)zoneApNorthEast1 {
  55. static QNFixedZone *zoneNorthEast1 = nil;
  56. static dispatch_once_t onceToken;
  57. dispatch_once(&onceToken, ^{
  58. zoneNorthEast1 = [[QNFixedZone alloc] initWithUpDomainList:@[@"upload-ap-northeast-1.qiniup.com", @"up-ap-northeast-1.qiniup.com"]
  59. oldUpList:nil
  60. regionId:@"ap-northeast-1"];
  61. });
  62. return zoneNorthEast1;
  63. }
  64. + (instancetype)zoneNa0 {
  65. static QNFixedZone *zNa0 = nil;
  66. static dispatch_once_t onceToken;
  67. dispatch_once(&onceToken, ^{
  68. zNa0 = [[QNFixedZone alloc] initWithUpDomainList:@[@"upload-na0.qiniup.com", @"up-na0.qiniup.com"]
  69. oldUpList:@[@"upload-na0.qbox.me", @"up-na0.qbox.me"]
  70. regionId:@"na0"];
  71. });
  72. return zNa0;
  73. }
  74. + (instancetype)zoneAs0 {
  75. static QNFixedZone *zAs0 = nil;
  76. static dispatch_once_t onceToken;
  77. dispatch_once(&onceToken, ^{
  78. zAs0 = [[QNFixedZone alloc] initWithUpDomainList:@[@"upload-as0.qiniup.com", @"up-as0.qiniup.com"]
  79. oldUpList:@[@"upload-as0.qbox.me", @"up-as0.qbox.me"]
  80. regionId:@"as0"];;
  81. });
  82. return zAs0;
  83. }
  84. + (QNFixedZone *)localsZoneInfo{
  85. NSArray *zones = @[[QNFixedZone zone0],
  86. [QNFixedZone zone1],
  87. [QNFixedZone zone2],
  88. [QNFixedZone zoneCnEast2],
  89. [QNFixedZone zoneNa0],
  90. [QNFixedZone zoneApNorthEast1],
  91. [QNFixedZone zoneAs0]];
  92. QNFixedZone *zone = [self combineZones:zones];
  93. if (zone) {
  94. [zone.zonesInfo toTemporary];
  95. }
  96. return zone;
  97. }
  98. + (QNFixedZone *)combineZones:(NSArray<QNFixedZone *> *)zones {
  99. if (zones == nil || zones.count == 0) {
  100. return nil;
  101. }
  102. NSMutableArray <QNZoneInfo *> *zoneInfoArray = [NSMutableArray array];
  103. for (QNFixedZone *zone in zones) {
  104. if (zone.zonesInfo.zonesInfo) {
  105. [zoneInfoArray addObjectsFromArray:zone.zonesInfo.zonesInfo];
  106. }
  107. }
  108. QNFixedZone *fixedZone = [[QNFixedZone alloc] init];
  109. fixedZone.zonesInfo = [[QNZonesInfo alloc] initWithZonesInfo:[zoneInfoArray copy]];
  110. [fixedZone.zonesInfo toTemporary];
  111. return fixedZone;
  112. }
  113. + (instancetype)createWithHost:(NSArray<NSString *> *)upList {
  114. return [[QNFixedZone alloc] initWithUpDomainList:upList oldUpList:nil regionId:nil];
  115. }
  116. - (QNZonesInfo *)createZonesInfo:(NSArray <NSString *> *)upDomains
  117. regionId:(NSString *)regionId {
  118. return [self createZonesInfo:upDomains oldUpDomains:nil regionId:regionId];
  119. }
  120. - (QNZonesInfo *)createZonesInfo:(NSArray <NSString *> *)upDomains
  121. oldUpDomains:(NSArray <NSString *> *)oldUpDomains
  122. regionId:(NSString *)regionId {
  123. if (!upDomains && upDomains.count == 0) {
  124. return nil;
  125. }
  126. QNZoneInfo *zoneInfo = [QNZoneInfo zoneInfoWithMainHosts:upDomains oldHosts:oldUpDomains regionId:regionId];
  127. QNZonesInfo *zonesInfo = [[QNZonesInfo alloc] initWithZonesInfo:@[zoneInfo]];
  128. return zonesInfo;
  129. }
  130. - (instancetype)initWithUpDomainList:(NSArray<NSString *> *)upList {
  131. if (self = [super init]) {
  132. self.zonesInfo = [self createZonesInfo:upList regionId:nil];
  133. }
  134. return self;
  135. }
  136. - (instancetype)initWithUpDomainList:(NSArray<NSString *> *)upList
  137. regionId:(NSString *)regionId {
  138. if (self = [super init]) {
  139. self.zonesInfo = [self createZonesInfo:upList regionId:regionId];
  140. }
  141. return self;
  142. }
  143. - (instancetype)initWithUpDomainList:(NSArray<NSString *> *)upList
  144. oldUpList:(NSArray<NSString *> *)oldUpList
  145. regionId:(NSString *)regionId {
  146. if (self = [super init]) {
  147. self.zonesInfo = [self createZonesInfo:upList oldUpDomains:oldUpList regionId:regionId];
  148. }
  149. return self;
  150. }
  151. - (QNZonesInfo *)getZonesInfoWithToken:(QNUpToken *)token {
  152. return self.zonesInfo;
  153. }
  154. @end