@@ -25,11 +25,13 @@ @interface KIONetwork ()
2525 @param response The response from the server.
2626 @param responseData The data returned from the server.
2727 @param query The query that was passed to the Keen API.
28+ @param the error returned with the response.
2829 */
2930- (void )handleQueryAPIResponse : (NSURLResponse *)response
3031 andData : (NSData *)responseData
3132 andQuery : (KIOQuery *)query
32- andProjectID : (NSString *)projectID ;
33+ andProjectID : (NSString *)projectID
34+ andError : (NSError *)error ;
3335
3436- (NSString *)getProjectURL : (NSString *)projectID ;
3537
@@ -39,7 +41,7 @@ - (NSString *)getProjectURL:(NSString *)projectID;
3941
4042// Internal read/write versions of proxy host and port
4143@property (nonatomic , readwrite ) NSString *proxyHost;
42- @property (nonatomic , readwrite ) NSString *proxyPort;
44+ @property (nonatomic , readwrite ) NSNumber *proxyPort;
4345
4446@end
4547
@@ -77,7 +79,7 @@ - (instancetype)initWithURLSessionFactory:(id<KIONSURLSessionFactory>)urlSession
7779 return self;
7880}
7981
80- - (BOOL )setProxy : (NSString *)host port : (NSString *)port {
82+ - (BOOL )setProxy : (NSString *)host port : (NSNumber *)port {
8183 BOOL success = NO ;
8284
8385 if ((nil == host) != (nil == port)) {
@@ -136,26 +138,20 @@ - (void)executeRequest:(NSURLRequest *)request completionHandler:(AnalysisComple
136138 NSURLSession *session;
137139 // Use proxy if one has been configured
138140 if (self.proxyHost && self.proxyPort ) {
139- NSDictionary *proxyDict = @{
140- (__bridge NSString *)kCFNetworkProxiesHTTPEnable : @(YES ),
141- (__bridge NSString *)kCFNetworkProxiesHTTPProxy : self.proxyHost ,
142- (__bridge NSString *)kCFNetworkProxiesHTTPPort : self.proxyPort ,
143-
144- #if !TARGET_OS_IPHONE
145- (__bridge NSString *)kCFNetworkProxiesHTTPSEnable : @(YES ),
146- (__bridge NSString *)kCFNetworkProxiesHTTPSProxy : self.proxyHost ,
147- (__bridge NSString *)kCFNetworkProxiesHTTPSPort : self.proxyPort ,
148- #endif
149- };
150-
141+ // Create an NSURLSessionConfiguration that uses the proxy
151142 NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration ];
152- configuration.connectionProxyDictionary = proxyDict;
153-
143+ configuration.connectionProxyDictionary = @{
144+ @" HTTPEnable" : @(YES ),
145+ (NSString *)kCFStreamPropertyHTTPProxyHost : self.proxyHost ,
146+ (NSString *)kCFStreamPropertyHTTPProxyPort : self.proxyPort ,
147+ @" HTTPSEnable" : @(YES ),
148+ (NSString *)kCFStreamPropertyHTTPSProxyHost : self.proxyHost ,
149+ (NSString *)kCFStreamPropertyHTTPSProxyPort : self.proxyPort ,
150+ };
154151 session = [self .urlSessionFactory sessionWithConfiguration: configuration];
155152 } else {
156153 session = [self .urlSessionFactory session ];
157154 }
158-
159155 [[session dataTaskWithRequest: request completionHandler: completionHandler] resume ];
160156}
161157
@@ -215,18 +211,25 @@ - (void)runQuery:(KIOQuery *)keenQuery
215211 NSString *projectID = config.projectID ;
216212 [self executeRequest: request
217213 completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {
218- [self handleQueryAPIResponse: response andData: data andQuery: keenQuery andProjectID: projectID];
219- completionHandler (data, response, error);
214+ [self handleQueryAPIResponse: response
215+ andData: data
216+ andQuery: keenQuery
217+ andProjectID: projectID
218+ andError: error];
219+ if (nil != completionHandler) {
220+ completionHandler (data, response, error);
221+ }
220222 }];
221223}
222224
223225- (void )handleQueryAPIResponse : (NSURLResponse *)response
224226 andData : (NSData *)responseData
225227 andQuery : (KIOQuery *)query
226- andProjectID : (NSString *)projectID {
228+ andProjectID : (NSString *)projectID
229+ andError : (NSError *)error {
227230 // Check if call to the Query API failed
228- if (! responseData) {
229- KCLogError (@" responseData was nil for some reason. That's not great. " );
231+ if (nil == responseData || nil != error ) {
232+ KCLogError (@" Error reading response. error: %@ \n response data: %@ " , error, responseData );
230233 KCLogError (@" response status code: %ld " , (long )[((NSHTTPURLResponse *)response)statusCode]);
231234 return ;
232235 }
0 commit comments