QNUploadOption.m 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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)initWithMime:(NSString *)mimeType
  49. progressHandler:(QNUpProgressHandler)progress
  50. params:(NSDictionary *)params
  51. checkCrc:(BOOL)check
  52. cancellationSignal:(QNUpCancellationSignal)cancel {
  53. return [self initWithMime:mimeType
  54. progressHandler:progress
  55. params:params
  56. metaDataParams:nil
  57. checkCrc:check
  58. cancellationSignal:cancel];
  59. }
  60. - (instancetype)initWithMime:(NSString *)mimeType
  61. progressHandler:(QNUpProgressHandler)progress
  62. params:(NSDictionary *)params
  63. metaDataParams:(NSDictionary *)metaDataParams
  64. checkCrc:(BOOL)check
  65. cancellationSignal:(QNUpCancellationSignal)cancellation{
  66. if (self = [super init]) {
  67. _mimeType = mime(mimeType);
  68. _progressHandler = progress != nil ? progress : ^(NSString *key, float percent) {};
  69. _params = [QNUploadOption filterParam:params];
  70. _metaDataParam = [QNUploadOption filterMetaDataParam:metaDataParams];
  71. _checkCrc = check;
  72. _cancellationSignal = cancellation != nil ? cancellation : ^BOOL() {
  73. return NO;
  74. };
  75. }
  76. return self;
  77. }
  78. + (instancetype)defaultOptions {
  79. return [[QNUploadOption alloc] initWithMime:nil progressHandler:nil params:nil checkCrc:NO cancellationSignal:nil];
  80. }
  81. @end