From 9274d7fd9b9305135d44f36aa55ae67d1c38655f Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 20 Oct 2017 16:11:54 -0400 Subject: [PATCH 1/2] Fix proxying of Giphy requests. // FREEBIE --- Signal/src/network/GiphyAPI.swift | 19 +++++++++++-------- Signal/src/network/GiphyDownloader.swift | 13 ++++++++----- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/Signal/src/network/GiphyAPI.swift b/Signal/src/network/GiphyAPI.swift index 6978a746c..c8958c91a 100644 --- a/Signal/src/network/GiphyAPI.swift +++ b/Signal/src/network/GiphyAPI.swift @@ -284,17 +284,20 @@ extension GiphyError: LocalizedError { Logger.error("\(TAG) Invalid base URL.") return nil } - // TODO: We need to verify that this session configuration properly - // proxies all requests. - let sessionConf = URLSessionConfiguration.ephemeral - sessionConf.connectionProxyDictionary = [ - kCFProxyHostNameKey as String: "giphy-proxy-production.whispersystems.org", - kCFProxyPortNumberKey as String: "80", - kCFProxyTypeKey as String: kCFProxyTypeHTTPS + let configuration = URLSessionConfiguration.ephemeral + let proxyHost = "giphy-proxy-production.whispersystems.org" + let proxyPort = 80 + configuration.connectionProxyDictionary = [ + "HTTPEnable": 1, + "HTTPProxy": proxyHost, + "HTTPPort": proxyPort, + "HTTPSEnable": 1, + "HTTPSProxy": proxyHost, + "HTTPSPort": proxyPort ] let sessionManager = AFHTTPSessionManager(baseURL:baseUrl as URL, - sessionConfiguration:sessionConf) + sessionConfiguration:configuration) sessionManager.requestSerializer = AFJSONRequestSerializer() sessionManager.responseSerializer = AFJSONResponseSerializer() diff --git a/Signal/src/network/GiphyDownloader.swift b/Signal/src/network/GiphyDownloader.swift index e926ee3b6..356856f9e 100644 --- a/Signal/src/network/GiphyDownloader.swift +++ b/Signal/src/network/GiphyDownloader.swift @@ -181,13 +181,16 @@ extension URLSessionTask { private let kGiphyBaseURL = "https://api.giphy.com/" private func giphyDownloadSession() -> URLSession? { - // TODO: We need to verify that this session configuration properly - // proxies all requests. let configuration = URLSessionConfiguration.ephemeral + let proxyHost = "giphy-proxy-production.whispersystems.org" + let proxyPort = 80 configuration.connectionProxyDictionary = [ - kCFProxyHostNameKey as String: "giphy-proxy-production.whispersystems.org", - kCFProxyPortNumberKey as String: "80", - kCFProxyTypeKey as String: kCFProxyTypeHTTPS + "HTTPEnable": 1, + "HTTPProxy": proxyHost, + "HTTPPort": proxyPort, + "HTTPSEnable": 1, + "HTTPSProxy": proxyHost, + "HTTPSPort": proxyPort ] configuration.urlCache = nil configuration.requestCachePolicy = .reloadIgnoringCacheData From c11b82ba305de0a736216ad262baea6855ec791a Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 20 Oct 2017 16:21:52 -0400 Subject: [PATCH 2/2] Respond to CR. // FREEBIE --- Signal/src/network/GiphyAPI.swift | 15 +++++++++------ Signal/src/network/GiphyDownloader.swift | 15 +++------------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/Signal/src/network/GiphyAPI.swift b/Signal/src/network/GiphyAPI.swift index c8958c91a..09f295a3f 100644 --- a/Signal/src/network/GiphyAPI.swift +++ b/Signal/src/network/GiphyAPI.swift @@ -279,11 +279,7 @@ extension GiphyError: LocalizedError { private let kGiphyBaseURL = "https://api.giphy.com/" - private func giphyAPISessionManager() -> AFHTTPSessionManager? { - guard let baseUrl = NSURL(string:kGiphyBaseURL) else { - Logger.error("\(TAG) Invalid base URL.") - return nil - } + public class func giphySessionConfiguration() -> URLSessionConfiguration { let configuration = URLSessionConfiguration.ephemeral let proxyHost = "giphy-proxy-production.whispersystems.org" let proxyPort = 80 @@ -295,9 +291,16 @@ extension GiphyError: LocalizedError { "HTTPSProxy": proxyHost, "HTTPSPort": proxyPort ] + return configuration + } + private func giphyAPISessionManager() -> AFHTTPSessionManager? { + guard let baseUrl = NSURL(string:kGiphyBaseURL) else { + Logger.error("\(TAG) Invalid base URL.") + return nil + } let sessionManager = AFHTTPSessionManager(baseURL:baseUrl as URL, - sessionConfiguration:configuration) + sessionConfiguration:GiphyAPI.giphySessionConfiguration()) sessionManager.requestSerializer = AFJSONRequestSerializer() sessionManager.responseSerializer = AFJSONResponseSerializer() diff --git a/Signal/src/network/GiphyDownloader.swift b/Signal/src/network/GiphyDownloader.swift index 356856f9e..2a624eb07 100644 --- a/Signal/src/network/GiphyDownloader.swift +++ b/Signal/src/network/GiphyDownloader.swift @@ -181,20 +181,11 @@ extension URLSessionTask { private let kGiphyBaseURL = "https://api.giphy.com/" private func giphyDownloadSession() -> URLSession? { - let configuration = URLSessionConfiguration.ephemeral - let proxyHost = "giphy-proxy-production.whispersystems.org" - let proxyPort = 80 - configuration.connectionProxyDictionary = [ - "HTTPEnable": 1, - "HTTPProxy": proxyHost, - "HTTPPort": proxyPort, - "HTTPSEnable": 1, - "HTTPSProxy": proxyHost, - "HTTPSPort": proxyPort - ] + let configuration = GiphyAPI.giphySessionConfiguration() configuration.urlCache = nil configuration.requestCachePolicy = .reloadIgnoringCacheData - let session = URLSession(configuration:configuration, delegate:self, delegateQueue:operationQueue) + let session = URLSession(configuration:configuration, + delegate:self, delegateQueue:operationQueue) return session }