--- /dev/null
+module ApiTypes where
+
+import CssContentType
+import Html
+import Lucid
+import Servant
+import Servant.HTML.Lucid (HTML(..))
+import qualified Clay as C
+
+type Api = Page :<|> Themes
+type Page = MainPage :<|> BlogPost
+type MainPage = ThemeParam :> Get '[HTML] (Html ())
+type BlogPost = ThemeParam :> Capture "id" BlogId :> Get '[HTML] (Html ())
+type Themes = "style" :> (DarkTheme :<|> LightTheme)
+type DarkTheme = "dark" :> QueryParam "red" Integer :> QueryParam "green" Integer :> QueryParam "blue" Integer :> Get '[CSS] C.Css
+type LightTheme = "light" :> QueryParam "red" Integer :> QueryParam "green" Integer :> QueryParam "blue" Integer :> Get '[CSS] C.Css
+type ThemeParam = QueryParam "theme" Theme
module Server where
+import ApiTypes
import Control.Monad ((<=<))
import Control.Monad.IO.Class (liftIO)
-import CssContentType
import Data.Maybe (fromMaybe)
import Html
import Lucid
import RenderBlog (renderBlog)
import Servant
-import Servant.HTML.Lucid (HTML(..))
import StyleSheet
import qualified Clay as C
import qualified Data.Text as T
apiProxy :: Proxy Api
apiProxy = Proxy
-type Api = Page :<|> Themes
-type Page = MainPage :<|> BlogPost
-type MainPage = ThemeParam :> Get '[HTML] (Html ())
-type BlogPost = ThemeParam :> Capture "id" BlogId :> Get '[HTML] (Html ())
-type Themes = "style" :> (DarkTheme :<|> LightTheme)
-type DarkTheme = "dark" :> QueryParam "red" Integer :> QueryParam "green" Integer :> QueryParam "blue" Integer :> Get '[CSS] C.Css
-type LightTheme = "light" :> QueryParam "red" Integer :> QueryParam "green" Integer :> QueryParam "blue" Integer :> Get '[CSS] C.Css
-type ThemeParam = QueryParam "theme" Theme
-
api :: Server Api
api = page :<|> themes