a003331ee3
(cherry picked from commit 5477675671fa62a1d680e655e6a4e9f3ea09df51)
34 lines
1.1 KiB
Swift
34 lines
1.1 KiB
Swift
import Foundation
|
|
import Alamofire
|
|
|
|
class AlamofireService {
|
|
static let shared: AlamofireService = AlamofireService()
|
|
|
|
func post<T: Codable>(
|
|
url: String,
|
|
payloadData: Data?,
|
|
headers: HTTPHeaders? = nil,
|
|
interceptor: RequestInterceptor? = nil,
|
|
onSuccess: @escaping (T) -> Void,
|
|
onFailure: @escaping (Error) -> Void
|
|
) {
|
|
guard let baseUrl = URL(string: url),
|
|
var request = try? URLRequest(url: baseUrl, method: .post, headers: headers) else {
|
|
return onFailure(NetworkExceptions.requestUrlInvalid)
|
|
}
|
|
|
|
request.httpBody = payloadData
|
|
|
|
AF.request(request, interceptor: interceptor)
|
|
.validate()
|
|
.responseDecodable(of: T.self, queue: .global(qos: .default)) { response in
|
|
switch(response.result) {
|
|
case .success(let data):
|
|
onSuccess(data)
|
|
case .failure(let error):
|
|
onFailure(NetworkExceptions(value: "\(error.localizedDescription)"))
|
|
}
|
|
}
|
|
}
|
|
}
|