#import <Foundation/Foundation.h>
#import "AFNetworking.h"
NS_ASSUME_NONNULL_BEGIN
@interface APIHelper : NSObject
+ (nullable NSURLSessionDataTask *)GET:(NSString *)APIName
parameters:(nullable id)parameters
progress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgressBlock
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock;
+ (nullable NSURLSessionDataTask *)POST:(NSString *)APIName
parameters:(nullable id)parameters
constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))constructBodyBlock
progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgressBlock
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock;
@end
NS_ASSUME_NONNULL_END
------------- APIHelper.m --------------
#import "APIHelper.h"
@implementation APIHelper
+ (AFHTTPSessionManager *)sessionManager{
// Get Manager
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// Add Acceptable Content type
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json",nil];
[manager.requestSerializer setValue:@"d4024c848c16e1cdbfc06b3217db72cb"
forHTTPHeaderField:@"X-Auth"
];
return manager;
}
+ (NSString *)urlForAPI:(NSString *)APIName{
NSString *apiUrl = [NSString stringWithFormat:@"%@%@",kApiServer,APIName];
return apiUrl;
}
/*+ (NSDictionary *)formFieldParameters:(NSDictionary *)parameters{
NSMutableDictionary *apiParams = [NSMutableDictionary new];
// [apiParams setObject:@1 forKey:@"customer_device"];
//
// NSString *deviceToken = KDEVICETOKEN;
// if (deviceToken.length > 0) {
// [apiParams setObject:deviceToken forKey:@"customer_regid"];
// }
// deviceToken = nil;
for (NSString *paramName in parameters) {
id paramValue = [parameters objectForKey:paramName];
if ([paramValue isKindOfClass:[NSString class]]) {
[apiParams setObject:paramValue forKey:paramName];
}
}
NSLog(@"apiParams: is %@",apiParams);
return [NSDictionary dictionaryWithDictionary:apiParams];
}
+ (id<AFMultipartFormData>)formData:(id<AFMultipartFormData>)formData appendMultipartData:(NSDictionary *)parameters{
// Iterate all parameters
for (NSString *paramName in parameters) {
id paramValue = [parameters objectForKey:paramName];
if ([paramValue isKindOfClass:[UIImage class]]) {
NSData *imageData = UIImageJPEGRepresentation((UIImage *)paramValue, 1.0);
[formData appendPartWithFileData:imageData
name:paramName
fileName:[NSString stringWithFormat:@"%@.jpeg",paramName]
mimeType:@"image/jpeg"
];
}else{
}
}
NSLog(@"formData is %@",formData);
return formData;
}*/
+ (nullable NSURLSessionDataTask *)GET:(NSString *)APIName
parameters:(nullable id)parameters
progress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgressBlock
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock{
// Get Manager
AFHTTPSessionManager *manager = [self sessionManager];
NSURLSessionDataTask *task = [manager GET:[self urlForAPI:APIName]
parameters:parameters
progress:^(NSProgress * _Nonnull downloadProgress) {
downloadProgressBlock(downloadProgress);
}success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
successBlock(task,responseObject);
}failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
failureBlock(task,error);
}
];
return task;
}
+ (nullable NSURLSessionDataTask *)POST:(NSString *)APIName
parameters:(nullable id)parameters
constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))constructBodyBlock
progress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgressBlock
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))successBlock
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failureBlock{
// Get Manager
AFHTTPSessionManager *manager = [self sessionManager];
NSURLSessionDataTask *task = [manager POST:[self urlForAPI:APIName]
parameters:parameters
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
constructBodyBlock(formData);
} progress:^(NSProgress * _Nonnull uploadProgress) {
uploadProgressBlock(uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
successBlock(task,responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
failureBlock(task,error);
}
];
return task;
}
@end
No comments:
Post a Comment