mirror of https://github.com/oxen-io/session-ios
restore PreKey upload failure tracking
parent
39b691b697
commit
85d35b52d6
@ -0,0 +1,46 @@
|
||||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import PromiseKit
|
||||
|
||||
enum NetworkManagerError: Error {
|
||||
/// Wraps TSNetworkManager failure callback params in a single throwable error
|
||||
case taskError(task: URLSessionDataTask, underlyingError: Error)
|
||||
}
|
||||
|
||||
extension NetworkManagerError {
|
||||
var isNetworkError: Bool {
|
||||
switch self {
|
||||
case .taskError(_, let underlyingError):
|
||||
return IsNSErrorNetworkFailure(underlyingError)
|
||||
}
|
||||
}
|
||||
|
||||
var statusCode: Int {
|
||||
switch self {
|
||||
case .taskError(let task, _):
|
||||
return task.statusCode()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension TSNetworkManager {
|
||||
func makePromise(request: TSRequest) -> Promise<(task: URLSessionDataTask, responseObject: Any?)> {
|
||||
let (promise, fulfill, reject) = Promise<(task: URLSessionDataTask, responseObject: Any?)>.pending()
|
||||
|
||||
self.makeRequest(request,
|
||||
success: { task, responseObject in
|
||||
fulfill((task: task, responseObject: responseObject))
|
||||
},
|
||||
failure: { task, error in
|
||||
let nmError = NetworkManagerError.taskError(task: task, underlyingError: error)
|
||||
let nsError: NSError = nmError as NSError
|
||||
nsError.isRetryable = (error as NSError).isRetryable
|
||||
reject(nsError)
|
||||
})
|
||||
|
||||
return promise
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue