Skip to content

Commit 14b43e1

Browse files
committedApr 3, 2024
Update RedeemerPointer decoder for Ogmios v6.1
1 parent 867f792 commit 14b43e1

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed
 

‎src/Internal/QueryM/Ogmios.purs

+13-2
Original file line numberDiff line numberDiff line change
@@ -814,10 +814,11 @@ instance DecodeAeson TxEvaluationResult where
814814
:: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits)
815815
decodeRdmrPtrExUnitsItem elem = do
816816
res
817-
:: { validator :: String
817+
:: { validator :: Aeson
818818
, budget :: { memory :: Natural, cpu :: Natural }
819819
} <- decodeAeson elem
820-
redeemerPtr <- decodeRedeemerPointer res.validator
820+
redeemerPtr <- (decodeAeson res.validator >>= decodeRedeemerPointer) <|>
821+
decodeRedeemerPointerV6 res.validator
821822
pure $ redeemerPtr /\ { memory: res.budget.memory, steps: res.budget.cpu }
822823

823824
redeemerPtrTypeMismatch :: JsonDecodeError
@@ -834,6 +835,16 @@ decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch
834835
<*> Natural.fromString indexRaw
835836
_ -> Nothing
836837

838+
decodeRedeemerPointerV6 :: Aeson -> Either JsonDecodeError RedeemerPointer
839+
decodeRedeemerPointerV6 aeson = do
840+
obj <- decodeAeson aeson
841+
purpose <- obj .: "purpose"
842+
index <- obj .: "index"
843+
note (TypeMismatch "RedeemerPointer") $
844+
{ redeemerTag: _, redeemerIndex: _ }
845+
<$> RedeemerTag.fromString purpose
846+
<*> Natural.fromString index
847+
837848
type OgmiosDatum = String
838849
type OgmiosScript = String
839850
type OgmiosTxId = String

0 commit comments

Comments
 (0)
Please sign in to comment.