Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -(void) updateUser:(NSDictionary*) params completion:(void (^)(NSString* message)) completion {
  2.  
  3.   NSString * urlStr = [NSString stringWithFormat: @"%@member/update", baseAPI];
  4.  
  5.  
  6.   NSString *boundary = [self generateBoundaryString];
  7.  
  8.   // configure the request
  9.  
  10.   NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: urlStr]];
  11.   [request setHTTPMethod:@"POST"];
  12.  
  13.   [request setValue:[NSString stringWithFormat:@"Bearer %@",[[NSUserDefaults standardUserDefaults]
  14.                                                              stringForKey:@"auth-token"]] forHTTPHeaderField:@"Authorization"];
  15.   NSLog(@"TOKEN:- %@", [[NSUserDefaults standardUserDefaults] stringForKey:@"auth-token"]);
  16.   // set content type
  17.  
  18.   NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
  19.   [request setValue:contentType forHTTPHeaderField: @"Content-Type"];
  20.  
  21.   // create body
  22.  
  23.   NSData *httpBody = [self createBodyWithBoundary: boundary parameters:params paths:@[] fieldName:@""];
  24.  
  25.   NSURLSession *session = [NSURLSession sharedSession];
  26.  
  27.   NSURLSessionTask *task = [session uploadTaskWithRequest:request fromData:httpBody completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
  28.    
  29.     if (error) {
  30.       NSLog(@"ERROR: %@", error.localizedDescription);
  31.       completion(@"Error");
  32.     } else {
  33.       completion(@"Success");
  34.     }
  35.    
  36.   }];
  37.   [task resume];
  38.  
  39. }
  40.  
  41. - (NSString *)generateBoundaryString {
  42.   return [NSString stringWithFormat:@"Boundary-%@", [[NSUUID UUID] UUIDString]];
  43. }
  44.  
  45. - (NSData *)createBodyWithBoundary:(NSString *)boundary
  46.                         parameters:(NSDictionary *)parameters
  47.                              paths:(NSArray *)paths
  48.                          fieldName:(NSString *)fieldName {
  49.   NSMutableData *httpBody = [NSMutableData data];
  50.  
  51.   // add params (all params are strings)
  52.  
  53.   [parameters enumerateKeysAndObjectsUsingBlock:^(NSString *parameterKey, NSString *parameterValue, BOOL *stop) {
  54.     [httpBody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
  55.     [httpBody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", parameterKey] dataUsingEncoding:NSUTF8StringEncoding]];
  56.     [httpBody appendData:[[NSString stringWithFormat:@"%@\r\n", parameterValue] dataUsingEncoding:NSUTF8StringEncoding]];
  57.   }];
  58.  
  59.   // add image data
  60.  
  61.   for (NSString *path in paths) {
  62.     NSString *filename  = [path lastPathComponent];
  63.     NSData   *data      = [NSData dataWithContentsOfFile:path];
  64.     NSString *mimetype  = [self mimeTypeForPath:path];
  65.    
  66.     [httpBody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
  67.     [httpBody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", fieldName, filename] dataUsingEncoding:NSUTF8StringEncoding]];
  68.     [httpBody appendData:[[NSString stringWithFormat:@"Content-Type: %@\r\n\r\n", mimetype] dataUsingEncoding:NSUTF8StringEncoding]];
  69.     [httpBody appendData:data];
  70.     [httpBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
  71.   }
  72.  
  73.   [httpBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
  74.  
  75.   return httpBody;
  76. }
  77.  
  78. - (NSString *)mimeTypeForPath:(NSString *)path {
  79.   // get a mime type for an extension using MobileCoreServices.framework
  80.  
  81.   CFStringRef extension = (__bridge CFStringRef)[path pathExtension];
  82.   CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, extension, NULL);
  83.   assert(UTI != NULL);
  84.  
  85.   NSString *mimetype = CFBridgingRelease(UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType));
  86.   assert(mimetype != NULL);
  87.  
  88.   CFRelease(UTI);
  89.  
  90.   return mimetype;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement