module RenderBlog (renderBlog) where
 
-import CMark (Node(..), CMarkOption(..), nodeToHtml, commonmarkToNode, optSafe)
+import CMark (commonmarkToHtml)
 import Lucid (Html(..), toHtmlRaw)
 import qualified Data.Text as T
 
 renderBlog :: T.Text -> Html ()
-renderBlog = renderNode . cssToNode
-
-cmarkOptions :: [CMarkOption]
-cmarkOptions = [optSafe]
-
-cssToNode :: T.Text -> Node
-cssToNode = commonmarkToNode cmarkOptions
-
-renderNode :: Node -> Html ()
-renderNode = toHtmlRaw . nodeToHtml cmarkOptions
+renderBlog = toHtmlRaw . commonmarkToHtml []
 
 module Server where
 
+import Control.Monad ((<=<))
 import Control.Monad.IO.Class (liftIO)
 import CssContentType
 import Lucid
 import RenderBlog (renderBlog)
 import Servant
 import Servant.HTML.Lucid (HTML(..))
+import System.Directory (getCurrentDirectory)
 import qualified Data.Text as T
 import qualified Data.Text.IO as T
 
 apiProxy :: Proxy Api
 apiProxy = Proxy
 
-type Api = MainPage :<|> BlogPost :<|> Themes
+type Api = MainPage :<|> BlogPost :<|> Themes :<|> TestPage
 type MainPage = Get '[HTML] (Html ())
-type BlogPost = "blog" :> QueryParam "id" BlogId :> Get '[HTML] (Html ())
+type BlogPost = "blog" :> Capture "id" BlogId :> Get '[HTML] (Html ())
 type Themes = DarkTheme :<|> LightTheme
 type DarkTheme = "dark" :> Get '[CSS] T.Text
 type LightTheme = "light" :> Get '[CSS] T.Text
+type TestPage = "test" :> Get '[HTML] T.Text
 
 type BlogId = FilePath
 
 api :: Server Api
-api = mainPage :<|> blogPost :<|> themes
+api = mainPage :<|> blogPost :<|> themes :<|> testPage
 
 mainPage :: Handler (Html ())
 mainPage = pure $ with doctypehtml_ [lang_ "en"] $ do
   body_ $ div_ [role_ "main"] $ do
     h1_ $ toHtml siteTitle
 
-blogPost :: Maybe BlogId -> Handler (Html ())
-blogPost Nothing = mainPage
-blogPost (Just blogId) = findBlogPost blogId >>= pure . renderBlog
+blogPost :: BlogId -> Handler (Html ())
+blogPost = pure . renderBlog <=< findBlogPost
 
 findBlogPost :: BlogId -> Handler T.Text
-findBlogPost = liftIO . T.readFile . (<>) "/static/"
+findBlogPost = liftIO . T.readFile . (<>) "static/" . flip (<>) ".md"
 
 themes :: Server Themes
 themes = darkTheme :<|> lightTheme
 
 siteTitle :: T.Text
 siteTitle = "My Site"
+
+testPage :: Handler T.Text
+testPage = liftIO getCurrentDirectory >>= pure . T.pack