From f08fa03af4f6cf38e664d74c6a0a4a3e65746fb2 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Wed, 5 Nov 2025 16:28:56 +0100 Subject: provide help on the leaderboard and OpenAPI specification --- lambda-calcul/haskell/src/Minilang/OpenApi.hs | 49 +++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 lambda-calcul/haskell/src/Minilang/OpenApi.hs (limited to 'lambda-calcul/haskell/src/Minilang/OpenApi.hs') 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" -- cgit v1.3.1