-- SPDX-FileCopyrightText: 2023 David Mosbach -- -- SPDX-License-Identifier: AGPL-3.0-or-later {-# LANGUAGE DataKinds, TypeOperators, FlexibleInstances, MultiParamTypeClasses, OverloadedStrings #-} module Routes where import Servant import Servant.API import Servant.Server import Network.HTTP.Media ((//), (/:)) import Data.ByteString.Lazy.Internal (ByteString) directory :: FilePath directory = "." -- Directory of the static files data HTML data HTMLTemplate type Home = Get '[HTML] [HTMLTemplate] -- Serve app under / :<|> "app" :> Get '[HTML] [HTMLTemplate] -- Also serve app under /app type RequestFile = Raw -- For serving the workflow definitions & index.json | TODO alternatively keep data after parsing & serve as '[JSON] instance Accept HTML where contentType _ = "text" // "html" instance MimeRender HTML ByteString where mimeRender _ bs = bs instance MimeUnrender HTML ByteString where mimeUnrender _ = Right instance MimeRender HTML [HTMLTemplate] where mimeRender p template = undefined --TODO use encoding function of template library instance MimeUnrender HTML [HTMLTemplate] where mimeUnrender _ bs = Right undefined -- TODO use decoding function mainServer :: Server Home mainServer = undefined userAPI :: Proxy Home userAPI = Proxy workFlows :: Application workFlows = serve userAPI mainServer fileServer :: Server RequestFile fileServer = serveDirectoryFileServer directory staticAPI :: Proxy RequestFile staticAPI = Proxy files :: Application files = serve staticAPI fileServer