mirror of
https://github.com/scarf-sh/tie.git
synced 2024-11-23 02:56:59 +03:00
Quick and diry CLI
This commit is contained in:
parent
9312b2b671
commit
7ac36beb5d
82
bin/Main.hs
Normal file
82
bin/Main.hs
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
|
|
||||||
|
module Main (main) where
|
||||||
|
|
||||||
|
import Options.Applicative
|
||||||
|
( Parser,
|
||||||
|
auto,
|
||||||
|
execParser,
|
||||||
|
flag,
|
||||||
|
fullDesc,
|
||||||
|
header,
|
||||||
|
help,
|
||||||
|
helper,
|
||||||
|
info,
|
||||||
|
long,
|
||||||
|
metavar,
|
||||||
|
option,
|
||||||
|
progDesc,
|
||||||
|
short,
|
||||||
|
showDefault,
|
||||||
|
str,
|
||||||
|
strArgument,
|
||||||
|
strOption,
|
||||||
|
switch,
|
||||||
|
value,
|
||||||
|
)
|
||||||
|
import System.Environment (getArgs)
|
||||||
|
import Tie (fileWriter, generate)
|
||||||
|
import Prelude hiding (Option)
|
||||||
|
|
||||||
|
data Input = Input
|
||||||
|
{ outputDirectory :: FilePath,
|
||||||
|
moduleName :: Text,
|
||||||
|
packageName :: Text,
|
||||||
|
inputFile :: FilePath
|
||||||
|
}
|
||||||
|
|
||||||
|
options :: Parser Input
|
||||||
|
options =
|
||||||
|
Input
|
||||||
|
<$> option
|
||||||
|
str
|
||||||
|
( long "output"
|
||||||
|
<> short 'o'
|
||||||
|
<> metavar "DIR"
|
||||||
|
<> showDefault
|
||||||
|
<> value "out"
|
||||||
|
)
|
||||||
|
<*> option
|
||||||
|
str
|
||||||
|
( long "module-name"
|
||||||
|
<> metavar "MODULE"
|
||||||
|
<> showDefault
|
||||||
|
<> value "OpenAPI"
|
||||||
|
)
|
||||||
|
<*> option
|
||||||
|
str
|
||||||
|
( long "package-name"
|
||||||
|
<> metavar "PACKAGE"
|
||||||
|
<> showDefault
|
||||||
|
<> value "open-api"
|
||||||
|
)
|
||||||
|
<*> strArgument
|
||||||
|
( metavar "FILE"
|
||||||
|
)
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
Input {..} <-
|
||||||
|
execParser $
|
||||||
|
info
|
||||||
|
(options <**> helper)
|
||||||
|
( fullDesc
|
||||||
|
<> progDesc "Generate a Haskell server from an OpenAPI3 specification"
|
||||||
|
<> header "tie - openapi3 server code generator"
|
||||||
|
)
|
||||||
|
generate
|
||||||
|
(fileWriter outputDirectory)
|
||||||
|
packageName
|
||||||
|
moduleName
|
||||||
|
inputFile
|
16
src/Tie.hs
16
src/Tie.hs
@ -107,12 +107,16 @@ normalize =
|
|||||||
pure (inlineArrayElementTypeName enclosingType)
|
pure (inlineArrayElementTypeName enclosingType)
|
||||||
)
|
)
|
||||||
|
|
||||||
generate :: MonadIO m => Writer m -> FilePath -> m ()
|
generate ::
|
||||||
generate write inputFile = do
|
MonadIO m =>
|
||||||
-- TODO make configurable
|
Writer m ->
|
||||||
let apiName = "OpenAPI"
|
-- | Package name
|
||||||
packageName = "open-api"
|
Text ->
|
||||||
|
-- | Module name
|
||||||
|
Text ->
|
||||||
|
FilePath ->
|
||||||
|
m ()
|
||||||
|
generate write packageName apiName inputFile = do
|
||||||
openApi <- readOpenApiSpec inputFile
|
openApi <- readOpenApiSpec inputFile
|
||||||
|
|
||||||
-- Helper to resolve components in the spec.
|
-- Helper to resolve components in the spec.
|
||||||
|
@ -26,6 +26,7 @@ codegenCabalFile packageName exposedModules =
|
|||||||
"," <+> "http-api-data",
|
"," <+> "http-api-data",
|
||||||
"," <+> "http-types",
|
"," <+> "http-types",
|
||||||
"," <+> "text",
|
"," <+> "text",
|
||||||
|
"," <+> "time",
|
||||||
"," <+> "wai"
|
"," <+> "wai"
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
module Test.Tie.Golden (test_Golden_tests) where
|
module Test.Tie.Golden (test_Golden_tests) where
|
||||||
|
|
||||||
import Data.ByteString.Builder (toLazyByteString)
|
import Data.ByteString.Builder (toLazyByteString)
|
||||||
@ -18,7 +20,11 @@ test_Golden_tests = do
|
|||||||
(replaceExtension input ".yaml.out")
|
(replaceExtension input ".yaml.out")
|
||||||
( do
|
( do
|
||||||
(_, output) <- withTestWriter $ \writer ->
|
(_, output) <- withTestWriter $ \writer ->
|
||||||
generate writer input
|
generate
|
||||||
|
writer
|
||||||
|
"test" -- package name
|
||||||
|
"Test" -- module name
|
||||||
|
input
|
||||||
pure (toLazyByteString output)
|
pure (toLazyByteString output)
|
||||||
)
|
)
|
||||||
| input' <- inputs,
|
| input' <- inputs,
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
OpenAPI/Api.hs
|
Test/Api.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Api where
|
module Test.Api where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -24,11 +24,11 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
import OpenAPI.Schemas.Test
|
import Test.Schemas.Test
|
||||||
|
|
||||||
import OpenAPI.Response.Test
|
import Test.Response.Test
|
||||||
|
|
||||||
data Api m = Api {
|
data Api m = Api {
|
||||||
-- | test
|
-- | test
|
||||||
@ -56,14 +56,14 @@ application run api notFound request respond =
|
|||||||
invalidRequest _ =
|
invalidRequest _ =
|
||||||
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response.hs
|
Test/Response.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response where
|
module Test.Response where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -85,14 +85,14 @@ import qualified Web.HttpApiData
|
|||||||
class ToResponse a where
|
class ToResponse a where
|
||||||
toResponse :: a -> Network.Wai.Response
|
toResponse :: a -> Network.Wai.Response
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/Test.hs
|
Test/Response/Test.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.Test where
|
module Test.Response.Test where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -111,9 +111,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Test
|
import Test.Schemas.Test
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data TestResponse
|
data TestResponse
|
||||||
= TestResponse200 Test
|
= TestResponse200 Test
|
||||||
@ -122,14 +122,14 @@ instance ToResponse TestResponse where
|
|||||||
toResponse (TestResponse200 x) =
|
toResponse (TestResponse200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Test.hs
|
Test/Schemas/Test.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Test where
|
module Test.Schemas.Test where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -171,10 +171,10 @@ instance Data.Aeson.FromJSON Test where
|
|||||||
<$> o Data.Aeson..:? "dateProp"
|
<$> o Data.Aeson..:? "dateProp"
|
||||||
<*> o Data.Aeson..:? "dateTimeProp"
|
<*> o Data.Aeson..:? "dateTimeProp"
|
||||||
---------------------
|
---------------------
|
||||||
open-api.cabal
|
test.cabal
|
||||||
|
|
||||||
cabal-version: 3.0
|
cabal-version: 3.0
|
||||||
name: open-api
|
name: test
|
||||||
version: 0.1.0.0
|
version: 0.1.0.0
|
||||||
library
|
library
|
||||||
build-depends:
|
build-depends:
|
||||||
@ -185,9 +185,10 @@ library
|
|||||||
, http-api-data
|
, http-api-data
|
||||||
, http-types
|
, http-types
|
||||||
, text
|
, text
|
||||||
|
, time
|
||||||
, wai
|
, wai
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
OpenAPI.Api
|
Test.Api
|
||||||
OpenAPI.Response
|
Test.Response
|
||||||
OpenAPI.Response.Test
|
Test.Response.Test
|
||||||
OpenAPI.Schemas.Test
|
Test.Schemas.Test
|
@ -1,11 +1,11 @@
|
|||||||
OpenAPI/Api.hs
|
Test/Api.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Api where
|
module Test.Api where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -24,13 +24,13 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
import OpenAPI.Schemas.Package
|
import Test.Schemas.Package
|
||||||
|
|
||||||
|
|
||||||
import OpenAPI.Response.ListPackages
|
import Test.Response.ListPackages
|
||||||
import OpenAPI.Response.ListPackages
|
import Test.Response.ListPackages
|
||||||
|
|
||||||
data Api m = Api {
|
data Api m = Api {
|
||||||
-- | List all packages
|
-- | List all packages
|
||||||
@ -70,14 +70,14 @@ application run api notFound request respond =
|
|||||||
invalidRequest _ =
|
invalidRequest _ =
|
||||||
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response.hs
|
Test/Response.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response where
|
module Test.Response where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -99,14 +99,14 @@ import qualified Web.HttpApiData
|
|||||||
class ToResponse a where
|
class ToResponse a where
|
||||||
toResponse :: a -> Network.Wai.Response
|
toResponse :: a -> Network.Wai.Response
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/ListPackages.hs
|
Test/Response/ListPackages.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.ListPackages where
|
module Test.Response.ListPackages where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -127,7 +127,7 @@ import qualified Web.HttpApiData
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data ListPackagesResponse
|
data ListPackagesResponse
|
||||||
= ListPackagesResponse200 error: Enum
|
= ListPackagesResponse200 error: Enum
|
||||||
@ -136,14 +136,14 @@ instance ToResponse ListPackagesResponse where
|
|||||||
toResponse (ListPackagesResponse200 x) =
|
toResponse (ListPackagesResponse200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/ListPackages.hs
|
Test/Response/ListPackages.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.ListPackages where
|
module Test.Response.ListPackages where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -162,9 +162,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Package
|
import Test.Schemas.Package
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data ListPackagesResponse
|
data ListPackagesResponse
|
||||||
= ListPackagesResponse200 Package
|
= ListPackagesResponse200 Package
|
||||||
@ -173,14 +173,14 @@ instance ToResponse ListPackagesResponse where
|
|||||||
toResponse (ListPackagesResponse200 x) =
|
toResponse (ListPackagesResponse200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Package.hs
|
Test/Schemas/Package.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Package where
|
module Test.Schemas.Package where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -223,10 +223,10 @@ instance Data.Aeson.FromJSON Package where
|
|||||||
"NPM" -> pure PackageNPM
|
"NPM" -> pure PackageNPM
|
||||||
_ -> fail "invalid enum value"
|
_ -> fail "invalid enum value"
|
||||||
---------------------
|
---------------------
|
||||||
open-api.cabal
|
test.cabal
|
||||||
|
|
||||||
cabal-version: 3.0
|
cabal-version: 3.0
|
||||||
name: open-api
|
name: test
|
||||||
version: 0.1.0.0
|
version: 0.1.0.0
|
||||||
library
|
library
|
||||||
build-depends:
|
build-depends:
|
||||||
@ -237,9 +237,10 @@ library
|
|||||||
, http-api-data
|
, http-api-data
|
||||||
, http-types
|
, http-types
|
||||||
, text
|
, text
|
||||||
|
, time
|
||||||
, wai
|
, wai
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
OpenAPI.Api
|
Test.Api
|
||||||
OpenAPI.Response
|
Test.Response
|
||||||
OpenAPI.Response.ListPackages
|
Test.Response.ListPackages
|
||||||
OpenAPI.Schemas.Package
|
Test.Schemas.Package
|
@ -1,11 +1,11 @@
|
|||||||
OpenAPI/Api.hs
|
Test/Api.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Api where
|
module Test.Api where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -24,15 +24,15 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
import OpenAPI.Schemas.Packages
|
import Test.Schemas.Packages
|
||||||
import OpenAPI.Schemas.Inline
|
import Test.Schemas.Inline
|
||||||
import OpenAPI.Schemas.Package
|
import Test.Schemas.Package
|
||||||
|
|
||||||
import OpenAPI.Response.ListPackages
|
import Test.Response.ListPackages
|
||||||
import OpenAPI.Response.ListPackages3
|
import Test.Response.ListPackages3
|
||||||
import OpenAPI.Response.ListPackages2
|
import Test.Response.ListPackages2
|
||||||
|
|
||||||
data Api m = Api {
|
data Api m = Api {
|
||||||
-- | List all packages
|
-- | List all packages
|
||||||
@ -84,14 +84,14 @@ application run api notFound request respond =
|
|||||||
invalidRequest _ =
|
invalidRequest _ =
|
||||||
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response.hs
|
Test/Response.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response where
|
module Test.Response where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -113,14 +113,14 @@ import qualified Web.HttpApiData
|
|||||||
class ToResponse a where
|
class ToResponse a where
|
||||||
toResponse :: a -> Network.Wai.Response
|
toResponse :: a -> Network.Wai.Response
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/ListPackages.hs
|
Test/Response/ListPackages.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.ListPackages where
|
module Test.Response.ListPackages where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -139,9 +139,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Packages
|
import Test.Schemas.Packages
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data ListPackagesResponse
|
data ListPackagesResponse
|
||||||
= ListPackagesResponse200 Packages
|
= ListPackagesResponse200 Packages
|
||||||
@ -150,14 +150,14 @@ instance ToResponse ListPackagesResponse where
|
|||||||
toResponse (ListPackagesResponse200 x) =
|
toResponse (ListPackagesResponse200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/ListPackages2.hs
|
Test/Response/ListPackages2.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.ListPackages2 where
|
module Test.Response.ListPackages2 where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -176,9 +176,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Package
|
import Test.Schemas.Package
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data ListPackages2Response
|
data ListPackages2Response
|
||||||
= ListPackages2Response200 [ Package ]
|
= ListPackages2Response200 [ Package ]
|
||||||
@ -187,14 +187,14 @@ instance ToResponse ListPackages2Response where
|
|||||||
toResponse (ListPackages2Response200 x) =
|
toResponse (ListPackages2Response200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/ListPackages3.hs
|
Test/Response/ListPackages3.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.ListPackages3 where
|
module Test.Response.ListPackages3 where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -213,9 +213,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Inline
|
import Test.Schemas.Inline
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data ListPackages3Response
|
data ListPackages3Response
|
||||||
= ListPackages3Response200 [ Inline ]
|
= ListPackages3Response200 [ Inline ]
|
||||||
@ -224,14 +224,14 @@ instance ToResponse ListPackages3Response where
|
|||||||
toResponse (ListPackages3Response200 x) =
|
toResponse (ListPackages3Response200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Inline.hs
|
Test/Schemas/Inline.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Inline where
|
module Test.Schemas.Inline where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -270,14 +270,14 @@ instance Data.Aeson.FromJSON InlineElem where
|
|||||||
|
|
||||||
type Inline = [ InlineElem ]
|
type Inline = [ InlineElem ]
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Package.hs
|
Test/Schemas/Package.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Package where
|
module Test.Schemas.Package where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -316,14 +316,14 @@ instance Data.Aeson.FromJSON Package where
|
|||||||
Package
|
Package
|
||||||
<$> o Data.Aeson..:? "name"
|
<$> o Data.Aeson..:? "name"
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Packages.hs
|
Test/Schemas/Packages.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Packages where
|
module Test.Schemas.Packages where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -342,16 +342,16 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Package
|
import Test.Schemas.Package
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
type Packages = [ Package ]
|
type Packages = [ Package ]
|
||||||
---------------------
|
---------------------
|
||||||
open-api.cabal
|
test.cabal
|
||||||
|
|
||||||
cabal-version: 3.0
|
cabal-version: 3.0
|
||||||
name: open-api
|
name: test
|
||||||
version: 0.1.0.0
|
version: 0.1.0.0
|
||||||
library
|
library
|
||||||
build-depends:
|
build-depends:
|
||||||
@ -362,13 +362,14 @@ library
|
|||||||
, http-api-data
|
, http-api-data
|
||||||
, http-types
|
, http-types
|
||||||
, text
|
, text
|
||||||
|
, time
|
||||||
, wai
|
, wai
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
OpenAPI.Api
|
Test.Api
|
||||||
OpenAPI.Response
|
Test.Response
|
||||||
OpenAPI.Response.ListPackages
|
Test.Response.ListPackages
|
||||||
OpenAPI.Response.ListPackages2
|
Test.Response.ListPackages2
|
||||||
OpenAPI.Response.ListPackages3
|
Test.Response.ListPackages3
|
||||||
OpenAPI.Schemas.Inline
|
Test.Schemas.Inline
|
||||||
OpenAPI.Schemas.Package
|
Test.Schemas.Package
|
||||||
OpenAPI.Schemas.Packages
|
Test.Schemas.Packages
|
@ -1,11 +1,11 @@
|
|||||||
OpenAPI/Api.hs
|
Test/Api.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Api where
|
module Test.Api where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -24,15 +24,15 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
import OpenAPI.Schemas.Packages
|
import Test.Schemas.Packages
|
||||||
import OpenAPI.Schemas.Inline2
|
import Test.Schemas.Inline2
|
||||||
import OpenAPI.Schemas.Inline
|
import Test.Schemas.Inline
|
||||||
|
|
||||||
import OpenAPI.Response.ListPackages
|
import Test.Response.ListPackages
|
||||||
import OpenAPI.Response.ListPackages2
|
import Test.Response.ListPackages2
|
||||||
import OpenAPI.Response.ListPackages2
|
import Test.Response.ListPackages2
|
||||||
|
|
||||||
data Api m = Api {
|
data Api m = Api {
|
||||||
-- | List all packages
|
-- | List all packages
|
||||||
@ -84,14 +84,14 @@ application run api notFound request respond =
|
|||||||
invalidRequest _ =
|
invalidRequest _ =
|
||||||
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response.hs
|
Test/Response.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response where
|
module Test.Response where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -113,14 +113,14 @@ import qualified Web.HttpApiData
|
|||||||
class ToResponse a where
|
class ToResponse a where
|
||||||
toResponse :: a -> Network.Wai.Response
|
toResponse :: a -> Network.Wai.Response
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/ListPackages.hs
|
Test/Response/ListPackages.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.ListPackages where
|
module Test.Response.ListPackages where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -139,9 +139,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Packages
|
import Test.Schemas.Packages
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data ListPackagesResponse
|
data ListPackagesResponse
|
||||||
= ListPackagesResponse200 Packages
|
= ListPackagesResponse200 Packages
|
||||||
@ -150,14 +150,14 @@ instance ToResponse ListPackagesResponse where
|
|||||||
toResponse (ListPackagesResponse200 x) =
|
toResponse (ListPackagesResponse200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/ListPackages2.hs
|
Test/Response/ListPackages2.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.ListPackages2 where
|
module Test.Response.ListPackages2 where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -176,9 +176,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Inline
|
import Test.Schemas.Inline
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data ListPackages2Response
|
data ListPackages2Response
|
||||||
= ListPackages2Response200 Inline
|
= ListPackages2Response200 Inline
|
||||||
@ -187,14 +187,14 @@ instance ToResponse ListPackages2Response where
|
|||||||
toResponse (ListPackages2Response200 x) =
|
toResponse (ListPackages2Response200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/ListPackages2.hs
|
Test/Response/ListPackages2.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.ListPackages2 where
|
module Test.Response.ListPackages2 where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -213,9 +213,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Inline2
|
import Test.Schemas.Inline2
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data ListPackages2Response
|
data ListPackages2Response
|
||||||
= ListPackages2Response200 Inline2
|
= ListPackages2Response200 Inline2
|
||||||
@ -224,14 +224,14 @@ instance ToResponse ListPackages2Response where
|
|||||||
toResponse (ListPackages2Response200 x) =
|
toResponse (ListPackages2Response200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Inline.hs
|
Test/Schemas/Inline.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Inline where
|
module Test.Schemas.Inline where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -250,7 +250,7 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Package
|
import Test.Schemas.Package
|
||||||
|
|
||||||
data InlineValue
|
data InlineValue
|
||||||
= InlineValueInlineValueOneOf1 GHC.Types.Int
|
= InlineValueInlineValueOneOf1 GHC.Types.Int
|
||||||
@ -284,14 +284,14 @@ instance Data.Aeson.FromJSON Inline where
|
|||||||
Inline
|
Inline
|
||||||
<$> o Data.Aeson..:? "value"
|
<$> o Data.Aeson..:? "value"
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Inline2.hs
|
Test/Schemas/Inline2.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Inline2 where
|
module Test.Schemas.Inline2 where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -310,7 +310,7 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Package
|
import Test.Schemas.Package
|
||||||
|
|
||||||
data Inline2Value
|
data Inline2Value
|
||||||
= Inline2ValueInline2ValueOneOf1 GHC.Types.Int
|
= Inline2ValueInline2ValueOneOf1 GHC.Types.Int
|
||||||
@ -357,14 +357,14 @@ instance Data.Aeson.FromJSON Inline2 where
|
|||||||
Inline2
|
Inline2
|
||||||
<$> o Data.Aeson..:? "value"
|
<$> o Data.Aeson..:? "value"
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Package.hs
|
Test/Schemas/Package.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Package where
|
module Test.Schemas.Package where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -403,14 +403,14 @@ instance Data.Aeson.FromJSON Package where
|
|||||||
Package
|
Package
|
||||||
<$> o Data.Aeson..:? "name"
|
<$> o Data.Aeson..:? "name"
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Packages.hs
|
Test/Schemas/Packages.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Packages where
|
module Test.Schemas.Packages where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -429,7 +429,7 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Package
|
import Test.Schemas.Package
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -446,10 +446,10 @@ instance Data.Aeson.FromJSON Packages where
|
|||||||
(PackagesPackage <$> Data.Aeson.parseJSON x) Control.Applicative.<|>
|
(PackagesPackage <$> Data.Aeson.parseJSON x) Control.Applicative.<|>
|
||||||
(PackagesPackage <$> Data.Aeson.parseJSON x)
|
(PackagesPackage <$> Data.Aeson.parseJSON x)
|
||||||
---------------------
|
---------------------
|
||||||
open-api.cabal
|
test.cabal
|
||||||
|
|
||||||
cabal-version: 3.0
|
cabal-version: 3.0
|
||||||
name: open-api
|
name: test
|
||||||
version: 0.1.0.0
|
version: 0.1.0.0
|
||||||
library
|
library
|
||||||
build-depends:
|
build-depends:
|
||||||
@ -460,13 +460,14 @@ library
|
|||||||
, http-api-data
|
, http-api-data
|
||||||
, http-types
|
, http-types
|
||||||
, text
|
, text
|
||||||
|
, time
|
||||||
, wai
|
, wai
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
OpenAPI.Api
|
Test.Api
|
||||||
OpenAPI.Response
|
Test.Response
|
||||||
OpenAPI.Response.ListPackages
|
Test.Response.ListPackages
|
||||||
OpenAPI.Response.ListPackages2
|
Test.Response.ListPackages2
|
||||||
OpenAPI.Schemas.Inline
|
Test.Schemas.Inline
|
||||||
OpenAPI.Schemas.Inline2
|
Test.Schemas.Inline2
|
||||||
OpenAPI.Schemas.Package
|
Test.Schemas.Package
|
||||||
OpenAPI.Schemas.Packages
|
Test.Schemas.Packages
|
@ -1,11 +1,11 @@
|
|||||||
OpenAPI/Api.hs
|
Test/Api.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Api where
|
module Test.Api where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -24,14 +24,14 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
import OpenAPI.Schemas.Vehicle
|
import Test.Schemas.Vehicle
|
||||||
import OpenAPI.Schemas.NISE
|
import Test.Schemas.NISE
|
||||||
import OpenAPI.Schemas.Vehicle
|
import Test.Schemas.Vehicle
|
||||||
|
|
||||||
import OpenAPI.Response.GetUser
|
import Test.Response.GetUser
|
||||||
import OpenAPI.Response.CreateUser
|
import Test.Response.CreateUser
|
||||||
|
|
||||||
data Api m = Api {
|
data Api m = Api {
|
||||||
getUser ::
|
getUser ::
|
||||||
@ -118,14 +118,14 @@ application run api notFound request respond =
|
|||||||
invalidRequest _ =
|
invalidRequest _ =
|
||||||
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
respond (Network.Wai.responseBuilder (toEnum 401) [] mempty)
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response.hs
|
Test/Response.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response where
|
module Test.Response where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -147,14 +147,14 @@ import qualified Web.HttpApiData
|
|||||||
class ToResponse a where
|
class ToResponse a where
|
||||||
toResponse :: a -> Network.Wai.Response
|
toResponse :: a -> Network.Wai.Response
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/CreateUser.hs
|
Test/Response/CreateUser.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.CreateUser where
|
module Test.Response.CreateUser where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -173,10 +173,10 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.NISE
|
import Test.Schemas.NISE
|
||||||
import OpenAPI.Schemas.Vehicle
|
import Test.Schemas.Vehicle
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data CreateUserResponse
|
data CreateUserResponse
|
||||||
= CreateUserResponse200 Vehicle
|
= CreateUserResponse200 Vehicle
|
||||||
@ -185,14 +185,14 @@ instance ToResponse CreateUserResponse where
|
|||||||
toResponse (CreateUserResponse200 x) =
|
toResponse (CreateUserResponse200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Response/GetUser.hs
|
Test/Response/GetUser.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Response.GetUser where
|
module Test.Response.GetUser where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -211,9 +211,9 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Vehicle
|
import Test.Schemas.Vehicle
|
||||||
|
|
||||||
import OpenAPI.Response
|
import Test.Response
|
||||||
|
|
||||||
data GetUserResponse
|
data GetUserResponse
|
||||||
= GetUserResponse200 Vehicle
|
= GetUserResponse200 Vehicle
|
||||||
@ -222,14 +222,14 @@ instance ToResponse GetUserResponse where
|
|||||||
toResponse (GetUserResponse200 x) =
|
toResponse (GetUserResponse200 x) =
|
||||||
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
Network.Wai.responseBuilder (toEnum 200) [(Network.HTTP.Types.hContentType, "application/json")] (Data.Aeson.fromEncoding (Data.Aeson.toEncoding x))
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Car.hs
|
Test/Schemas/Car.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Car where
|
module Test.Schemas.Car where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -248,7 +248,7 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Vehicle
|
import Test.Schemas.Vehicle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -280,14 +280,14 @@ instance Data.Aeson.FromJSON Car where
|
|||||||
<*> o Data.Aeson..:? "name"
|
<*> o Data.Aeson..:? "name"
|
||||||
<*> o Data.Aeson..: "type"
|
<*> o Data.Aeson..: "type"
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/NISE.hs
|
Test/Schemas/NISE.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.NISE where
|
module Test.Schemas.NISE where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -306,7 +306,7 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.PackageId
|
import Test.Schemas.PackageId
|
||||||
|
|
||||||
newtype NISEValue = NISEValue
|
newtype NISEValue = NISEValue
|
||||||
{
|
{
|
||||||
@ -352,14 +352,14 @@ instance Data.Aeson.FromJSON NISE where
|
|||||||
<*> o Data.Aeson..: "ports"
|
<*> o Data.Aeson..: "ports"
|
||||||
<*> o Data.Aeson..:? "value"
|
<*> o Data.Aeson..:? "value"
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/PackageId.hs
|
Test/Schemas/PackageId.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.PackageId where
|
module Test.Schemas.PackageId where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -378,8 +378,8 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Car
|
import Test.Schemas.Car
|
||||||
import OpenAPI.Schemas.Plane
|
import Test.Schemas.Plane
|
||||||
|
|
||||||
data PackageIdOneOf4 = PackageIdOneOf4
|
data PackageIdOneOf4 = PackageIdOneOf4
|
||||||
{
|
{
|
||||||
@ -458,14 +458,14 @@ instance Data.Aeson.FromJSON PackageId where
|
|||||||
(PackageIdPackageIdOneOf3 <$> Data.Aeson.parseJSON x) Control.Applicative.<|>
|
(PackageIdPackageIdOneOf3 <$> Data.Aeson.parseJSON x) Control.Applicative.<|>
|
||||||
(PackageIdPackageIdOneOf4 <$> Data.Aeson.parseJSON x)
|
(PackageIdPackageIdOneOf4 <$> Data.Aeson.parseJSON x)
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Plane.hs
|
Test/Schemas/Plane.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Plane where
|
module Test.Schemas.Plane where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -484,8 +484,8 @@ import qualified Network.HTTP.Types
|
|||||||
import qualified Network.Wai
|
import qualified Network.Wai
|
||||||
import qualified Web.HttpApiData
|
import qualified Web.HttpApiData
|
||||||
|
|
||||||
import OpenAPI.Schemas.Car
|
import Test.Schemas.Car
|
||||||
import OpenAPI.Schemas.Vehicle
|
import Test.Schemas.Vehicle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -523,14 +523,14 @@ instance Data.Aeson.FromJSON Plane where
|
|||||||
<*> o Data.Aeson..:? "nb_passengers"
|
<*> o Data.Aeson..:? "nb_passengers"
|
||||||
<*> o Data.Aeson..:? "type"
|
<*> o Data.Aeson..:? "type"
|
||||||
---------------------
|
---------------------
|
||||||
OpenAPI/Schemas/Vehicle.hs
|
Test/Schemas/Vehicle.hs
|
||||||
|
|
||||||
{-# LANGUAGE BangPatterns #-}
|
{-# LANGUAGE BangPatterns #-}
|
||||||
{-# LANGUAGE DuplicateRecordFields #-}
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
module OpenAPI.Schemas.Vehicle where
|
module Test.Schemas.Vehicle where
|
||||||
|
|
||||||
import qualified Control.Applicative
|
import qualified Control.Applicative
|
||||||
import qualified Control.Monad
|
import qualified Control.Monad
|
||||||
@ -578,10 +578,10 @@ instance Data.Aeson.FromJSON Vehicle where
|
|||||||
<*> o Data.Aeson..:? "name"
|
<*> o Data.Aeson..:? "name"
|
||||||
<*> o Data.Aeson..: "type"
|
<*> o Data.Aeson..: "type"
|
||||||
---------------------
|
---------------------
|
||||||
open-api.cabal
|
test.cabal
|
||||||
|
|
||||||
cabal-version: 3.0
|
cabal-version: 3.0
|
||||||
name: open-api
|
name: test
|
||||||
version: 0.1.0.0
|
version: 0.1.0.0
|
||||||
library
|
library
|
||||||
build-depends:
|
build-depends:
|
||||||
@ -592,14 +592,15 @@ library
|
|||||||
, http-api-data
|
, http-api-data
|
||||||
, http-types
|
, http-types
|
||||||
, text
|
, text
|
||||||
|
, time
|
||||||
, wai
|
, wai
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
OpenAPI.Api
|
Test.Api
|
||||||
OpenAPI.Response
|
Test.Response
|
||||||
OpenAPI.Response.CreateUser
|
Test.Response.CreateUser
|
||||||
OpenAPI.Response.GetUser
|
Test.Response.GetUser
|
||||||
OpenAPI.Schemas.Car
|
Test.Schemas.Car
|
||||||
OpenAPI.Schemas.NISE
|
Test.Schemas.NISE
|
||||||
OpenAPI.Schemas.PackageId
|
Test.Schemas.PackageId
|
||||||
OpenAPI.Schemas.Plane
|
Test.Schemas.Plane
|
||||||
OpenAPI.Schemas.Vehicle
|
Test.Schemas.Vehicle
|
14
tie.cabal
14
tie.cabal
@ -71,6 +71,20 @@ library
|
|||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
|
executable tie
|
||||||
|
|
||||||
|
build-depends:
|
||||||
|
base, tie, relude, optparse-applicative
|
||||||
|
|
||||||
|
mixins:
|
||||||
|
base hiding (Prelude),
|
||||||
|
relude (Relude as Prelude),
|
||||||
|
relude
|
||||||
|
|
||||||
|
main-is: Main.hs
|
||||||
|
hs-source-dirs: bin
|
||||||
|
default-language: Haskell2010
|
||||||
|
|
||||||
test-suite tie-tests
|
test-suite tie-tests
|
||||||
type: exitcode-stdio-1.0
|
type: exitcode-stdio-1.0
|
||||||
main-is: Main.hs
|
main-is: Main.hs
|
||||||
|
Loading…
Reference in New Issue
Block a user