diff --git a/backend/src/API.hs b/backend/src/API.hs index 50ef49c..f74e081 100644 --- a/backend/src/API.hs +++ b/backend/src/API.hs @@ -1,12 +1,7 @@ {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE QuasiQuotes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module API (API, handler) where @@ -20,7 +15,7 @@ import qualified API.Catalogue as Catalogue import qualified API.Channels as Channels import qualified API.Users as Users -type API = Users.API +type API = "api" :> Users.API :<|> "api" :> "current" :> Channels.API :<|> "api" :> "current" :> Books.API :<|> "api" :> "1" :> Catalogue.VersionedAPI 1 diff --git a/backend/src/Server.hs b/backend/src/Server.hs index 909371b..2f9ccb5 100644 --- a/backend/src/Server.hs +++ b/backend/src/Server.hs @@ -1,19 +1,15 @@ {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE QuasiQuotes #-} -{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module Server where -import qualified API as API +import qualified API import ClassyPrelude hiding (Handler) import Control.Lens import Control.Monad.Except @@ -24,18 +20,16 @@ import Servant.Auth.Docs () import Servant.Auth.Server as SAS import qualified Servant.Docs as Docs import Servant.HTML.Lucid (HTML) -import Server.Auth (SafeUser) -import Server.Auth (authCheck) +import Server.Auth (SafeUser, authCheck) import Types type API = API.API - :<|> "help" :> Get '[PlainText, HTML] String - :<|> "static" :> Raw + :<|> "api" :> "help" :> Get '[PlainText, HTML] String type Ctx = '[BasicAuthData -> IO (AuthResult SafeUser), CookieSettings, JWTSettings] server :: App -> Application -server app = serveWithContext api cfg (hoistServerWithContext (Proxy @ API.API) (Proxy @ Ctx) server' API.handler :<|> serveDocs :<|> serveDirectoryFileServer "static") +server app = serveWithContext api cfg (hoistServerWithContext (Proxy @ API.API) (Proxy @ Ctx) server' API.handler :<|> serveDocs) where apiDocs :: Docs.API apiDocs = Docs.docs (Proxy @API.API) @@ -46,6 +40,6 @@ server app = serveWithContext api cfg (hoistServerWithContext (Proxy @ API.API) cookieSettings = SAS.defaultCookieSettings{cookieIsSecure=SAS.NotSecure} cfg = jwtCfg :. cookieSettings :. authCfg :. EmptyContext server' :: AppM a -> Servant.Handler a - server' = Handler . ExceptT . try . (`runReaderT` app) . (runFileLoggingT "logs/server.log") + server' = Handler . ExceptT . try . (`runReaderT` app) . runFileLoggingT "logs/server.log" api :: Proxy API api = Proxy