Skip to content

Commit 09cccbf

Browse files
committed
[cli] Report oracle cmd panics as json failures
1 parent 4d887d8 commit 09cccbf

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

cli/src/Oracle/Token/Cli.hs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,18 @@ data TokenUpdateFailure
8888

8989
instance Exception TokenUpdateFailure
9090

91+
data TokenBootFailure
92+
= NoTokenIdReturned
93+
| TokenIdNotValidJSON
94+
deriving (Show, Eq)
95+
96+
instance Monad m => ToJSON m TokenBootFailure where
97+
toJSON = \case
98+
NoTokenIdReturned ->
99+
toJSON ("No TokenId returned" :: String)
100+
TokenIdNotValidJSON ->
101+
toJSON ("TokenId is not valid JSON" :: String)
102+
91103
instance Monad m => ToJSON m TokenUpdateFailure where
92104
toJSON = \case
93105
TokenNotParsable tk ->
@@ -102,7 +114,10 @@ instance Monad m => ToJSON m TokenUpdateFailure where
102114
toJSON ("Token update not requested from token owner" :: String)
103115

104116
data TokenCommand a where
105-
BootToken :: Wallet -> TokenCommand (WithTxHash TokenId)
117+
BootToken
118+
:: Wallet
119+
-> TokenCommand
120+
(AValidationResult TokenBootFailure (WithTxHash TokenId))
106121
UpdateToken
107122
:: TokenId
108123
-> Wallet
@@ -168,13 +183,11 @@ tokenCmdCore command = do
168183
BootToken wallet -> do
169184
Submission submit <- ($ wallet) <$> askSubmit
170185
lift $ do
171-
WithTxHash txHash jTokenId <- submit
172-
$ \address -> mpfsBootToken mpfs address
173-
case jTokenId of
174-
Just tkId -> case fromJSON tkId of
175-
Nothing -> error "BootToken failed, TokenId is not valid JSON"
176-
Just tokenId -> pure $ WithTxHash txHash (Just tokenId)
177-
_ -> error "BootToken failed, no TokenId returned"
186+
WithTxHash txHash jTokenId <- submit $ mpfsBootToken mpfs
187+
runValidate $ do
188+
tkId <- liftMaybe NoTokenIdReturned jTokenId
189+
tokenId <- liftMaybe TokenIdNotValidJSON $ fromJSON tkId
190+
pure $ WithTxHash txHash (Just tokenId)
178191
EndToken tk wallet -> do
179192
Submission submit <- ($ wallet) <$> askSubmit
180193
lift $ do

cli/test-E2E/MPFS/APISpec.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ import Oracle.Token.Cli
7878
( TokenCommand (..)
7979
, tokenCmdCore
8080
)
81+
import Oracle.Validate.Types (AValidationResult (ValidationSuccess))
8182
import PlutusTx (Data, fromData)
8283
import Servant.Client (ClientM, mkClientEnv, parseBaseUrl, runClientM)
8384
import Submitting
@@ -206,7 +207,7 @@ setup auth = do
206207
Left err -> throwIO err
207208
Right res -> return res
208209
wait180S = signAndSubmitMPFS wait180
209-
WithTxHash txHash mTokenId <- calling call $ do
210+
ValidationSuccess (WithTxHash txHash mTokenId) <- calling call $ do
210211
withContext
211212
mpfsClient
212213
(mkValidation auth)

0 commit comments

Comments
 (0)