From 3633c44893bfbd50f25b84ac353012975388332c Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 20 Aug 2016 17:28:19 -0400 Subject: initial http api using servant --- HTTP/Server.hs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 HTTP/Server.hs (limited to 'HTTP') diff --git a/HTTP/Server.hs b/HTTP/Server.hs new file mode 100644 index 0000000..5df3d06 --- /dev/null +++ b/HTTP/Server.hs @@ -0,0 +1,51 @@ +{- Copyright 2016 Joey Hess + - + - Licensed under the GNU AGPL version 3 or higher. + -} + +module HTTP.Server where + +import HTTP +import Types +import Types.Storage +import Serialization () +import Servant.API +import Servant.Server +import Data.Proxy +import Network.Wai +import Network.Wai.Handler.Warp + +runServer :: Int -> IO () +runServer port = run port app + +app :: Application +app = serve userAPI server + +userAPI :: Proxy HttpAPI +userAPI = Proxy + +server :: Server HttpAPI +server = apiVersion + :<|> motd + :<|> proofOfWorkRequirement + :<|> getObject + :<|> putObject + :<|> countObjects + +apiVersion :: Handler APIVersion +apiVersion = return (APIVersion 1) + +motd :: Handler Motd +motd = return $ Motd "Hello World!" + +proofOfWorkRequirement :: Handler (Maybe ProofOfWorkRequirement) +proofOfWorkRequirement = return $ Just $ ProofOfWorkRequirement 3 1 + +getObject :: StorableObjectIdent -> Maybe ProofOfWork -> Handler StorableObject +getObject _i _pow = undefined + +putObject :: StorableObjectIdent -> Maybe ProofOfWork -> StorableObject -> Handler StoreResult +putObject _i _pow _o = return StoreSuccess + +countObjects :: Maybe ProofOfWork -> Handler CountResult +countObjects _pow = return $ CountResult 42 -- cgit v1.2.3