QNZone.m 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //
  2. // QNZone.m
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2020/4/16.
  6. // Copyright © 2020 Qiniu. All rights reserved.
  7. //
  8. #import "QNZone.h"
  9. #import "QNUpToken.h"
  10. #import "QNZoneInfo.h"
  11. @implementation QNZone
  12. - (NSString *)upHost:(QNZoneInfo *)zoneInfo
  13. isHttps:(BOOL)isHttps
  14. lastUpHost:(NSString *)lastUpHost {
  15. NSString *upHost = nil;
  16. NSString *upDomain = nil;
  17. // frozen domain
  18. if (lastUpHost) {
  19. NSString *upLastDomain = nil;
  20. if (isHttps) {
  21. upLastDomain = [lastUpHost substringFromIndex:8];
  22. } else {
  23. upLastDomain = [lastUpHost substringFromIndex:7];
  24. }
  25. [zoneInfo frozenDomain:upLastDomain];
  26. }
  27. //get backup domain
  28. for (NSString *backupDomain in zoneInfo.upDomainsList) {
  29. NSDate *frozenTill = zoneInfo.upDomainsDic[backupDomain];
  30. NSDate *now = [NSDate date];
  31. if ([frozenTill compare:now] == NSOrderedAscending) {
  32. upDomain = backupDomain;
  33. break;
  34. }
  35. }
  36. if (upDomain) {
  37. [zoneInfo.upDomainsDic setObject:[NSDate dateWithTimeIntervalSince1970:0] forKey:upDomain];
  38. } else {
  39. //reset all the up host frozen time
  40. if (!lastUpHost) {
  41. for (NSString *domain in zoneInfo.upDomainsList) {
  42. [zoneInfo.upDomainsDic setObject:[NSDate dateWithTimeIntervalSince1970:0] forKey:domain];
  43. }
  44. if (zoneInfo.upDomainsList.count > 0) {
  45. upDomain = zoneInfo.upDomainsList[0];
  46. }
  47. }
  48. }
  49. if (upDomain) {
  50. if (isHttps) {
  51. upHost = [NSString stringWithFormat:@"https://%@", upDomain];
  52. } else {
  53. upHost = [NSString stringWithFormat:@"http://%@", upDomain];
  54. }
  55. }
  56. return upHost;
  57. }
  58. - (NSString *)up:(QNUpToken *)token
  59. zoneInfoType:(QNZoneInfoType)zoneInfoType
  60. isHttps:(BOOL)isHttps
  61. frozenDomain:(NSString *)frozenDomain {
  62. return nil;
  63. }
  64. - (QNZonesInfo *)getZonesInfoWithToken:(QNUpToken *)token {
  65. return nil;
  66. }
  67. - (void)preQuery:(QNUpToken *)token
  68. on:(QNPrequeryReturn)ret {
  69. ret(0, nil);
  70. }
  71. @end