diff options
| author | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-11-05 16:28:56 +0100 |
|---|---|---|
| committer | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-11-05 16:28:56 +0100 |
| commit | f08fa03af4f6cf38e664d74c6a0a4a3e65746fb2 (patch) | |
| tree | 8c988caea702e0f2ac9be9c8b697a8a7bb0e9ed3 /lambda-calcul/haskell/src/Minilang/OpenApi.hs | |
| parent | afcfa146122179dc80dd8055314b1381d152fb09 (diff) | |
| download | lambda-nantes-f08fa03af4f6cf38e664d74c6a0a4a3e65746fb2.tar.gz | |
provide help on the leaderboard and OpenAPI specification
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang/OpenApi.hs')
| -rw-r--r-- | lambda-calcul/haskell/src/Minilang/OpenApi.hs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lambda-calcul/haskell/src/Minilang/OpenApi.hs b/lambda-calcul/haskell/src/Minilang/OpenApi.hs new file mode 100644 index 0000000..8d24fec --- /dev/null +++ b/lambda-calcul/haskell/src/Minilang/OpenApi.hs @@ -0,0 +1,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" |
