100 lines
2.9 KiB
Text
100 lines
2.9 KiB
Text
name: servant-docs
|
|
version: 0.2
|
|
synopsis: generate API docs for your servant webservice
|
|
description:
|
|
Library for generating API docs from a servant API definition.
|
|
.
|
|
Runnable example below that prints API docs in markdown.
|
|
.
|
|
> {-# LANGUAGE DataKinds #-}
|
|
> {-# LANGUAGE PolyKinds #-}
|
|
> {-# LANGUAGE TypeFamilies #-}
|
|
> {-# LANGUAGE DeriveGeneric #-}
|
|
> {-# LANGUAGE TypeOperators #-}
|
|
> {-# LANGUAGE FlexibleInstances #-}
|
|
> {-# LANGUAGE OverloadedStrings #-}
|
|
>
|
|
> import Data.Proxy
|
|
> import Data.Text
|
|
> import Servant
|
|
>
|
|
> -- our type for a Greeting message
|
|
> data Greet = Greet { _msg :: Text }
|
|
> deriving (Generic, Show)
|
|
>
|
|
> -- we get our JSON serialization for free
|
|
> instance FromJSON Greet
|
|
> instance ToJSON Greet
|
|
>
|
|
> -- we provide a sample value for the 'Greet' type
|
|
> instance ToSample Greet where
|
|
> toSample = Just g
|
|
>
|
|
> where g = Greet "Hello, haskeller!"
|
|
>
|
|
> instance ToParam (QueryParam "capital" Bool) where
|
|
> toParam _ =
|
|
> DocQueryParam "capital"
|
|
> ["true", "false"]
|
|
> "Get the greeting message in uppercase (true) or not (false). Default is false."
|
|
>
|
|
> instance ToCapture (Capture "name" Text) where
|
|
> toCapture _ = DocCapture "name" "name of the person to greet"
|
|
>
|
|
> instance ToCapture (Capture "greetid" Text) where
|
|
> toCapture _ = DocCapture "greetid" "identifier of the greet msg to remove"
|
|
>
|
|
> -- API specification
|
|
> type TestApi =
|
|
> "hello" :> Capture "name" Text :> QueryParam "capital" Bool :> Get Greet
|
|
> :<|> "greet" :> RQBody Greet :> Post Greet
|
|
> :<|> "delete" :> Capture "greetid" Text :> Delete
|
|
>
|
|
> testApi :: Proxy TestApi
|
|
> testApi = Proxy
|
|
>
|
|
> -- Generate the Documentation's ADT
|
|
> greetDocs :: API
|
|
> greetDocs = docs testApi
|
|
>
|
|
> main :: IO ()
|
|
> main = putStrLn $ markdown greetDocs
|
|
license: BSD3
|
|
license-file: LICENSE
|
|
author: Alp Mestanogullari, Sönke Hahn, Julian K. Arni
|
|
maintainer: alpmestan@gmail.com
|
|
copyright: 2014 Zalora South East Asia Pte Ltd
|
|
category: Web
|
|
build-type: Simple
|
|
cabal-version: >=1.10
|
|
tested-with: GHC >= 7.8
|
|
homepage: http://haskell-servant.github.io/
|
|
Bug-reports: http://github.com/haskell-servant/servant-docs/issues
|
|
source-repository head
|
|
type: git
|
|
location: http://github.com/haskell-servant/servant-docs.git
|
|
|
|
library
|
|
exposed-modules:
|
|
Servant.Docs
|
|
build-depends:
|
|
base >=4.7 && <5
|
|
, aeson
|
|
, bytestring
|
|
, hashable
|
|
, lens
|
|
, servant >= 0.2
|
|
, string-conversions
|
|
, system-filepath
|
|
, text
|
|
, unordered-containers
|
|
hs-source-dirs: src
|
|
default-language: Haskell2010
|
|
ghc-options: -Wall
|
|
|
|
executable greet-docs
|
|
main-is: greet.hs
|
|
hs-source-dirs: example
|
|
ghc-options: -Wall
|
|
build-depends: base, aeson, servant, servant-docs, text
|
|
default-language: Haskell2010
|