Skip to content

Commit 15ed76e

Browse files
markspanbroekEric Mastro
andcommitted
Use Result to return error when wallet creation fails
Co-authored-by: Eric Mastro <[email protected]>
1 parent 43041e7 commit 15ed76e

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

ethers/wallet.nim

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,15 @@ proc new*(_: type Wallet, privateKey: PrivateKey, provider: Provider): Wallet =
3030
let wallet = Wallet.new(privateKey)
3131
wallet.provider = some provider
3232
wallet
33-
proc new*(_: type Wallet, privateKey: string): ?Wallet =
34-
if key =? PrivateKey.fromHex(privateKey):
35-
some Wallet.new(key)
36-
else:
37-
none Wallet
38-
proc new*(_: type Wallet, privateKey: string, provider: Provider): ?Wallet =
39-
if key =? PrivateKey.fromHex(privateKey):
40-
some Wallet.new(key, provider)
41-
else:
42-
none Wallet
33+
proc new*(_: type Wallet, privateKey: string): ?!Wallet =
34+
let keyResult = PrivateKey.fromHex(privateKey)
35+
if keyResult.isErr:
36+
return failure newException(WalletError, "invalid key: " & $keyResult.error)
37+
success Wallet.new(keyResult.get())
38+
proc new*(_: type Wallet, privateKey: string, provider: Provider): ?!Wallet =
39+
let wallet = ? Wallet.new(privateKey)
40+
wallet.provider = some provider
41+
success wallet
4342
proc connect*(wallet: Wallet, provider: Provider) =
4443
wallet.provider = some provider
4544
proc createRandom*(_: type Wallet): Wallet =

testmodule/testWallet.nim

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,20 @@ suite "Wallet":
2121
await provider.close()
2222

2323
test "Can create Wallet with private key":
24-
check isSome Wallet.new(pk1)
24+
check isSuccess Wallet.new(pk1)
2525
discard Wallet.new(PrivateKey.fromHex(pk1).get)
2626

2727
test "Private key can start with 0x":
28-
check isSome Wallet.new("0x" & pk1)
28+
check isSuccess Wallet.new("0x" & pk1)
2929

3030
test "Can create Wallet with provider":
3131
let provider = JsonRpcProvider.new()
32-
check isSome Wallet.new(pk1, provider)
32+
check isSuccess Wallet.new(pk1, provider)
3333
discard Wallet.new(PrivateKey.fromHex(pk1).get, provider)
3434

3535
test "Cannot create wallet with invalid key string":
36-
check isNone Wallet.new("0xInvalidKey")
37-
check isNone Wallet.new("0xInvalidKey", JsonRpcProvider.new())
36+
check isFailure Wallet.new("0xInvalidKey")
37+
check isFailure Wallet.new("0xInvalidKey", JsonRpcProvider.new())
3838

3939
test "Can connect Wallet to provider":
4040
let wallet = !Wallet.new(pk1)

0 commit comments

Comments
 (0)