summaryrefslogtreecommitdiff
path: root/haskell/src/SpaceTraders/APIClient/Agent.hs
diff options
context:
space:
mode:
authorJulien Dessaux2023-07-02 22:58:30 +0200
committerJulien Dessaux2023-07-02 23:01:01 +0200
commita775330b4fa17fb367e55343e6fda6c7ae9e34b4 (patch)
tree8c572f799dbf434459d4659e32559c121421f120 /haskell/src/SpaceTraders/APIClient/Agent.hs
parentMoved the nodejs agent to its own subfolder to make room for my haskell agent (diff)
downloadspacetraders-a775330b4fa17fb367e55343e6fda6c7ae9e34b4.tar.gz
spacetraders-a775330b4fa17fb367e55343e6fda6c7ae9e34b4.tar.bz2
spacetraders-a775330b4fa17fb367e55343e6fda6c7ae9e34b4.zip
Bootstrapped my haskell client
Diffstat (limited to '')
-rw-r--r--haskell/src/SpaceTraders/APIClient/Agent.hs34
1 files changed, 34 insertions, 0 deletions
diff --git a/haskell/src/SpaceTraders/APIClient/Agent.hs b/haskell/src/SpaceTraders/APIClient/Agent.hs
new file mode 100644
index 0000000..997d1e5
--- /dev/null
+++ b/haskell/src/SpaceTraders/APIClient/Agent.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module SpaceTraders.APIClient.Agent
+ ( RegisterMessage(..)
+ , myAgent
+ , register
+ ) where
+
+import Data.Aeson
+import GHC.Generics
+import qualified Data.Text as T
+import Network.HTTP.Simple
+
+import SpaceTraders.APIClient.Client
+import SpaceTraders.Model.Agent
+
+myAgent :: T.Text -> IO (Either APIError Agent)
+myAgent t = send $ setRequestPath "/v2/my/agent"
+ $ tokenReq t
+
+data RegisterRequest = RegisterRequest { symbol :: T.Text
+ , faction :: T.Text
+ } deriving (ToJSON, Generic, Show)
+data RegisterMessage = RegisterMessage { token :: T.Text
+ , agent :: Agent
+ } deriving (FromJSON, Generic, Show)
+
+register :: T.Text -> T.Text -> IO (Either APIError RegisterMessage)
+register s f = send $ setRequestPath "/v2/register"
+ $ setRequestMethod "POST"
+ $ setRequestBodyJSON RegisterRequest{symbol = s, faction = f}
+ $ defaultReq