@@ -70,10 +70,9 @@ public class HTTPClient {
70
70
completion ( . failure( HTTPClientErrors . failedToOpenBatch) )
71
71
return nil
72
72
}
73
-
74
- var urlRequest = URLRequest ( url: uploadURL)
75
- urlRequest. httpMethod = " POST "
76
-
73
+
74
+ let urlRequest = configuredRequest ( for: uploadURL, method: " POST " )
75
+
77
76
let dataTask = session. uploadTask ( with: urlRequest, fromFile: batch) { [ weak self] ( data, response, error) in
78
77
if let error = error {
79
78
self ? . analytics? . log ( message: " Error uploading request \( error. localizedDescription) . " )
@@ -106,9 +105,8 @@ public class HTTPClient {
106
105
return
107
106
}
108
107
109
- var urlRequest = URLRequest ( url: settingsURL)
110
- urlRequest. httpMethod = " GET "
111
-
108
+ let urlRequest = configuredRequest ( for: settingsURL, method: " GET " )
109
+
112
110
let dataTask = session. dataTask ( with: urlRequest) { [ weak self] ( data, response, error) in
113
111
if let error = error {
114
112
self ? . analytics? . reportInternalError ( AnalyticsError . networkUnknown ( error) )
@@ -169,15 +167,24 @@ extension HTTPClient {
169
167
return Self . defaultCDNHost
170
168
}
171
169
170
+ internal func configuredRequest( for url: URL , method: String ) -> URLRequest {
171
+ var request = URLRequest ( url: url, cachePolicy: . reloadIgnoringLocalCacheData, timeoutInterval: 60 )
172
+ request. httpMethod = method
173
+ request. addValue ( " application/json; charset=utf-8 " , forHTTPHeaderField: " Content-Type " )
174
+ request. addValue ( " Basic \( apiKey) " , forHTTPHeaderField: " Authorization " )
175
+ request. addValue ( " analytics-ios/ \( Analytics . version ( ) ) " , forHTTPHeaderField: " User-Agent " )
176
+ request. addValue ( " gzip " , forHTTPHeaderField: " Accept-Encoding " )
177
+
178
+ if let requestFactory = analytics? . configuration. values. requestFactory {
179
+ request = requestFactory ( request)
180
+ }
181
+
182
+ return request
183
+ }
184
+
172
185
internal static func configuredSession( for writeKey: String ) -> URLSession {
173
186
let configuration = URLSessionConfiguration . ephemeral
174
- configuration. allowsCellularAccess = true
175
- configuration. timeoutIntervalForResource = 30
176
- configuration. timeoutIntervalForRequest = 60
177
187
configuration. httpMaximumConnectionsPerHost = 2
178
- configuration. httpAdditionalHeaders = [ " Content-Type " : " application/json; charset=utf-8 " ,
179
- " Authorization " : " Basic \( Self . authorizationHeaderForWriteKey ( writeKey) ) " ,
180
- " User-Agent " : " analytics-ios/ \( Analytics . version ( ) ) " ]
181
188
let session = URLSession ( configuration: configuration, delegate: nil , delegateQueue: nil )
182
189
return session
183
190
}
0 commit comments