@@ -10,55 +10,56 @@ import Foundation
1010
1111public protocol APIParameter {
1212 /// Converts the target to an Encodable-compliant type.
13- var toParameters : Encodable { get }
13+ var toParameters : AnyAPIHashableParameter { get }
1414}
1515
1616// MARK: - Default
1717
18- extension APIParameter where Self: Encodable {
19- public var toParameters : Encodable { self }
18+ extension APIParameter where Self: APIHashableParameter {
19+ public var toParameters : AnyAPIHashableParameter { . init ( self ) }
2020}
2121
2222// MARK: - Array
2323
2424extension Array : APIParameter {
25- public var toParameters : Encodable {
26- ( self as [ Any ? ] )
27- . lazy
25+ public var toParameters : AnyAPIHashableParameter {
26+ let result : [ AnyAPIHashableParameter ] = ( self as [ Any ? ] )
2827 . compactMap {
29- if let value = $0 as? Encodable { return value }
28+ if let value = $0 as? ( any APIHashableParameter ) { return . init ( value) }
3029 if let value = $0 as? APIParameter { return value. toParameters }
3130 return mapAnyObjectToEncodable ( $0 as? AnyObject )
3231 }
33- . map { AnyEncodable ( $0) }
32+
33+ return . init( result)
3434 }
3535}
3636
3737// MARK: - Dictionary
3838
3939extension Dictionary : APIParameter where Key == String {
40- public var toParameters : Encodable {
41- ( self as [ String : Any ? ] )
40+ public var toParameters : AnyAPIHashableParameter {
41+ let result : [ String : AnyAPIHashableParameter ] = ( self as [ String : Any ? ] )
4242 . compactMapValues {
43- if let value = $0 as? Encodable { return value }
43+ if let value = $0 as? ( any APIHashableParameter ) { return . init ( value) }
4444 if let value = $0 as? APIParameter { return value. toParameters }
4545 return mapAnyObjectToEncodable ( $0 as? AnyObject )
4646 }
47- . mapValues { AnyEncodable ( $0) }
47+
48+ return . init( result)
4849 }
4950}
5051
5152// MARK: - Tools
5253
5354fileprivate extension APIParameter {
54- func mapAnyObjectToEncodable( _ value: AnyObject ? ) -> Encodable ? {
55+ func mapAnyObjectToEncodable( _ value: AnyObject ? ) -> AnyAPIHashableParameter ? {
5556 guard let _value = value else { return nil }
5657
57- if let result = _value as? String { return result }
58- if let result = _value as? Int { return result }
59- if let result = _value as? Double { return result }
60- if let result = _value as? Bool { return result }
61- if let result = _value as? Data { return result }
58+ if let result = _value as? String { return . init ( result) }
59+ if let result = _value as? Int { return . init ( result) }
60+ if let result = _value as? Double { return . init ( result) }
61+ if let result = _value as? Bool { return . init ( result) }
62+ if let result = _value as? Data { return . init ( result) }
6263 if let result = _value as? [ String : Any ] { return result. toParameters }
6364 if let result = _value as? [ Any ] { return result. toParameters }
6465
0 commit comments