From 4af96da5670566c111fa5c7dac9572eaac021a4b Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Tue, 18 Jul 2023 00:02:33 +0200 Subject: [haskell] Refactored everything with a ReaderT pattern --- haskell/src/SpaceTraders/APIClient/Ships.hs | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 haskell/src/SpaceTraders/APIClient/Ships.hs (limited to 'haskell/src/SpaceTraders/APIClient/Ships.hs') diff --git a/haskell/src/SpaceTraders/APIClient/Ships.hs b/haskell/src/SpaceTraders/APIClient/Ships.hs new file mode 100644 index 0000000..0efbb5d --- /dev/null +++ b/haskell/src/SpaceTraders/APIClient/Ships.hs @@ -0,0 +1,36 @@ +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE OverloadedStrings #-} + +module SpaceTraders.APIClient.Ships + ( listShips + ) where + +import Control.Exception +--import qualified Data.Text as T +--import qualified Database.SQLite.Simple as S +import Network.HTTP.Simple + +import SpaceTraders +import SpaceTraders.APIClient.Client +import SpaceTraders.APIClient.Pagination +--import SpaceTraders.Database.Ships +import SpaceTraders.Model.Ship(Ship) +import Debug.Trace + +listShips :: SpaceTradersT (APIResponse [Ship]) +listShips = do + listShips' Pagination{limit=20, page=1, total=0} + where + listShips' :: Pagination -> SpaceTradersT (APIResponse [Ship]) + listShips' p = do + resp <- sendPaginated (Just p) $ setRequestPath "/v2/my/ships" + case resp of + Left e -> throw e + Right (APIMessage r (Just p')) -> do + liftIO $ traceIO $ show p' + --if (length r == 0 || ((page p') * (limit p') + --addShips conn r + --listShips' (nextPage p') + return $ Right r + _ -> undefined -- cgit v1.2.3