Skip to content

Commit f4fdb61

Browse files
authored
Merge pull request #1108 from MixinNetwork/feature/header_fields
Update header fields
2 parents e08acde + 4da1f93 commit f4fdb61

3 files changed

Lines changed: 7 additions & 31 deletions

File tree

Mixin/Service/Audio/Cacheable Asset/CacheableAssetFileDescription.swift

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,7 @@ extension CacheableAssetFileDescription {
7878
guard let response = response as? HTTPURLResponse else {
7979
return nil
8080
}
81-
// Before iOS 13.0 Swift treat HTTP header fields as case sensitive
82-
// Refactor this after deployment targets updates to iOS 13.0
83-
// https://bugs.swift.org/browse/SR-2429
84-
let headers = response.allHeaderFields as NSDictionary
85-
guard let contentRange = headers["Content-Range"] as? String else {
81+
guard let contentRange = response.value(forHTTPHeaderField: "content-range") else {
8682
return nil
8783
}
8884
guard let maxRange = contentRange.components(separatedBy: "/").last else {
@@ -98,7 +94,7 @@ extension CacheableAssetFileDescription {
9894
self.contentType = nil
9995
}
10096
self.contentLength = contentLength
101-
if let acceptRanges = headers["Accept-Ranges"] as? String {
97+
if let acceptRanges = response.value(forHTTPHeaderField: "accept-ranges") {
10298
self.isByteRangeAccessSupported = acceptRanges.contains("bytes")
10399
} else {
104100
self.isByteRangeAccessSupported = false

Mixin/UserInterface/Controllers/Login/LoginMobileNumberViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ final class LoginMobileNumberViewController: MobileNumberViewController {
101101
if !error.isTransportTimedOut {
102102
var userInfo = [String: Any]()
103103
userInfo["error"] = "\(error)"
104-
if let requestId = weakSelf.request?.response?.allHeaderFields["x-request-id"] {
104+
if let requestId = weakSelf.request?.response?.value(forHTTPHeaderField: "x-request-id") {
105105
userInfo["requestId"] = requestId
106106
}
107107
if let statusCode = weakSelf.request?.response?.statusCode {

MixinServices/MixinServices/Services/API/MixinAPI.swift

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ extension MixinAPI {
152152
let host = MixinHost.http
153153

154154
func handleDeauthorization(response: HTTPURLResponse?) {
155-
let xServerTime = TimeInterval(response?.allHeaderFields[caseInsensitive: "x-server-time"] ?? "0") ?? 0
155+
let xServerTime = TimeInterval(response?.value(forHTTPHeaderField: "x-server-time") ?? "0") ?? 0
156156
let serverTimeIntervalSince1970 = xServerTime / TimeInterval(NSEC_PER_SEC)
157157
let serverTime = Date(timeIntervalSince1970: serverTimeIntervalSince1970)
158158
if abs(requestTime.timeIntervalSinceNow) > secondsPerMinute {
@@ -187,8 +187,8 @@ extension MixinAPI {
187187
.responseData(queue: queue, completionHandler: { (response) in
188188
switch response.result {
189189
case .success(let data):
190-
if let requestId = response.request?.allHTTPHeaderFields?["X-Request-Id"], !requestId.isEmpty {
191-
let responseRequestId = response.response?.allHeaderFields[caseInsensitive: "x-request-id"] ?? ""
190+
if let requestId = response.request?.value(forHTTPHeaderField: "x-request-id"), !requestId.isEmpty {
191+
let responseRequestId = response.response?.value(forHTTPHeaderField: "x-request-id") ?? ""
192192
if requestId != responseRequestId {
193193
Logger.general.error(category: "MixinAPI", message: "Mismatched request id. Request path: \(response.request?.url?.path), id: \(requestId), responded header: \(response.response?.allHeaderFields)")
194194
completion(.failure(.internalServerError))
@@ -213,7 +213,7 @@ extension MixinAPI {
213213
}
214214
case let .failure(error):
215215
let path = response.request?.url?.path ?? "(null)"
216-
let requestId = response.request?.allHTTPHeaderFields?["X-Request-Id"] ?? "(null)"
216+
let requestId = response.request?.value(forHTTPHeaderField: "x-request-id") ?? "(null)"
217217
Logger.general.error(category: "MixinAPI", message: "Request with path: \(path), id: \(requestId), failed with error: \(error)" )
218218
if shouldToggleServer(for: error) {
219219
MixinHost.toggle(currentHttpHost: host)
@@ -247,23 +247,3 @@ extension MixinAPI {
247247
}
248248

249249
}
250-
251-
fileprivate extension Dictionary where Key == AnyHashable, Value == Any {
252-
253-
subscript(caseInsensitive key: String) -> String? {
254-
get {
255-
if let k = keys.first(where: { ($0 as? String)?.lowercased() == key }) {
256-
return self[k] as? String
257-
}
258-
return nil
259-
}
260-
set {
261-
if let k = keys.first(where: { ($0 as? String)?.lowercased() == key }) {
262-
self[k] = newValue
263-
} else {
264-
self[key] = newValue
265-
}
266-
}
267-
}
268-
269-
}

0 commit comments

Comments
 (0)