{-# LANGUAGE OverloadedStrings #-} module ACMS.API.REST where import ACMS.API.Fetch import Data.Aeson qualified as A import Data.Function ((&)) import Data.String (IsString (fromString)) import Miso.String (MisoString) restRequest :: String -> Request restRequest endpoint = fromString ("http://localhost:8081/api/rest" <> endpoint) schemaVersion :: (APIMonad m, A.FromJSON a) => m a schemaVersion = restRequest "/schemaVersion" & fetch >>= A.throwDecode listCollections :: (APIMonad m) => m [MisoString] listCollections = restRequest "/collection" & fetch >>= A.throwDecode createCollection :: (APIMonad m) => MisoString -> m () createCollection collection = restRequest "/collections" & setRequestMethod "POST" & setRequestBodyLBS (A.encode (A.toJSON collection)) & fetch >>= A.throwDecode