Skip to content

Commit f64c336

Browse files
committed
Fix http proxy enable
1 parent 1979643 commit f64c336

File tree

7 files changed

+44
-38
lines changed

7 files changed

+44
-38
lines changed

KeenClient/KIONetwork.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
- (instancetype)initWithURLSessionFactory:(id<KIONSURLSessionFactory>)urlSessionFactory andStore:(KIODBStore *)store;
2222

2323
// Configure a proxy server
24-
- (BOOL)setProxy:(NSString *)host port:(NSString *)port;
24+
- (BOOL)setProxy:(NSString *)host port:(NSNumber *)port;
2525

2626
// Upload events to keen
2727
- (void)sendEvents:(NSData *)data
@@ -61,6 +61,6 @@
6161

6262
// The current proxy configuration, if set. To set the configuration, use setProxy:port:.
6363
@property (nonatomic, readonly) NSString *proxyHost;
64-
@property (nonatomic, readonly) NSString *proxyPort;
64+
@property (nonatomic, readonly) NSNumber *proxyPort;
6565

6666
@end

KeenClient/KIONetwork.m

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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: %@\nresponse data: %@", error, responseData);
230233
KCLogError(@"response status code: %ld", (long)[((NSHTTPURLResponse *)response)statusCode]);
231234
return;
232235
}

KeenClient/KeenClient.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ typedef void (^AnalysisCompletionBlock)(NSData *responseData, NSURLResponse *res
121121
The current proxy configuration, if set. To set the configuration, use setProxy:port:.
122122
*/
123123
@property (nonatomic, readonly, getter=getProxyHost) NSString *proxyHost;
124-
@property (nonatomic, readonly, getter=getProxyPort) NSString *proxyPort;
124+
@property (nonatomic, readonly, getter=getProxyPort) NSNumber *proxyPort;
125125

126126
/**
127127
Call this to retrieve the managed instance of KeenClient and set its project ID and Write/Read Keys
@@ -424,7 +424,7 @@ typedef void (^AnalysisCompletionBlock)(NSData *responseData, NSURLResponse *res
424424
@param port The proxy port number.
425425
@return YES on success, NO on failure
426426
*/
427-
- (BOOL)setProxy:(NSString *)host port:(NSString *)port;
427+
- (BOOL)setProxy:(NSString *)host port:(NSNumber *)port;
428428

429429
/**
430430
Call this to indiscriminately delete all queries.

KeenClient/KeenClient.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -637,15 +637,15 @@ - (void)runAsyncDatasetQuery:(NSString *)datasetName
637637
});
638638
}
639639

640-
- (BOOL)setProxy:(NSString *)host port:(NSString *)port {
640+
- (BOOL)setProxy:(NSString *)host port:(NSNumber *)port {
641641
return [self.network setProxy:host port:port];
642642
}
643643

644644
- (NSString *)getProxyHost {
645645
return self.network.proxyHost;
646646
}
647647

648-
- (NSString *)getProxyPort {
648+
- (NSNumber *)getProxyPort {
649649
return self.network.proxyPort;
650650
}
651651

KeenClientTests/KIONetworkTestable.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- (void)handleQueryAPIResponse:(NSURLResponse *)response
1212
andData:(NSData *)responseData
1313
andQuery:(KIOQuery *)query
14-
andProjectID:(NSString *)projectID;
14+
andProjectID:(NSString *)projectID
15+
andError:(NSError *)error;
1516

1617
@end

KeenClientTests/KeenClientTests.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,10 @@ - (void)testSDKVersionInstanceClient {
149149
- (void)testProxy {
150150
KeenClient *client = [KeenClient sharedClientWithProjectID:@"id" andWriteKey:@"wk" andReadKey:@"rk"];
151151

152-
BOOL success = [client setProxy:@"127.0.0.1" port:@"8888"];
152+
BOOL success = [client setProxy:@"127.0.0.1" port:@(8888)];
153153
XCTAssertTrue(success);
154-
XCTAssertEqual(client.proxyHost, @"127.0.0.1");
155-
XCTAssertEqual(client.proxyPort, @"8888");
154+
XCTAssertEqualObjects(client.proxyHost, @"127.0.0.1");
155+
XCTAssertEqualObjects(client.proxyPort, @(8888));
156156

157157
success = [client setProxy:nil port:nil];
158158
XCTAssertTrue(success);
@@ -164,7 +164,7 @@ - (void)testProxy {
164164
XCTAssertNil(client.proxyHost);
165165
XCTAssertNil(client.proxyPort);
166166

167-
success = [client setProxy:nil port:@"8888"];
167+
success = [client setProxy:nil port:@(8888)];
168168
XCTAssertFalse(success);
169169
XCTAssertNil(client.proxyHost);
170170
XCTAssertNil(client.proxyPort);

KeenClientTests/QueryTests.m

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ - (void)testSuccessfulQueryAPIResponse {
345345
headerFields:@{}];
346346
NSData *responseData = [@"query failed" dataUsingEncoding:NSUTF8StringEncoding];
347347

348-
[client.network handleQueryAPIResponse:response andData:responseData andQuery:nil andProjectID:kDefaultProjectID];
348+
[client.network handleQueryAPIResponse:response andData:responseData andQuery:nil andProjectID:kDefaultProjectID andError:nil];
349349

350350
// test that there are no entries in the query database
351351
XCTAssertEqual([KIODBStore.sharedInstance getTotalQueryCountWithProjectID:kDefaultProjectID],
@@ -371,7 +371,7 @@ - (void)testFailedQueryAPIResponse {
371371
@"event_collection": @"collection"
372372
}];
373373

374-
[client.network handleQueryAPIResponse:response andData:responseData andQuery:query andProjectID:kDefaultProjectID];
374+
[client.network handleQueryAPIResponse:response andData:responseData andQuery:query andProjectID:kDefaultProjectID andError:nil];
375375

376376
NSUInteger numberOfQueries = [KIODBStore.sharedInstance getTotalQueryCountWithProjectID:kDefaultProjectID];
377377

@@ -387,7 +387,8 @@ - (void)testFailedQueryAPIResponse {
387387
[client.network handleQueryAPIResponse:response
388388
andData:responseData
389389
andQuery:query2
390-
andProjectID:kDefaultProjectID];
390+
andProjectID:kDefaultProjectID
391+
andError:nil];
391392

392393
numberOfQueries = [KIODBStore.sharedInstance getTotalQueryCountWithProjectID:kDefaultProjectID];
393394
XCTAssertEqual(
@@ -397,7 +398,8 @@ - (void)testFailedQueryAPIResponse {
397398
[client.network handleQueryAPIResponse:response
398399
andData:responseData
399400
andQuery:query2
400-
andProjectID:kDefaultProjectID];
401+
andProjectID:kDefaultProjectID
402+
andError:nil];
401403

402404
numberOfQueries = [KIODBStore.sharedInstance getTotalQueryCountWithProjectID:kDefaultProjectID];
403405
XCTAssertEqual(numberOfQueries,

0 commit comments

Comments
 (0)