Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -(void) updateUser:(NSDictionary*) params completion:(void (^)(NSString* message)) completion {
- NSString * urlStr = [NSString stringWithFormat: @"%@member/update", baseAPI];
- NSString *boundary = [self generateBoundaryString];
- // configure the request
- NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: urlStr]];
- [request setHTTPMethod:@"POST"];
- [request setValue:[NSString stringWithFormat:@"Bearer %@",[[NSUserDefaults standardUserDefaults]
- stringForKey:@"auth-token"]] forHTTPHeaderField:@"Authorization"];
- NSLog(@"TOKEN:- %@", [[NSUserDefaults standardUserDefaults] stringForKey:@"auth-token"]);
- // set content type
- NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
- [request setValue:contentType forHTTPHeaderField: @"Content-Type"];
- // create body
- NSData *httpBody = [self createBodyWithBoundary: boundary parameters:params paths:@[] fieldName:@""];
- NSURLSession *session = [NSURLSession sharedSession];
- NSURLSessionTask *task = [session uploadTaskWithRequest:request fromData:httpBody completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
- if (error) {
- NSLog(@"ERROR: %@", error.localizedDescription);
- completion(@"Error");
- } else {
- completion(@"Success");
- }
- }];
- [task resume];
- }
- - (NSString *)generateBoundaryString {
- return [NSString stringWithFormat:@"Boundary-%@", [[NSUUID UUID] UUIDString]];
- }
- - (NSData *)createBodyWithBoundary:(NSString *)boundary
- parameters:(NSDictionary *)parameters
- paths:(NSArray *)paths
- fieldName:(NSString *)fieldName {
- NSMutableData *httpBody = [NSMutableData data];
- // add params (all params are strings)
- [parameters enumerateKeysAndObjectsUsingBlock:^(NSString *parameterKey, NSString *parameterValue, BOOL *stop) {
- [httpBody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
- [httpBody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", parameterKey] dataUsingEncoding:NSUTF8StringEncoding]];
- [httpBody appendData:[[NSString stringWithFormat:@"%@\r\n", parameterValue] dataUsingEncoding:NSUTF8StringEncoding]];
- }];
- // add image data
- for (NSString *path in paths) {
- NSString *filename = [path lastPathComponent];
- NSData *data = [NSData dataWithContentsOfFile:path];
- NSString *mimetype = [self mimeTypeForPath:path];
- [httpBody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
- [httpBody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", fieldName, filename] dataUsingEncoding:NSUTF8StringEncoding]];
- [httpBody appendData:[[NSString stringWithFormat:@"Content-Type: %@\r\n\r\n", mimetype] dataUsingEncoding:NSUTF8StringEncoding]];
- [httpBody appendData:data];
- [httpBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
- }
- [httpBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
- return httpBody;
- }
- - (NSString *)mimeTypeForPath:(NSString *)path {
- // get a mime type for an extension using MobileCoreServices.framework
- CFStringRef extension = (__bridge CFStringRef)[path pathExtension];
- CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, extension, NULL);
- assert(UTI != NULL);
- NSString *mimetype = CFBridgingRelease(UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType));
- assert(mimetype != NULL);
- CFRelease(UTI);
- return mimetype;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement