63 lines
1.6 KiB
Haskell
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 |