1
- // Package: web3swift
2
- // Created by Alex Vlasov.
3
- // Copyright © 2022 Yaroslav Yashin. All rights reserved.
1
+ //
2
+ // Web3+APIRequestParameter.swift
3
+ // Web3swift
4
+ //
5
+ // Created by Yaroslav on 24.05.2022.
6
+ //
7
+
8
+ import Foundation
4
9
5
10
/// Protocol to restrict supported types which can be passed into `JSONRPCRequest` to a node.
6
11
///
12
17
/// Conformance of that protocol by a custom type will be silently failed to encode (e.g. there won't be in request).
13
18
///
14
19
/// Please see `RPCParameter` documentation for more details.
15
- public protocol JSONRPCParameter : Encodable { }
20
+ public protocol APIRequestParameterType : Encodable { }
16
21
17
- protocol JSONParameterElement : Encodable { }
22
+ protocol APIRequestParameterElementType : Encodable { }
18
23
19
- extension Int : JSONRPCParameter { }
24
+ extension Int : APIRequestParameterType { }
20
25
21
- extension UInt : JSONRPCParameter { }
26
+ extension UInt : APIRequestParameterType { }
22
27
23
- extension Double : JSONRPCParameter { }
28
+ extension Double : APIRequestParameterType { }
24
29
25
- extension String : JSONRPCParameter { }
30
+ extension String : APIRequestParameterType { }
26
31
27
- extension Bool : JSONRPCParameter { }
32
+ extension Bool : APIRequestParameterType { }
28
33
29
- extension Array : JSONRPCParameter where Element: JSONParameterElement { }
34
+ extension Array : APIRequestParameterType where Element: APIRequestParameterElementType { }
30
35
31
- extension TransactionParameters : JSONRPCParameter { }
36
+ extension TransactionParameters : APIRequestParameterType { }
32
37
33
- extension EventFilterParameters : JSONRPCParameter { }
38
+ extension EventFilterParameters : APIRequestParameterType { }
34
39
35
- extension Int : JSONParameterElement { }
40
+ extension Int : APIRequestParameterElementType { }
36
41
37
- extension UInt : JSONParameterElement { }
42
+ extension UInt : APIRequestParameterElementType { }
38
43
39
- extension Double : JSONParameterElement { }
44
+ extension Double : APIRequestParameterElementType { }
40
45
41
- extension String : JSONParameterElement { }
46
+ extension String : APIRequestParameterElementType { }
42
47
43
- extension Bool : JSONParameterElement { }
48
+ extension Bool : APIRequestParameterElementType { }
44
49
45
50
/**
46
51
Enum to compose request to the node params.
@@ -55,11 +60,11 @@ extension Bool: JSONParameterElement { }
55
60
56
61
So in our case we're using such to implement custom `encode` method to any used in node request params types.
57
62
58
- Latter is required to encode array of `RPCParameter ` to not to `[RPCParameter .int(1)]`, but to `[1]`.
63
+ Latter is required to encode array of `RequestParameter ` to not to `[RequestParameter .int(1)]`, but to `[1]`.
59
64
60
65
Here's an example of using this enum in field.
61
66
```swift
62
- let jsonRPCParams: [JSONRPCParameter ] = [
67
+ let jsonRPCParams: [APIRequestParameterType ] = [
63
68
.init(rawValue: 12)!,
64
69
.init(rawValue: "this")!,
65
70
.init(rawValue: 12.2)!,
@@ -70,7 +75,7 @@ extension Bool: JSONParameterElement { }
70
75
//> [12,\"this\",12.2,[12.2,12.4]]`
71
76
```
72
77
*/
73
- public enum RPCParameter {
78
+ public enum RequestParameter {
74
79
case int( Int )
75
80
case intArray( [ Int ] )
76
81
@@ -85,22 +90,22 @@ public enum RPCParameter {
85
90
86
91
case bool( Bool )
87
92
case boolArray( [ Bool ] )
88
-
93
+
89
94
case transaction( TransactionParameters )
90
95
case eventFilter( EventFilterParameters )
91
96
}
92
97
93
98
94
- extension RPCParameter : RawRepresentable {
99
+ extension RequestParameter : RawRepresentable {
95
100
/**
96
101
This init required by `RawRepresentable` protocol, which is requred to encode mixed type values array in JSON.
97
102
98
103
This protocol used to implement custom `encode` method for that enum,
99
104
which is encodes array of self into array of self assotiated values.
100
105
101
- You're totally free to use explicit and more convenience member init as `RPCParameter .int(12)` in your code.
106
+ You're totally free to use explicit and more convenience member init as `RequestParameter .int(12)` in your code.
102
107
*/
103
- public init ? ( rawValue: JSONRPCParameter ) {
108
+ public init ? ( rawValue: APIRequestParameterType ) {
104
109
/// force casting in this switch is safe because
105
110
/// each `rawValue` forced to casts only in exact case which is runs based on `rawValues` type
106
111
// swiftlint:disable force_cast
@@ -128,7 +133,7 @@ extension RPCParameter: RawRepresentable {
128
133
}
129
134
130
135
/// Returning associated value of the enum case.
131
- public var rawValue : JSONRPCParameter {
136
+ public var rawValue : APIRequestParameterType {
132
137
// cases can't be merged, coz it cause compiler error since it couldn't predict what exact type on exact case will be returned.
133
138
switch self {
134
139
case let . int( value) : return value
@@ -152,14 +157,14 @@ extension RPCParameter: RawRepresentable {
152
157
}
153
158
}
154
159
155
- extension RPCParameter : Encodable {
160
+ extension RequestParameter : Encodable {
156
161
/**
157
- This encoder encodes `RPCParameter ` assotiated value ignoring self value
162
+ This encoder encodes `RequestParameter ` assotiated value ignoring self value
158
163
159
164
This is required to encode mixed types array, like
160
165
161
166
```swift
162
- let someArray: [RPCParameter ] = [
167
+ let someArray: [RequestParameter ] = [
163
168
.init(rawValue: 12)!,
164
169
.init(rawValue: "this")!,
165
170
.init(rawValue: 12.2)!,
0 commit comments