uni2work.workflows.visualiser/server/Routes.hs
2023-09-04 20:16:02 +02:00

63 lines
1.6 KiB
Haskell

-- SPDX-FileCopyrightText: 2023 David Mosbach <david.mosbach@campus.lmu.de>
--
-- 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