Merge pull request #294 from TouchInstinct/feature/recoverable_fixes

fix: DefaultRecoverableNetworkService `request` parameter was renamed to prevent ambiguous reference
This commit is contained in:
Ivan Smolin 2022-03-30 15:57:33 +03:00 committed by GitHub
commit 8a482cc186
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 35 additions and 36 deletions

View File

@ -1,5 +1,8 @@
# Changelog
### 1.12.1
- **Update**: DefaultRecoverableNetworkService `request` parameter was renamed to prevent ambgious reference
### 1.12.0

View File

@ -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"

View File

@ -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' }

View File

@ -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' }

View File

@ -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 {}

View File

@ -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 {

View File

@ -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)
}

View File

@ -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' }

View File

@ -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]

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }

View File

@ -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' }