//
|
// APIManager.swift
|
// OKProject
|
//
|
// Created by alvin_y on 2020/5/28.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import Foundation
|
import Moya
|
|
class APIManager {
|
|
static let shared = APIManager()
|
|
private init() {}
|
|
let provider: MoyaProvider<API> = {
|
let requestClosure = { (endpoint: Endpoint, closure: @escaping MoyaProvider<API>.RequestResultClosure) in
|
do {
|
var urlRequest = try endpoint.urlRequest()
|
urlRequest.timeoutInterval = 30
|
closure(.success(urlRequest))
|
} catch MoyaError.requestMapping(let url) {
|
closure(.failure(MoyaError.requestMapping(url)))
|
} catch MoyaError.parameterEncoding(let error) {
|
closure(.failure(MoyaError.parameterEncoding(error)))
|
} catch {
|
closure(.failure(MoyaError.underlying(error, nil)))
|
}
|
}
|
|
let networkActivityPlugin = NetworkActivityPlugin(networkActivityClosure: { (type, _) in
|
DispatchQueue.main.async {
|
switch type {
|
case .began:
|
UIApplication.shared.isNetworkActivityIndicatorVisible = true
|
break
|
case .ended:
|
UIApplication.shared.isNetworkActivityIndicatorVisible = false
|
break
|
}
|
}
|
})
|
|
var configuration = NetworkLoggerPlugin.Configuration()
|
configuration.logOptions = .verbose
|
let networkLoggerPlugin = NetworkLoggerPlugin.init(configuration: configuration)
|
let provider = MoyaProvider<API>(requestClosure: requestClosure, plugins: [networkActivityPlugin, networkLoggerPlugin])
|
|
return provider
|
}()
|
}
|