@@ -36,6 +36,110 @@ public struct ENS {
36
36
return Web3Options . defaultOptions ( )
37
37
} ( )
38
38
39
+ //MARK: - Convenience methods
40
+ public mutating func getAddress( _ domain: String ) -> Result < EthereumAddress , Web3Error > {
41
+ let resolver = self . resolver ( forDomain: domain)
42
+ switch resolver {
43
+ case . success( var resolver) :
44
+ let isAddrSupports = resolver. supportsInterface ( interfaceID: ResolverENS . InterfaceName. addr. hash ( ) )
45
+ switch isAddrSupports{
46
+ case . success( let isSupported) :
47
+ if isSupported {
48
+ return resolver. addr ( forDomain: domain)
49
+ } else {
50
+ return Result . failure ( Web3Error . dataError)
51
+ }
52
+ case . failure( let error) :
53
+ return Result . failure ( error)
54
+ }
55
+ case . failure( let error) :
56
+ return Result . failure ( error)
57
+ }
58
+ }
59
+
60
+
61
+ public mutating func setAddress( domain: String , address: EthereumAddress , options: Web3Options , password: String ? = nil ) -> Result < TransactionSendingResult , Web3Error > {
62
+ let resolver = self . resolver ( forDomain: domain)
63
+ switch resolver {
64
+ case . success( var resolver) :
65
+ let isSetAddrSupported = resolver. supportsInterface ( interfaceID: ResolverENS . InterfaceName. addr. hash ( ) )
66
+ switch isSetAddrSupported {
67
+ case . success( let value) :
68
+ if value {
69
+ return resolver. setAddr ( node: domain, address: address, options: options, password: password)
70
+ } else {
71
+ return Result . failure ( Web3Error . dataError)
72
+ }
73
+ case . failure( let error) :
74
+ return Result . failure ( error)
75
+ }
76
+ case . failure( let error) :
77
+ return Result . failure ( error)
78
+ }
79
+ }
80
+
81
+ public mutating func getPubkey( domain: String ) -> Result < PublicKey , Web3Error > {
82
+ let resolver = self . resolver ( forDomain: domain)
83
+ switch resolver {
84
+ case . success( var resolver) :
85
+ let isPubkeySupports = resolver. supportsInterface ( interfaceID: ResolverENS . InterfaceName. pubkey. hash ( ) )
86
+ switch isPubkeySupports {
87
+ case . success( let value) :
88
+ if value {
89
+ return resolver. pubkey ( node: domain)
90
+ } else {
91
+ return Result . failure ( Web3Error . dataError)
92
+ }
93
+ case . failure( let error) :
94
+ return Result . failure ( error)
95
+ }
96
+
97
+ case . failure( let error) :
98
+ return Result . failure ( error)
99
+ }
100
+ }
101
+
102
+ mutating public func setPubkey( domain: String , x: String , y: String , options: Web3Options , password: String ? = nil ) -> Result < TransactionSendingResult , Web3Error > {
103
+ let resolver = self . resolver ( forDomain: domain)
104
+ switch resolver {
105
+ case . success( var value) :
106
+ return value. setPubkey ( node: domain, x: x, y: y, options: options, password: password)
107
+ case . failure( let error) :
108
+ return Result . failure ( error)
109
+ }
110
+ }
111
+
112
+ mutating public func getContent( domain: String ) -> Result < String , Web3Error > {
113
+ let resolver = self . resolver ( forDomain: domain)
114
+ switch resolver {
115
+ case . success( var value) :
116
+ return value. content ( node: domain)
117
+ case . failure( let error) :
118
+ return Result . failure ( error)
119
+ }
120
+ }
121
+
122
+ public mutating func setContent( domain: String , hash: String , options: Web3Options , password: String ? = nil ) -> Result < TransactionSendingResult , Web3Error > {
123
+ let resolver = self . resolver ( forDomain: domain)
124
+ switch resolver {
125
+ case . success( var value) :
126
+ return value. setContent ( node: domain, hash: hash, options: options, password: password)
127
+ case . failure( let error) :
128
+ return Result . failure ( error)
129
+ }
130
+ }
131
+
132
+
133
+ public mutating func getMultihash( domain: String ) -> Result < Data , Web3Error > {
134
+ let resolver = self . resolver ( forDomain: domain)
135
+ switch resolver {
136
+ case . success( var value) :
137
+ return value. multihash ( node: domain)
138
+ case . failure( let error) :
139
+ return Result . failure ( error)
140
+ }
141
+ }
142
+
39
143
40
144
//MARK: - Returns resolver for the given domain
41
145
mutating func resolver( forDomain domain: String ) -> Result < ResolverENS , Web3Error > {
@@ -97,7 +201,8 @@ public struct ENS {
97
201
mutating func setSubnodeOwner( node: String , label: String , owner: EthereumAddress , options: Web3Options , password: String ? = nil ) -> Result < TransactionSendingResult , Web3Error > {
98
202
let options = getOptions ( options)
99
203
guard let nameHash = NameHash . nameHash ( node) else { return Result . failure ( Web3Error . dataError) }
100
- guard let transaction = self . registryContract. method ( " setSubnodeOwner " , parameters: [ nameHash, label, owner] as [ AnyObject ] , options: options) else { return Result . failure ( Web3Error . transactionSerializationError) }
204
+ guard let labelHash = NameHash . nameHash ( label) else { return Result . failure ( Web3Error . dataError) }
205
+ guard let transaction = self . registryContract. method ( " setSubnodeOwner " , parameters: [ nameHash, labelHash, owner] as [ AnyObject ] , options: options) else { return Result . failure ( Web3Error . transactionSerializationError) }
101
206
let result = password == nil ? transaction. send ( ) : transaction. send ( password: password!, options: options)
102
207
switch result {
103
208
case . success( let value) :
@@ -136,111 +241,6 @@ public struct ENS {
136
241
}
137
242
}
138
243
139
- //MARK: - Convenience methods
140
-
141
-
142
- public mutating func getAddress( _ domain: String ) -> Result < EthereumAddress , Web3Error > {
143
- let resolver = self . resolver ( forDomain: domain)
144
- switch resolver {
145
- case . success( var resolver) :
146
- let isAddrSupports = resolver. supportsInterface ( interfaceID: ResolverENS . InterfaceName. addr. hash ( ) )
147
- switch isAddrSupports{
148
- case . success( let isSupported) :
149
- if isSupported {
150
- return resolver. addr ( forDomain: domain)
151
- } else {
152
- return Result . failure ( Web3Error . dataError)
153
- }
154
- case . failure( let error) :
155
- return Result . failure ( error)
156
- }
157
- case . failure( let error) :
158
- return Result . failure ( error)
159
- }
160
- }
161
-
162
-
163
- public mutating func setAddress( domain: String , address: EthereumAddress , options: Web3Options , password: String ? = nil ) -> Result < TransactionSendingResult , Web3Error > {
164
- let resolver = self . resolver ( forDomain: domain)
165
- switch resolver {
166
- case . success( var resolver) :
167
- let isSetAddrSupported = resolver. supportsInterface ( interfaceID: ResolverENS . InterfaceName. setAddr. hash ( ) )
168
- switch isSetAddrSupported {
169
- case . success( let value) :
170
- if value {
171
- return resolver. setAddr ( node: domain, address: address, options: options, password: password)
172
- } else {
173
- return Result . failure ( Web3Error . dataError)
174
- }
175
- case . failure( let error) :
176
- return Result . failure ( error)
177
- }
178
- case . failure( let error) :
179
- return Result . failure ( error)
180
- }
181
- }
182
-
183
- public mutating func getPubkey( domain: String ) -> Result < Point , Web3Error > {
184
- let resolver = self . resolver ( forDomain: domain)
185
- switch resolver {
186
- case . success( var resolver) :
187
- let isPubkeySupports = resolver. supportsInterface ( interfaceID: ResolverENS . InterfaceName. pubkey. hash ( ) )
188
- switch isPubkeySupports {
189
- case . success( let value) :
190
- if value {
191
- return resolver. pubkey ( node: domain)
192
- } else {
193
- return Result . failure ( Web3Error . dataError)
194
- }
195
- case . failure( let error) :
196
- return Result . failure ( error)
197
- }
198
-
199
- case . failure( let error) :
200
- return Result . failure ( error)
201
- }
202
- }
203
-
204
- mutating public func setPubkey( domain: String , x: String , y: String , options: Web3Options , password: String ? = nil ) -> Result < TransactionSendingResult , Web3Error > {
205
- let resolver = self . resolver ( forDomain: domain)
206
- switch resolver {
207
- case . success( var value) :
208
- return value. setPubkey ( node: domain, x: x, y: y, options: options, password: password)
209
- case . failure( let error) :
210
- return Result . failure ( error)
211
- }
212
- }
213
-
214
- mutating public func getContent( domain: String ) -> Result < String , Web3Error > {
215
- let resolver = self . resolver ( forDomain: domain)
216
- switch resolver {
217
- case . success( var value) :
218
- return value. content ( node: domain)
219
- case . failure( let error) :
220
- return Result . failure ( error)
221
- }
222
- }
223
-
224
-
225
- mutating public func setContent( domain: String , hash: String , options: Web3Options , password: String ? = nil ) -> Result < TransactionSendingResult , Web3Error > {
226
- let resolver = self . resolver ( forDomain: domain)
227
- switch resolver {
228
- case . success( var value) :
229
- return value. setContent ( node: domain, hash: hash, options: options, password: password)
230
- case . failure( let error) :
231
- return Result . failure ( error)
232
- }
233
- }
234
-
235
- /*
236
- TODO:
237
- */
238
-
239
- //
240
- // public func getMultihash(domain: String) -> String {
241
- //
242
- // }
243
-
244
244
private func getOptions( _ options: Web3Options ) -> Web3Options {
245
245
var options = options
246
246
options. to = self . ensContractAddress
0 commit comments