|
1 | 1 | module HydraSdk.Internal.NodeApi.Http |
2 | 2 | ( commitRequest |
| 3 | + , commitRequestAff |
3 | 4 | ) where |
4 | 5 |
|
5 | 6 | import Prelude |
6 | 7 |
|
7 | 8 | import Contract.Config (ServerConfig) |
| 9 | +import Contract.Monad (Contract) |
8 | 10 | import Ctl.Internal.Helpers ((<</>>)) |
9 | 11 | import Ctl.Internal.ServerConfig (mkHttpUrl) |
10 | 12 | import Data.Codec.Argonaut (encode) as CA |
11 | 13 | import Data.Either (Either) |
12 | 14 | import Data.Maybe (Maybe(Just)) |
| 15 | +import Data.Traversable (traverse) |
13 | 16 | import Effect.Aff (Aff) |
| 17 | +import Effect.Aff.Class (liftAff) |
14 | 18 | import HydraSdk.Internal.Http.Error (HttpError) |
15 | 19 | import HydraSdk.Internal.Http.Utils (handleResponse, postRequest) |
| 20 | +import HydraSdk.Internal.Lib.Transaction (fixCommitTx) |
16 | 21 | import HydraSdk.Internal.Types.CommitRequest |
17 | 22 | ( HydraCommitRequest(SimpleCommitRequest, FullCommitRequest) |
18 | 23 | , hydraFullCommitRequestCodec |
19 | 24 | ) |
20 | 25 | import HydraSdk.Internal.Types.Tx (HydraTx, hydraTxCodec) |
21 | 26 | import HydraSdk.Internal.Types.UtxoMap (hydraUtxoMapCodec) |
22 | 27 |
|
23 | | -commitRequest :: ServerConfig -> HydraCommitRequest -> Aff (Either HttpError HydraTx) |
| 28 | +commitRequest :: ServerConfig -> HydraCommitRequest -> Contract (Either HttpError HydraTx) |
24 | 29 | commitRequest serverConfig req = |
| 30 | + liftAff (commitRequestAff serverConfig req) >>= |
| 31 | + traverse |
| 32 | + ( \hydraTx -> |
| 33 | + fixCommitTx hydraTx.cborHex <#> \fixedTx -> |
| 34 | + hydraTx { cborHex = fixedTx } |
| 35 | + ) |
| 36 | + |
| 37 | +commitRequestAff :: ServerConfig -> HydraCommitRequest -> Aff (Either HttpError HydraTx) |
| 38 | +commitRequestAff serverConfig req = |
25 | 39 | handleResponse hydraTxCodec <$> |
26 | 40 | postRequest |
27 | 41 | { url: mkHttpUrl serverConfig <</>> "commit" |
|
0 commit comments