Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // ITAPIOperationFactory.m
- //
- //
- // Created by radu on 11/16/15.
- //
- //
- #import "ITAPIOperationFactory.h"
- #import "Constants.h"
- #import "ObjectFactory.h"
- #import "AFNetworking.h"
- #import "ITKeychainWrapper.h"
- #import "CommonRetCodeResponse.h"
- #import "ConfigUtils.h"
- #import "AppDelegate.h"
- @implementation ITAPIOperationFactory
- #pragma mark -
- #pragma mark Device Operations
- + (ITAPIOperation*)apiAddDeviceOperationWithName:(NSString *)name
- typeName:(NSString *)typeName
- password:(NSString *)password
- completion:(void (^)(AddDeviceResponse *response, ITAPIOperation *operation))completion;
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:name forKey:@"deviceName"];
- [userInfo safeSetObject:typeName forKey:@"deviceType"];
- [userInfo safeSetObject:password forKey:@"password"];
- ITLog(@"");
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeAddDevice userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<DeviceManagerProtocol> deviceManager = [[ObjectFactory sharedInstance] getDeviceManagerInstance];
- [deviceManager addDevice:name password:password deviceTypeName:typeName success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiRemoveDevice:(NSNumber *)deviceNumber
- completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:deviceNumber forKey:deviceNumber];
- ITLog(@"");
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeRemoveDevice userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<DeviceManagerProtocol> deviceManager = [[ObjectFactory sharedInstance] getDeviceManagerInstance];
- [deviceManager removeDevice:deviceNumber success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiUpdateDeviceOperationWithId:(NSNumber *)deviceId
- params:(NSDictionary *)params
- completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- if (((AppDelegate *)[UIApplication sharedApplication].delegate).isInDemoMode) {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:deviceId forKey:@"deviceId"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeUpdateDevice userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<DeviceManagerProtocol> deviceManager = [[ObjectFactory sharedInstance] getDeviceManagerInstance];
- [deviceManager updateDevice:deviceId attributeValues:params success:^(CommonRetCodeResponse *response) {
- ITLog(@"response: %@", response);
- success(response);
- } failure:^(SDKError *error) {
- SDKError *err = [SDKError new];
- if ( error.code == -1011 ) {
- err.code = 106;
- err.message = @"Invalid security token";
- } else {
- err.code = (int)error.code;
- err.message = error.description;
- }
- failure(err);
- }];
- } completion:completion];
- } else {
- // Convert params to format {name1: key, value1: value, name2 : key, value2: value... }
- NSMutableDictionary *parsedParams = [NSMutableDictionary new];
- __block NSInteger idx = 1;
- [params enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
- parsedParams[[NSString stringWithFormat:@"name%ld", (long)idx]] = [NSString stringWithFormat:@"%@", key];
- parsedParams[[NSString stringWithFormat:@"value%ld", (long)idx]] = [NSString stringWithFormat:@"%@", obj];
- idx ++;
- }];
- // Create request params
- NSString *token = [ITKeychainWrapper searchKeychainCopyMatchingIdentifier:kKeyChainToken];
- NSMutableDictionary *requestParams = [NSMutableDictionary dictionaryWithDictionary:@{@"devId" : deviceId, @"secToken" : token}];
- [requestParams addEntriesFromDictionary:parsedParams];
- // Create request info
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:deviceId forKey:@"deviceId"];
- [userInfo safeSetObject:params forKey:@"attributes"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeUpdateDevice userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- static AFHTTPSessionManager *s_manager = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- s_manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:@"https://salus-api.arrayent.com:8081/zdk/services/zamapi/"]];
- s_manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
- });
- [s_manager PUT:@"setMultiDeviceAttributes2" parameters:requestParams success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
- ITLog(@"response: %@", responseObject);
- CommonRetCodeResponse *response = [[CommonRetCodeResponse alloc] initWithReturnCode:@0];
- success(response);
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- SDKError *err = [SDKError new];
- if ( error.code == -1011 ) {
- err.code = 106;
- err.message = @"Invalid security token";
- } else {
- err.code = (int)error.code;
- err.message = error.localizedDescription;
- }
- failure(err);
- }];
- } completion:completion];
- }
- }
- + (ITAPIOperation*)apiRestartDeviceOperationWithId:(NSNumber *)deviceId
- completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:deviceId forKey:@"deviceId"];
- ITLog(@"");
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeRestartDevice userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<DeviceManagerProtocol> deviceManager = [[ObjectFactory sharedInstance] getDeviceManagerInstance];
- NSDictionary *restartParams = @{ThermostatRestart : @"1" };
- [deviceManager updateDevice:deviceId attributeValues:restartParams success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiGetDeviceAttributeWithId:(int)deviceId
- attribute:(NSString *)attribute
- completion:(void (^)(GetDeviceAttributeResposne *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:@(deviceId) forKey:@"deviceId"];
- [userInfo safeSetObject:attribute forKey:@"attribute"];
- ITLog(@"");
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeGetDeviceAttribute userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<DeviceManagerProtocol> deviceManager = [[ObjectFactory sharedInstance] getDeviceManagerInstance];
- [deviceManager getAttributeOfDevice:deviceId attributeName:attribute success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiGetDevicesDetailsOperationWithCompletion:(void (^)(DeviceDetailsList *response, ITAPIOperation *operation))completion
- {
- ITLog(@"");
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeGetDevicesDetails apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<DeviceManagerProtocol> deviceManager = [[ObjectFactory sharedInstance] getDeviceManagerInstance];
- [deviceManager getDevicesDetails:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiGetDeviceDetailsById:(NSNumber *)deviceId typeName:(NSString *)typeName completion:(ITGetDeviceDetailsCompletionBlock)completion
- {
- ITLog(@"");
- NSDictionary *userInfo = @{@"deviceId" : deviceId, @"typeName" : typeName};
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeGetDeviceDetailsById userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<DeviceManagerProtocol> deviceManager = [[ObjectFactory sharedInstance] getDeviceManagerInstance];
- [deviceManager getDeviceById:[deviceId intValue] typeName:typeName success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiGetDeviceTypesWithCompletion:(void (^)(DeviceTypes *response, ITAPIOperation *operation))completion
- {
- ITLog(@"");
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeGetDeviceTypes apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<DeviceManagerProtocol> deviceManager = [[ObjectFactory sharedInstance] getDeviceManagerInstance];
- [deviceManager getDeviceTypeList:success failure:failure];
- } completion:completion];
- }
- #pragma mark -
- #pragma mark User operations
- + (ITAPIOperation*)apiLoginUserOperationWithUsername:(NSString *)username
- password:(NSString *)password
- completion:(void (^)(UserLoginResponse *response, ITAPIOperation *operations))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:username forKey:@"username"];
- [userInfo safeSetObject:password forKey:@"password"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeUserLogin userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerV2Protocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerV2Instance];
- if ( !password || !username ) {
- failure(nil);
- return;
- }
- NSString *encodedPassword = MD5(password);
- [accountManager userLogin:username password:encodedPassword success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiLogoutOperationWithCompletion:(void (^)(LogoutResponse *response, ITAPIOperation *operation))completion
- {
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeUserLogout apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- [accountManager logOut:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiRegisterUserOperationWithUsername:(NSString *)username
- password:(NSString *)password
- email:(NSString *)email
- fullName:(NSString *)fullName
- appId:(int)appId
- language:(NSString *)language
- completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:username forKey:@"username"];
- [userInfo safeSetObject:password forKey:@"password"];
- [userInfo safeSetObject:email forKey:@"email"];
- [userInfo safeSetObject:fullName forKey:@"fullName"];
- [userInfo safeSetObject:@(appId) forKey:@"appId"];
- [userInfo safeSetObject:language forKey:@"language"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeCreateUser userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- // Prepare params
- NSString *encodedPassword = MD5(password);
- NSString *lowercaseUsername = [username lowercaseString];
- NSString *lowercaseEmail = [email lowercaseString];
- NSString *lowercaseFullName = [fullName lowercaseString];
- [[ConfigUtils sharedInstance] setCloudUrl:myCloudURL];
- [[ConfigUtils sharedInstance] setApplicationName:myAppName];
- // Execute request
- [accountManager registerUser:lowercaseUsername
- andPassword:encodedPassword
- withEmail:lowercaseEmail
- fullName:lowercaseFullName
- forApplicationId:appId
- language:language
- success:success
- failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiCreateUserOperationWithUsername:(NSString *)username
- password:(NSString *)password
- completion:(ITGenericApiOperationCompletionBlock)completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:username forKey:@"username"];
- [userInfo safeSetObject:password forKey:@"password"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeCreateUser userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- // Prepare params
- NSString *encodedPassword = MD5(password);
- NSString *lowercaseUsername = [username lowercaseString];
- [[ConfigUtils sharedInstance] setCloudUrl:myCloudURL];
- [[ConfigUtils sharedInstance] setApplicationName:myAppName];
- // Execute request
- [accountManager createAccountWithName:lowercaseUsername andPassword:encodedPassword success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiGetAccountOperationWithId:(int)userId completion:(void (^)(GetAccountResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:@(userId) forKey:@"userId"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeGetUserById userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- [accountManager getAccountById:userId success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiDeleteAccountOperationById:(int)userId
- completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:@(userId) forKey:@"userId"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeDeleteUserById userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- [accountManager deleteAccountById:userId success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiRequestPasswordRecoveryCodeOperationWithEmail:(NSString *)email
- completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:email forKey:@"email"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeRequestPasswordRecoveryCode userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- [accountManager requestPasswordRecoveryCode:email success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiUpdatePasswordOperationWithPassword:(NSString *)newPassword
- forUserName:(NSString *)username
- recoveryCode:(NSString *)recoveryCode
- completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:username forKey:@"username"];
- [userInfo safeSetObject:newPassword forKey:@"newPassword"];
- [userInfo safeSetObject:recoveryCode forKey:@"recoveryCode"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeUpdateUserPassword userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- NSString *encryptedPassword = MD5(newPassword);
- [accountManager updatePassword:encryptedPassword forUserName:username andRecoveryCode:recoveryCode success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiActivateUserOperationWithCode:(NSString *)activationCode completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:activationCode forKey:@"activationCode"];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeActivateUser userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- [accountManager activateUser:activationCode success:success failure:failure];
- } completion:completion];
- }
- + (ITAPIOperation*)apiUpdateAccountOperationWithAttribute:(NSString *)attributeName
- value:(NSString *)attributeValue
- completion:(void (^)(CommonRetCodeResponse *response, ITAPIOperation *operation))completion
- {
- NSMutableDictionary *userInfo = [NSMutableDictionary new];
- [userInfo safeSetObject:attributeName forKey:kAttributeName];
- [userInfo safeSetObject:attributeValue forKey:kAttributeValue];
- return [[ITAPIOperation alloc] initApiOperationWithType:ITAPIOperationTypeUpdateAccountAttribute userInfo:userInfo apiBlock:^(APISuccessBlock success, APIFailureBlock failure) {
- id<AccountManagerProtocol> accountManager = [[ObjectFactory sharedInstance] getAccountManagerInstance];
- [accountManager updateAccountWithAttributeName:attributeName andAttributeValue:attributeValue success:success failure:failure];
- } completion:completion];
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement