summaryrefslogtreecommitdiff
path: root/haskell/src/SpaceTraders/APIClient/Agent.hs
diff options
context:
space:
mode:
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