mirror of
https://github.com/FiloSpaTeam/plutus-pioneer-program.git
synced 2024-11-22 06:42:00 +01:00
getting pools
This commit is contained in:
parent
d6524c0796
commit
f09f5ddc4f
1 changed files with 49 additions and 8 deletions
|
@ -18,7 +18,7 @@ import Data.Text (Text, pack)
|
||||||
import Data.UUID
|
import Data.UUID
|
||||||
import Ledger.Value (CurrencySymbol, flattenValue)
|
import Ledger.Value (CurrencySymbol, flattenValue)
|
||||||
import Network.HTTP.Req
|
import Network.HTTP.Req
|
||||||
import Plutus.Contracts.Uniswap (Uniswap, UserContractState (..))
|
import qualified Plutus.Contracts.Uniswap as US
|
||||||
import Plutus.PAB.Events.ContractInstanceState (PartiallyDecodedResponse (..))
|
import Plutus.PAB.Events.ContractInstanceState (PartiallyDecodedResponse (..))
|
||||||
import Plutus.PAB.Webserver.Types
|
import Plutus.PAB.Webserver.Types
|
||||||
import System.Environment (getArgs)
|
import System.Environment (getArgs)
|
||||||
|
@ -38,12 +38,27 @@ main = do
|
||||||
case (mus, mcs) of
|
case (mus, mcs) of
|
||||||
(Just us, Just cs) -> do
|
(Just us, Just cs) -> do
|
||||||
putStrLn $ "cid: " ++ show cid
|
putStrLn $ "cid: " ++ show cid
|
||||||
putStrLn $ "uniswap: " ++ show (us :: Uniswap)
|
putStrLn $ "uniswap: " ++ show (us :: US.Uniswap)
|
||||||
putStrLn $ "symbol: " ++ show (cs :: CurrencySymbol)
|
putStrLn $ "symbol: " ++ show (cs :: CurrencySymbol)
|
||||||
forever $ do
|
go cid
|
||||||
getFunds cid
|
|
||||||
threadDelay 1_000_000
|
|
||||||
_ -> putStrLn "invalid uniswap.json and/or symbol.json" >> exitFailure
|
_ -> putStrLn "invalid uniswap.json and/or symbol.json" >> exitFailure
|
||||||
|
where
|
||||||
|
go :: UUID -> IO a
|
||||||
|
go cid = do
|
||||||
|
cmd <- readCommandIO
|
||||||
|
case cmd of
|
||||||
|
Funds -> getFunds cid
|
||||||
|
Pools -> getPools cid
|
||||||
|
go cid
|
||||||
|
|
||||||
|
data Command = Funds | Pools
|
||||||
|
deriving (Show, Read, Eq, Ord)
|
||||||
|
|
||||||
|
readCommandIO :: IO Command
|
||||||
|
readCommandIO = do
|
||||||
|
putStrLn "Enter a command: Funds, Pools"
|
||||||
|
s <- getLine
|
||||||
|
maybe readCommandIO return $ readMaybe s
|
||||||
|
|
||||||
getFunds :: UUID -> IO ()
|
getFunds :: UUID -> IO ()
|
||||||
getFunds uuid = handle h $ runReq defaultHttpConfig $ do
|
getFunds uuid = handle h $ runReq defaultHttpConfig $ do
|
||||||
|
@ -64,7 +79,33 @@ getFunds uuid = handle h $ runReq defaultHttpConfig $ do
|
||||||
(Proxy :: Proxy (JsonResponse (ContractInstanceClientState UniswapContracts)))
|
(Proxy :: Proxy (JsonResponse (ContractInstanceClientState UniswapContracts)))
|
||||||
(port 8080)
|
(port 8080)
|
||||||
liftIO $ putStrLn $ case fromJSON $ observableState $ cicCurrentState $ responseBody w of
|
liftIO $ putStrLn $ case fromJSON $ observableState $ cicCurrentState $ responseBody w of
|
||||||
Success (Last (Just (Right (Funds f)))) -> "funds: " ++ show (flattenValue f)
|
Success (Last (Just (Right (US.Funds f)))) -> "funds: " ++ show (flattenValue f)
|
||||||
|
Success (Last (Just (Left e))) -> "error: " ++ show (e :: Text)
|
||||||
|
_ -> "error decoding state"
|
||||||
|
where
|
||||||
|
h :: HttpException -> IO ()
|
||||||
|
h _ = threadDelay 1_000_000 >> getFunds uuid
|
||||||
|
|
||||||
|
getPools :: UUID -> IO ()
|
||||||
|
getPools uuid = handle h $ runReq defaultHttpConfig $ do
|
||||||
|
v <- req
|
||||||
|
POST
|
||||||
|
(http "127.0.0.1" /: "api" /: "new" /: "contract" /: "instance" /: pack (show uuid) /: "endpoint" /: "pools")
|
||||||
|
(ReqBodyJson ())
|
||||||
|
(Proxy :: Proxy (JsonResponse ()))
|
||||||
|
(port 8080)
|
||||||
|
if responseStatusCode v /= 200
|
||||||
|
then liftIO $ putStrLn "error getting funds"
|
||||||
|
else do
|
||||||
|
liftIO $ threadDelay 2_000_000
|
||||||
|
w <- req
|
||||||
|
GET
|
||||||
|
(http "127.0.0.1" /: "api" /: "new" /: "contract" /: "instance" /: pack (show uuid) /: "status")
|
||||||
|
NoReqBody
|
||||||
|
(Proxy :: Proxy (JsonResponse (ContractInstanceClientState UniswapContracts)))
|
||||||
|
(port 8080)
|
||||||
|
liftIO $ putStrLn $ case fromJSON $ observableState $ cicCurrentState $ responseBody w of
|
||||||
|
Success (Last (Just (Right (US.Pools ps)))) -> "pools: " ++ show ps
|
||||||
Success (Last (Just (Left e))) -> "error: " ++ show (e :: Text)
|
Success (Last (Just (Left e))) -> "error: " ++ show (e :: Text)
|
||||||
_ -> "error decoding state"
|
_ -> "error decoding state"
|
||||||
where
|
where
|
||||||
|
|
Loading…
Reference in a new issue