Skip to content

Commit 631422a

Browse files
Merge pull request #180 from barrasso/patch-3
Update ENS Resolver
2 parents e2451d4 + 5ab6a9d commit 631422a

File tree

2 files changed

+565
-2
lines changed

2 files changed

+565
-2
lines changed

Sources/web3swift/Utils/ENS/ENSResolver.swift

+9-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public extension ENS {
1919
case CBOR = 4
2020
case URI = 8
2121
}
22-
22+
2323
public enum InterfaceName {
2424
case addr
2525
case name
@@ -72,6 +72,14 @@ public extension ENS {
7272
guard let supports = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")}
7373
return supports
7474
}
75+
76+
public func interfaceImplementer(forNode node: String, interfaceID: String) throws -> EthereumAddress {
77+
guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")}
78+
guard let transaction = self.resolverContract.read("interfaceImplementer", parameters: [nameHash, interfaceID] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError}
79+
guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")}
80+
guard let address = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Can't get address")}
81+
return address
82+
}
7583

7684
public func getAddress(forNode node: String) throws -> EthereumAddress {
7785
guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")}

0 commit comments

Comments
 (0)