1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
module Minilang.OpenApi where
import Control.Lens ((&), (.~), (?~))
import Data.Swagger
( HasDescription (description),
HasInfo (info),
HasLicense (license),
HasTitle (title),
HasType (type_),
HasVersion (version),
NamedSchema (NamedSchema),
Swagger,
SwaggerType (SwaggerString),
ToParamSchema (..),
ToSchema (..),
)
import Minilang.API (Challenge, Score, Token, User, lambdaAPI)
import Servant.Swagger (HasSwagger (toSwagger))
instance ToSchema Token where
declareNamedSchema _ =
return $
NamedSchema (Just "Token") $
mempty
& description ?~ "A hex-encoded bytestring."
& type_ ?~ SwaggerString
instance ToSchema User where
declareNamedSchema _ =
return $
NamedSchema (Just "User") $
mempty
& description ?~ "A user name."
& type_ ?~ SwaggerString
instance ToSchema Score
instance ToSchema Challenge
instance ToParamSchema Token where
toParamSchema _ = mempty & type_ ?~ SwaggerString
lambdaSwagger :: Swagger
lambdaSwagger =
toSwagger lambdaAPI
& info . title .~ "λ-Calculus Challenge API"
& info . version .~ "0.1"
& info . description ?~ "An API for learning and experimenting with the λ-calculus one challenge at a time"
& info . license ?~ "© Arnaud Bailly - All Rights Reserved"
|