QNUploadOption.m 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // QNUploadOption.m
  3. // QiniuSDK
  4. //
  5. // Created by bailong on 14/10/4.
  6. // Copyright (c) 2014年 Qiniu. All rights reserved.
  7. //
  8. #import "QNUploadOption.h"
  9. #import "QNUploadManager.h"
  10. static NSString *mime(NSString *mimeType) {
  11. if (mimeType == nil || [mimeType isEqualToString:@""]) {
  12. return @"application/octet-stream";
  13. }
  14. return mimeType;
  15. }
  16. @implementation QNUploadOption
  17. + (NSDictionary *)filterParam:(NSDictionary *)params {
  18. NSMutableDictionary *ret = [NSMutableDictionary dictionary];
  19. if (params == nil) {
  20. return ret;
  21. }
  22. [params enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *obj, BOOL *stop) {
  23. if ([key hasPrefix:@"x:"] && ![obj isEqualToString:@""]) {
  24. ret[key] = obj;
  25. } else {
  26. NSLog(@"参数%@设置无效,请检查参数格式", key);
  27. }
  28. }];
  29. return ret;
  30. }
  31. + (NSDictionary *)filterMetaDataParam:(NSDictionary *)params {
  32. NSMutableDictionary *ret = [NSMutableDictionary dictionary];
  33. if (params == nil) {
  34. return ret;
  35. }
  36. [params enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *obj, BOOL *stop) {
  37. if ([key hasPrefix:@"x-qn-meta-"] && ![obj isEqualToString:@""]) {
  38. ret[key] = obj;
  39. } else {
  40. NSLog(@"参数%@设置无效,请检查参数格式", key);
  41. }
  42. }];
  43. return ret;
  44. }
  45. - (instancetype)initWithProgressHandler:(QNUpProgressHandler)progress {
  46. return [self initWithMime:nil progressHandler:progress params:nil checkCrc:NO cancellationSignal:nil];
  47. }
  48. - (instancetype)initWithByteProgressHandler:(QNUpByteProgressHandler)progress {
  49. return [self initWithMime:nil byteProgressHandler:progress params:nil checkCrc:NO cancellationSignal:nil];
  50. }
  51. - (instancetype)initWithMime:(NSString *)mimeType
  52. progressHandler:(QNUpProgressHandler)progress
  53. params:(NSDictionary *)params
  54. checkCrc:(BOOL)check
  55. cancellationSignal:(QNUpCancellationSignal)cancel {
  56. return [self initWithMime:mimeType
  57. progressHandler:progress
  58. params:params
  59. metaDataParams:nil
  60. checkCrc:check
  61. cancellationSignal:cancel];
  62. }
  63. - (instancetype)initWithMime:(NSString *)mimeType
  64. byteProgressHandler:(QNUpByteProgressHandler)progress
  65. params:(NSDictionary *)params
  66. checkCrc:(BOOL)check
  67. cancellationSignal:(QNUpCancellationSignal)cancellation {
  68. return [self initWithMime:mimeType
  69. byteProgressHandler:progress
  70. params:params
  71. metaDataParams:nil
  72. checkCrc:check
  73. cancellationSignal:cancellation];
  74. }
  75. - (instancetype)initWithMime:(NSString *)mimeType
  76. progressHandler:(QNUpProgressHandler)progress
  77. params:(NSDictionary *)params
  78. metaDataParams:(NSDictionary *)metaDataParams
  79. checkCrc:(BOOL)check
  80. cancellationSignal:(QNUpCancellationSignal)cancellation{
  81. if (self = [super init]) {
  82. _mimeType = mime(mimeType);
  83. _progressHandler = progress != nil ? progress : ^(NSString *key, float percent) {};
  84. _params = [QNUploadOption filterParam:params];
  85. _metaDataParam = [QNUploadOption filterMetaDataParam:metaDataParams];
  86. _checkCrc = check;
  87. _cancellationSignal = cancellation != nil ? cancellation : ^BOOL() {
  88. return NO;
  89. };
  90. }
  91. return self;
  92. }
  93. - (instancetype)initWithMime:(NSString *)mimeType
  94. byteProgressHandler:(QNUpByteProgressHandler)progress
  95. params:(NSDictionary *)params
  96. metaDataParams:(NSDictionary *)metaDataParams
  97. checkCrc:(BOOL)check
  98. cancellationSignal:(QNUpCancellationSignal)cancellation {
  99. if (self = [super init]) {
  100. _mimeType = mime(mimeType);
  101. _byteProgressHandler = progress != nil ? progress : ^(NSString *key, long long uploadBytes, long long totalBytes) {};
  102. _params = [QNUploadOption filterParam:params];
  103. _metaDataParam = [QNUploadOption filterMetaDataParam:metaDataParams];
  104. _checkCrc = check;
  105. _cancellationSignal = cancellation != nil ? cancellation : ^BOOL() {
  106. return NO;
  107. };
  108. }
  109. return self;
  110. }
  111. + (instancetype)defaultOptions {
  112. return [[QNUploadOption alloc] initWithMime:nil byteProgressHandler:nil params:nil checkCrc:NO cancellationSignal:nil];
  113. }
  114. @end