summaryrefslogtreecommitdiff
path: root/haskell/src/SpaceTraders/APIClient/Ships.hs
diff options
context:
space:
mode:
authorJulien Dessaux2023-07-18 00:02:33 +0200
committerJulien Dessaux2023-07-18 00:02:33 +0200
commit4af96da5670566c111fa5c7dac9572eaac021a4b (patch)
tree74ae00fb63e087437bc3a62152d4b7fecf8c039e /haskell/src/SpaceTraders/APIClient/Ships.hs
parent[haskell] Trigger a program restart when the api client encounters a server r... (diff)
downloadspacetraders-4af96da5670566c111fa5c7dac9572eaac021a4b.tar.gz
spacetraders-4af96da5670566c111fa5c7dac9572eaac021a4b.tar.bz2
spacetraders-4af96da5670566c111fa5c7dac9572eaac021a4b.zip
[haskell] Refactored everything with a ReaderT pattern
Diffstat (limited to '')
-rw-r--r--haskell/src/SpaceTraders/APIClient/Ships.hs36
1 files changed, 36 insertions, 0 deletions
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