QNUploadData.m 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //
  2. // QNUploadData.m
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2021/5/10.
  6. // Copyright © 2021 Qiniu. All rights reserved.
  7. //
  8. #import "QNUploadData.h"
  9. @interface QNUploadData()
  10. @property(nonatomic, assign)long long offset;
  11. @property(nonatomic, assign)long long size;
  12. @property(nonatomic, assign)NSInteger index;
  13. @end
  14. @implementation QNUploadData
  15. + (instancetype)dataFromDictionary:(NSDictionary *)dictionary{
  16. if (![dictionary isKindOfClass:[NSDictionary class]]) {
  17. return nil;
  18. }
  19. QNUploadData *data = [[QNUploadData alloc] init];
  20. data.offset = [dictionary[@"offset"] longLongValue];
  21. data.size = [dictionary[@"size"] longLongValue];
  22. data.index = [dictionary[@"index"] integerValue];
  23. data.etag = dictionary[@"etag"];
  24. data.md5 = dictionary[@"md5"];
  25. data.state = [dictionary[@"state"] intValue];
  26. return data;
  27. }
  28. - (instancetype)initWithOffset:(long long)offset
  29. dataSize:(long long)dataSize
  30. index:(NSInteger)index {
  31. if (self = [super init]) {
  32. _offset = offset;
  33. _size = dataSize;
  34. _index = index;
  35. _etag = @"";
  36. _md5 = @"";
  37. _state = QNUploadStateNeedToCheck;
  38. }
  39. return self;
  40. }
  41. - (BOOL)needToUpload {
  42. BOOL needToUpload = false;
  43. switch (self.state) {
  44. case QNUploadStateNeedToCheck:
  45. case QNUploadStateWaitToUpload:
  46. needToUpload = true;
  47. break;
  48. default:
  49. break;
  50. }
  51. return needToUpload;
  52. }
  53. - (BOOL)isUploaded {
  54. return self.state == QNUploadStateComplete;
  55. }
  56. - (void)setState:(QNUploadState)state {
  57. switch (state) {
  58. case QNUploadStateNeedToCheck:
  59. case QNUploadStateWaitToUpload:
  60. case QNUploadStateUploading:
  61. self.uploadSize = 0;
  62. self.etag = @"";
  63. break;
  64. default:
  65. self.data = nil;
  66. break;
  67. }
  68. _state = state;
  69. }
  70. - (long long)uploadSize {
  71. if (self.state == QNUploadStateComplete) {
  72. return _size;
  73. } else {
  74. return _uploadSize;
  75. }
  76. }
  77. - (void)clearUploadState{
  78. self.state = QNUploadStateNeedToCheck;
  79. self.etag = nil;
  80. self.md5 = nil;
  81. }
  82. - (void)checkStateAndUpdate {
  83. if ((self.state == QNUploadStateWaitToUpload || self.state == QNUploadStateUploading) && self.data == nil) {
  84. self.state = QNUploadStateNeedToCheck;
  85. }
  86. }
  87. - (NSDictionary *)toDictionary{
  88. NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
  89. dictionary[@"offset"] = @(self.offset);
  90. dictionary[@"size"] = @(self.size);
  91. dictionary[@"index"] = @(self.index);
  92. dictionary[@"etag"] = self.etag ?: @"";
  93. dictionary[@"md5"] = self.md5 ?: @"";
  94. dictionary[@"state"] = @(self.state);
  95. return [dictionary copy];
  96. }
  97. @end