summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/src/Minilang/OpenApi.hs
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud@pankzsoft.com>2025-11-05 16:28:56 +0100
committerArnaud Bailly <arnaud@pankzsoft.com>2025-11-05 16:28:56 +0100
commitf08fa03af4f6cf38e664d74c6a0a4a3e65746fb2 (patch)
tree8c988caea702e0f2ac9be9c8b697a8a7bb0e9ed3 /lambda-calcul/haskell/src/Minilang/OpenApi.hs
parentafcfa146122179dc80dd8055314b1381d152fb09 (diff)
downloadlambda-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.hs49
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"