Merge pull request #294 from TouchInstinct/feature/recoverable_fixes
fix: DefaultRecoverableNetworkService `request` parameter was renamed to prevent ambiguous reference
This commit is contained in:
commit
8a482cc186
|
|
@ -1,5 +1,8 @@
|
|||
# Changelog
|
||||
|
||||
### 1.12.1
|
||||
|
||||
- **Update**: DefaultRecoverableNetworkService `request` parameter was renamed to prevent ambgious reference
|
||||
|
||||
### 1.12.0
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = "LeadKit"
|
||||
s.version = "1.12.0"
|
||||
s.version = "1.12.1"
|
||||
s.summary = "iOS framework with a bunch of tools for rapid development"
|
||||
s.homepage = "https://github.com/TouchInstinct/LeadKit"
|
||||
s.license = "Apache License, Version 2.0"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TIFoundationUtils'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Set of helpers for Foundation framework classes.'
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TIKeychainUtils'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Set of helpers for Keychain classes.'
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
|
|
@ -20,7 +20,11 @@
|
|||
// THE SOFTWARE.
|
||||
//
|
||||
|
||||
import Dispatch
|
||||
import Moya
|
||||
import Foundation
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
extension _Concurrency.Task: Cancellable {}
|
||||
|
||||
extension DispatchWorkItem: Cancellable {}
|
||||
extension Operation: Cancellable {}
|
||||
|
|
@ -29,8 +29,11 @@ import Foundation
|
|||
open class DefaultJsonNetworkService {
|
||||
public var session: Session
|
||||
|
||||
public var serializationQueue: DispatchQueue
|
||||
public var callbackQueue: DispatchQueue
|
||||
public var serializationQueue: DispatchQueue = .global(qos: .default)
|
||||
public var callbackQueue: DispatchQueue = .main
|
||||
|
||||
public var decodableSuccessStatusCodes: Set<Int>? = nil
|
||||
public var decodableFailureStatusCodes: Set<Int>? = nil
|
||||
|
||||
public var jsonDecoder: JSONDecoder
|
||||
public var jsonEncoder: JSONEncoder
|
||||
|
|
@ -42,13 +45,9 @@ open class DefaultJsonNetworkService {
|
|||
public init(session: Session,
|
||||
jsonDecoder: JSONDecoder,
|
||||
jsonEncoder: JSONEncoder,
|
||||
defaultServer: Server,
|
||||
serializationQueue: DispatchQueue = .global(qos: .default),
|
||||
callbackQueue: DispatchQueue = .main) {
|
||||
defaultServer: Server) {
|
||||
|
||||
self.session = session
|
||||
self.serializationQueue = serializationQueue
|
||||
self.callbackQueue = callbackQueue
|
||||
self.jsonDecoder = jsonDecoder
|
||||
self.jsonEncoder = jsonEncoder
|
||||
self.defaultServer = defaultServer
|
||||
|
|
@ -71,8 +70,6 @@ open class DefaultJsonNetworkService {
|
|||
|
||||
@available(iOS 13.0.0, *)
|
||||
public func process<B: Encodable, S: Decodable, F: Decodable, R>(request: EndpointRequest<B, S>,
|
||||
decodableSuccessStatusCodes: Set<Int>? = nil,
|
||||
decodableFailureStatusCodes: Set<Int>? = nil,
|
||||
mapSuccess: @escaping Closure<S, R>,
|
||||
mapFailure: @escaping Closure<F, R>,
|
||||
mapMoyaError: @escaping Closure<MoyaError, R>) async -> R {
|
||||
|
|
@ -84,8 +81,6 @@ open class DefaultJsonNetworkService {
|
|||
}, operation: {
|
||||
await withCheckedContinuation { continuation in
|
||||
process(request: request,
|
||||
decodableSuccessStatusCodes: decodableSuccessStatusCodes,
|
||||
decodableFailureStatusCodes: decodableFailureStatusCodes,
|
||||
mapSuccess: mapSuccess,
|
||||
mapFailure: mapFailure,
|
||||
mapMoyaError: mapMoyaError) {
|
||||
|
|
@ -98,8 +93,6 @@ open class DefaultJsonNetworkService {
|
|||
}
|
||||
|
||||
public func process<B: Encodable, S: Decodable, F: Decodable, R>(request: EndpointRequest<B, S>,
|
||||
decodableSuccessStatusCodes: Set<Int>? = nil,
|
||||
decodableFailureStatusCodes: Set<Int>? = nil,
|
||||
mapSuccess: @escaping Closure<S, R>,
|
||||
mapFailure: @escaping Closure<F, R>,
|
||||
mapMoyaError: @escaping Closure<MoyaError, R>,
|
||||
|
|
@ -116,8 +109,6 @@ open class DefaultJsonNetworkService {
|
|||
defaultServer: defaultServer)
|
||||
|
||||
scope.add(cancellable: self.process(request: serializedRequest,
|
||||
decodableSuccessStatusCodes: decodableSuccessStatusCodes,
|
||||
decodableFailureStatusCodes: decodableFailureStatusCodes,
|
||||
mapSuccess: mapSuccess,
|
||||
mapFailure: mapFailure,
|
||||
mapMoyaError: mapMoyaError,
|
||||
|
|
@ -136,14 +127,12 @@ open class DefaultJsonNetworkService {
|
|||
}
|
||||
|
||||
public func process<S: Decodable, F: Decodable, R>(request: SerializedRequest,
|
||||
decodableSuccessStatusCodes: Set<Int>? = nil,
|
||||
decodableFailureStatusCodes: Set<Int>? = nil,
|
||||
mapSuccess: @escaping Closure<S, R>,
|
||||
mapFailure: @escaping Closure<F, R>,
|
||||
mapMoyaError: @escaping Closure<MoyaError, R>,
|
||||
completion: @escaping ParameterClosure<R>) -> Cancellable {
|
||||
|
||||
createProvider().request(request) { [jsonDecoder, callbackQueue] in
|
||||
createProvider().request(request) { [jsonDecoder, callbackQueue, decodableSuccessStatusCodes, decodableFailureStatusCodes] in
|
||||
let result: R
|
||||
|
||||
switch $0 {
|
||||
|
|
|
|||
|
|
@ -30,27 +30,28 @@ open class DefaultRecoverableJsonNetworkService<ApiError: Decodable & Error>: De
|
|||
|
||||
private(set) public var defaultErrorHandlers: [ErrorHandler] = []
|
||||
|
||||
public func process<B: Encodable, S: Decodable>(request: EndpointRequest<B, S>,
|
||||
public func process<B: Encodable, S: Decodable>(recoverableRequest: EndpointRequest<B, S>,
|
||||
prependErrorHandlers: [ErrorHandler],
|
||||
appendErrorHandlers: [ErrorHandler],
|
||||
mapMoyaError: @escaping Closure<MoyaError, ApiError>) async -> Result<S, ApiError> {
|
||||
|
||||
await process(request: request,
|
||||
await process(recoverableRequest: recoverableRequest,
|
||||
errorHandlers: prependErrorHandlers + defaultErrorHandlers + appendErrorHandlers,
|
||||
mapMoyaError: mapMoyaError)
|
||||
}
|
||||
|
||||
public func process<B: Encodable, S: Decodable>(request: EndpointRequest<B, S>,
|
||||
public func process<B: Encodable, S: Decodable>(recoverableRequest: EndpointRequest<B, S>,
|
||||
errorHandlers: [ErrorHandler],
|
||||
mapMoyaError: @escaping Closure<MoyaError, ApiError>) async -> Result<S, ApiError> {
|
||||
|
||||
let result = await process(request: request, mapMoyaError: mapMoyaError)
|
||||
let result = await process(request: recoverableRequest,
|
||||
mapMoyaError: mapMoyaError)
|
||||
|
||||
if case let .failure(errorResponse) = result {
|
||||
let chain = AsyncEventHandlingChain(handlers: errorHandlers)
|
||||
|
||||
if await chain.handle(errorResponse) {
|
||||
return await process(request: request,
|
||||
return await process(recoverableRequest: recoverableRequest,
|
||||
errorHandlers: errorHandlers,
|
||||
mapMoyaError: mapMoyaError)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TIMoyaNetworking'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Moya + Swagger network service.'
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
|
|
@ -32,13 +32,15 @@ public extension EndpointRequest {
|
|||
let (contentType, bodyData) = try serializer.serialize(body: body)
|
||||
let serializedQueryParameters = QueryStringParameterEncoding().encode(parameters: queryParameters)
|
||||
|
||||
var serializedHeaderParameters: [String: String]?
|
||||
var serializedHeaderParameters: [String: String]
|
||||
|
||||
if let customHeaderParameters = headerParameters {
|
||||
serializedHeaderParameters = HeaderParameterEncoding().encode(parameters: customHeaderParameters)
|
||||
} else {
|
||||
serializedHeaderParameters = [:]
|
||||
}
|
||||
|
||||
serializedHeaderParameters?[HTTPHeader.contentType(contentType).name] = contentType
|
||||
serializedHeaderParameters[HTTPHeader.contentType(contentType).name] = contentType
|
||||
|
||||
let cookies: [HTTPCookie]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TINetworking'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Swagger-frendly networking layer helpers.'
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TISwiftUtils'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Bunch of useful helpers for Swift development.'
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TITableKitUtils'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Set of helpers for TableKit classes.'
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TITransitions'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Set of custom transitions to present controller. '
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TIUIElements'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Bunch of useful protocols and views.'
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = 'TIUIKitCore'
|
||||
s.version = '1.12.0'
|
||||
s.version = '1.12.1'
|
||||
s.summary = 'Core UI elements: protocols, views and helpers.'
|
||||
s.homepage = 'https://github.com/TouchInstinct/LeadKit/tree/' + s.version.to_s + '/' + s.name
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
|
|
|
|||
Loading…
Reference in New Issue