Skip to content

Commit ae394bc

Browse files
committed
Add json codecs for HydraNodeStartupParams and HydraHeadPeer
1 parent c4f2ce4 commit ae394bc

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

src/Internal/Lib/Codec.purs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module HydraSdk.Internal.Lib.Codec
1919
, sumGenericCodec
2020
, toVariantGeneric
2121
, txCodec
22+
, txHashCodec
2223
) where
2324

2425
import Prelude
@@ -31,6 +32,7 @@ import Cardano.Types
3132
, Ed25519KeyHash
3233
, ScriptHash
3334
, Transaction
35+
, TransactionHash
3436
, TransactionInput(TransactionInput)
3537
)
3638
import Cardano.Types.Address (fromBech32, toBech32) as Address
@@ -256,3 +258,6 @@ scriptHashCodec = asCborCodec "ScriptHash"
256258

257259
txCodec :: CA.JsonCodec Transaction
258260
txCodec = asCborCodec "Transaction"
261+
262+
txHashCodec :: CA.JsonCodec TransactionHash
263+
txHashCodec = asCborCodec "TransactionHash"

src/Internal/Process/HydraNode.purs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ module HydraSdk.Internal.Process.HydraNode
22
( HydraHeadPeer
33
, HydraNodeHandlers
44
, HydraNodeStartupParams
5+
, hydraHeadPeerCodec
6+
, hydraNodeStartupParamsCodec
57
, noopHydraNodeHandlers
68
, spawnHydraNode
79
) where
@@ -13,6 +15,8 @@ import Cardano.Types (TransactionHash)
1315
import Contract.CborBytes (cborBytesToHex)
1416
import Control.Error.Util (bool)
1517
import Data.Array (concat, singleton) as Array
18+
import Data.Codec.Argonaut (JsonCodec, array, int, object, string) as CA
19+
import Data.Codec.Argonaut.Record (record) as CAR
1620
import Data.Foldable (foldMap)
1721
import Data.Int (decimal, toStringAs) as Int
1822
import Data.Maybe (Maybe(Nothing), isNothing)
@@ -22,8 +26,15 @@ import Data.Traversable (for_, traverse_)
2226
import Effect (Effect)
2327
import Effect.AVar (empty, tryPut) as AVar
2428
import Effect.Class (class MonadEffect, liftEffect)
25-
import HydraSdk.Internal.Types.HostPort (HostPort, printHost, printHostPort, printPort)
26-
import HydraSdk.Internal.Types.Network (Network(Testnet, Mainnet))
29+
import HydraSdk.Internal.Lib.Codec (txHashCodec)
30+
import HydraSdk.Internal.Types.HostPort
31+
( HostPort
32+
, hostPortCodec
33+
, printHost
34+
, printHostPort
35+
, printPort
36+
)
37+
import HydraSdk.Internal.Types.Network (Network(Testnet, Mainnet), networkCodec)
2738
import Node.ChildProcess (ChildProcess, defaultSpawnOptions, spawn, stderr, stdout)
2839
import Node.Encoding (Encoding(UTF8)) as Encoding
2940
import Node.Path (FilePath)
@@ -44,12 +55,37 @@ type HydraNodeStartupParams =
4455
, peers :: Array HydraHeadPeer
4556
}
4657

58+
hydraNodeStartupParamsCodec :: CA.JsonCodec HydraNodeStartupParams
59+
hydraNodeStartupParamsCodec =
60+
CA.object "HydraNodeStartupParams" $ CAR.record
61+
{ nodeId: CA.string
62+
, hydraNodeAddress: hostPortCodec
63+
, hydraNodeApiAddress: hostPortCodec
64+
, persistDir: CA.string
65+
, hydraSigningKey: CA.string
66+
, cardanoSigningKey: CA.string
67+
, network: networkCodec
68+
, nodeSocket: CA.string
69+
, pparams: CA.string
70+
, hydraScriptsTxHash: txHashCodec
71+
, contestPeriodSec: CA.int
72+
, peers: CA.array hydraHeadPeerCodec
73+
}
74+
4775
type HydraHeadPeer =
4876
{ hydraNodeAddress :: HostPort
4977
, hydraVerificationKey :: FilePath
5078
, cardanoVerificationKey :: FilePath
5179
}
5280

81+
hydraHeadPeerCodec :: CA.JsonCodec HydraHeadPeer
82+
hydraHeadPeerCodec =
83+
CA.object "HydraHeadPeer" $ CAR.record
84+
{ hydraNodeAddress: hostPortCodec
85+
, hydraVerificationKey: CA.string
86+
, cardanoVerificationKey: CA.string
87+
}
88+
5389
type HydraNodeHandlers =
5490
{ apiServerStartedHandler :: Maybe (Effect Unit)
5591
, stdoutHandler :: Maybe (String -> Effect Unit)

src/Process.purs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import HydraSdk.Internal.Process.HydraNode
66
( HydraHeadPeer
77
, HydraNodeHandlers
88
, HydraNodeStartupParams
9+
, hydraHeadPeerCodec
10+
, hydraNodeStartupParamsCodec
911
, noopHydraNodeHandlers
1012
, spawnHydraNode
1113
) as ExportHydraNode

0 commit comments

Comments
 (0)