From dd815d1c3fd6aaf9c9dab57068ec4618a401d5f2 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Thu, 12 Nov 2015 11:01:18 +0100 Subject: [PATCH] XMLRPCHelper: fix compilation --- Classes/Utils/XMLRPCHelper.h | 9 ++++++- Classes/Utils/XMLRPCHelper.m | 52 +++++++++++++++++++++++++++++++++--- 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/Classes/Utils/XMLRPCHelper.h b/Classes/Utils/XMLRPCHelper.h index 85edf3ddc..b0dc0a269 100644 --- a/Classes/Utils/XMLRPCHelper.h +++ b/Classes/Utils/XMLRPCHelper.h @@ -34,6 +34,13 @@ - (void)sendXMLRequestMethod:(NSString *)method withParams:(NSArray *)params onSuccess:(BOOL (^)(XMLRPCResponse *response))successBlock - onError:(BOOL (^)(XMLRPCRequest *request))errorBlock; + onError:(BOOL (^)(XMLRPCRequest *response))errorBlock; + +// CUSTOM API + ++ (void)GetProvisioningURL:(NSString *)username + password:(NSString *)password + domain:(NSString *)domain + OnSuccess:(void (^)(NSString *url))onSucess; @end diff --git a/Classes/Utils/XMLRPCHelper.m b/Classes/Utils/XMLRPCHelper.m index 8b544c086..6e4b590f2 100644 --- a/Classes/Utils/XMLRPCHelper.m +++ b/Classes/Utils/XMLRPCHelper.m @@ -14,15 +14,29 @@ #import "Utils.h" /* This subclass allows use to store the block to execute on success */ -@interface UrmetXMLRPCRequest : XMLRPCRequest +@interface BlockXMLRPCRequest : XMLRPCRequest @property(copy, nonatomic) BOOL (^successBlock)(XMLRPCResponse *response); @property(copy, nonatomic) BOOL (^xmlErrorBlock)(XMLRPCRequest *request); @end +@implementation BlockXMLRPCRequest +@end + @implementation XMLRPCHelper #pragma mark - API +static XMLRPCHelper *xmlManager = nil; + ++ (XMLRPCHelper *)xml { + @synchronized(self) { + if (xmlManager == nil) { + xmlManager = [[XMLRPCHelper alloc] init]; + } + } + return xmlManager; +} + - (void)sendXMLRequestMethod:(NSString *)method withParams:(NSArray *)params { [self sendXMLRequestMethod:method withParams:params onSuccess:nil onError:nil]; } @@ -40,7 +54,7 @@ LOGI(@"XMLRPC %@ - %@", method, params); NSURL *URL = [NSURL URLWithString:[LinphoneManager.instance lpConfigStringForKey:@"xmlrpc_url" forSection:@"assistant"]]; - UrmetXMLRPCRequest *request = [[UrmetXMLRPCRequest alloc] initWithURL:URL]; + BlockXMLRPCRequest *request = [[BlockXMLRPCRequest alloc] initWithURL:URL]; [request setMethod:method withParameters:params]; if (successBlock) { request.successBlock = successBlock; @@ -57,7 +71,7 @@ - (void)request:(XMLRPCRequest *)request didReceiveResponse:(XMLRPCResponse *)response { - UrmetXMLRPCRequest *req = (UrmetXMLRPCRequest *)request; + BlockXMLRPCRequest *req = (BlockXMLRPCRequest *)request; NSString *error = nil; BOOL handleHere = YES; @@ -86,7 +100,7 @@ } - (void)request:(XMLRPCRequest *)request didFailWithError:(NSError *)error { - UrmetXMLRPCRequest *req = (UrmetXMLRPCRequest *)request; + BlockXMLRPCRequest *req = (BlockXMLRPCRequest *)request; BOOL handleHere = YES; if (req.xmlErrorBlock) { handleHere = req.xmlErrorBlock(request); @@ -118,4 +132,34 @@ [av show]; } ++ (void)GetProvisioningURL:(NSString *)username + password:(NSString *)password + domain:(NSString *)domain + OnSuccess:(void (^)(NSString *response))onSuccess { + if (!username || !password || !domain) { + onSuccess(nil); + return; + } + + [self.class.xml sendXMLRequestMethod:@"get_remote_provisioning_filename" + withParams:@[ username, password, domain ] + onSuccess:^BOOL(XMLRPCResponse *response) { + if (!response.isFault && response.object) { + NSString *url = + [NSString stringWithFormat:@"%@/%@.xml", + [LinphoneManager.instance lpConfigStringForKey:@"remote_prosivioning_root" + forSection:@"assistant"], + response.object]; + onSuccess(url); + } else { + onSuccess(nil); + } + return FALSE; + + } + onError:^BOOL(XMLRPCRequest *request) { + onSuccess(nil); + return FALSE; + }]; +} @end