boots-web-0.2: src/Boots/Endpoint/Swagger.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
module Boots.Endpoint.Swagger where
import qualified Data.Swagger as S
import Data.Text (Text, pack)
import Data.Version (Version, showVersion)
import Data.Word
import Lens.Micro
import Servant
#if __GLASGOW_HASKELL__ < 804
import Data.Semigroup
#endif
type EndpointSwagger = "endpoints" :> "swagger" :> Get '[JSON] S.Swagger
-- | Swagger modification
baseInfo
:: String -- ^ Hostname
-> Text -- ^ Server Name
-> Version -- ^ Server version
-> Word16 -- ^ Port
-> S.Swagger -- ^ Old swagger
-> S.Swagger
baseInfo hostName n v p s = s
& S.info . S.title .~ (n <> " API Documents")
& S.info . S.version .~ pack (showVersion v)
& S.host ?~ S.Host hostName (Just $ fromIntegral p)