aboutsummaryrefslogtreecommitdiffstats
path: root/backend/lib/ACMS/API/REST.hs
diff options
context:
space:
mode:
Diffstat (limited to 'backend/lib/ACMS/API/REST.hs')
-rw-r--r--backend/lib/ACMS/API/REST.hs16
1 files changed, 12 insertions, 4 deletions
diff --git a/backend/lib/ACMS/API/REST.hs b/backend/lib/ACMS/API/REST.hs
index 74d402c..64b47b7 100644
--- a/backend/lib/ACMS/API/REST.hs
+++ b/backend/lib/ACMS/API/REST.hs
@@ -5,7 +5,6 @@ module ACMS.API.REST where
#ifndef ghcjs_HOST_OS
import Network.HTTP.Simple
#else
-import Data.ByteString.Char8 qualified as B
import Data.ByteString.Lazy.UTF8 qualified as LB
import Data.Maybe
import Data.String
@@ -14,26 +13,35 @@ import Miso.String qualified as J
#endif
import Control.Monad.Catch (MonadThrow)
import Data.Aeson qualified as A
+import Data.ByteString.Char8 qualified as B
import Data.ByteString.Lazy.Char8 qualified as LB
import Data.Function ((&))
import Miso (JSM)
import Miso.String (MisoString)
+restRequest :: String -> Request
+restRequest endpoint =
+ defaultRequest
+ & setRequestSecure False
+ & setRequestHost "localhost"
+ & setRequestPort 8081
+ & setRequestPath ("/api/rest" <> B.pack endpoint)
+
schemaVersion :: (APIMonad m, A.FromJSON a) => m a
schemaVersion =
- "http://localhost:8081/api/rest/schemaVersion"
+ restRequest "/schemaVersion"
& fetch
>>= A.throwDecode
listCollections :: (APIMonad m) => m [MisoString]
listCollections =
- "http://localhost:8081/api/rest/collection"
+ restRequest "/collection"
& fetch
>>= A.throwDecode
createCollection :: (APIMonad m) => MisoString -> m ()
createCollection collection =
- "http://localhost:8081/api/rest/collections"
+ restRequest "/collections"
& setRequestMethod "POST"
& setRequestBodyLBS (A.encode (A.toJSON collection))
& fetch