openapi-petstore 0.0.3.0 → 0.0.4.0
raw patch · 17 files changed
+1542/−557 lines, 17 filesdep +monad-loggerdep ~containersdep ~http-api-datadep ~katip
Dependencies added: monad-logger
Dependency ranges changed: containers, http-api-data, katip, network
Files
- README.md +1/−1
- lib/OpenAPIPetstore/API/AnotherFake.hs +4/−4
- lib/OpenAPIPetstore/API/Fake.hs +68/−19
- lib/OpenAPIPetstore/API/FakeClassnameTags123.hs +4/−4
- lib/OpenAPIPetstore/API/Pet.hs +8/−12
- lib/OpenAPIPetstore/API/Store.hs +7/−7
- lib/OpenAPIPetstore/API/User.hs +32/−24
- lib/OpenAPIPetstore/Logging.hs +13/−98
- lib/OpenAPIPetstore/LoggingKatip.hs +118/−0
- lib/OpenAPIPetstore/LoggingMonadLogger.hs +127/−0
- lib/OpenAPIPetstore/MimeTypes.hs +52/−0
- lib/OpenAPIPetstore/Model.hs +246/−63
- lib/OpenAPIPetstore/ModelLens.hs +207/−8
- openapi-petstore.cabal +19/−7
- openapi.yaml +582/−298
- tests/Instances.hs +51/−10
- tests/Test.hs +3/−2
README.md view
@@ -73,7 +73,7 @@ | modelDeriving | Additional classes to include in the deriving() clause of Models | | | | requestType | Set the name of the type used to generate requests | | OpenAPIPetstoreRequest | | strictFields | Add strictness annotations to all model fields | true | true |-| useMonadLogger | Use the monad-logger package to provide logging (if instead false, use the katip logging package) | false | false |+| useKatip | Sets the default value for the UseKatip cabal flag. If true, the katip package provides logging instead of monad-logger | true | true | [1]: https://www.stackage.org/haddock/lts-9.0/iso8601-time-0.1.4/Data-Time-ISO8601.html#v:formatISO8601Millis
lib/OpenAPIPetstore/API/AnotherFake.hs view
@@ -67,15 +67,15 @@ -- op123testSpecialTags :: (Consumes Op123testSpecialTags MimeJSON, MimeRender MimeJSON Client)- => Client -- ^ "client" - client model+ => Client -- ^ "body" - client model -> OpenAPIPetstoreRequest Op123testSpecialTags MimeJSON Client MimeJSON-op123testSpecialTags client =+op123testSpecialTags body = _mkRequest "PATCH" ["/another-fake/dummy"]- `setBodyParam` client+ `setBodyParam` body data Op123testSpecialTags --- | /Body Param/ "Client" - client model+-- | /Body Param/ "body" - client model instance HasBodyParam Op123testSpecialTags Client -- | @application/json@
lib/OpenAPIPetstore/API/Fake.hs view
@@ -57,6 +57,44 @@ -- ** Fake +-- *** createXmlItem++-- | @POST \/fake\/create_xml_item@+-- +-- creates an XmlItem+-- +-- this route creates an XmlItem+-- +createXmlItem + :: (Consumes CreateXmlItem contentType, MimeRender contentType XmlItem)+ => ContentType contentType -- ^ request content-type ('MimeType')+ -> XmlItem -- ^ "xmlItem" - XmlItem Body+ -> OpenAPIPetstoreRequest CreateXmlItem contentType NoContent MimeNoContent+createXmlItem _ xmlItem =+ _mkRequest "POST" ["/fake/create_xml_item"]+ `setBodyParam` xmlItem++data CreateXmlItem ++-- | /Body Param/ "XmlItem" - XmlItem Body+instance HasBodyParam CreateXmlItem XmlItem ++-- | @application/xml@+instance Consumes CreateXmlItem MimeXML+-- | @text/xml@+instance Consumes CreateXmlItem MimeTextxml+-- | @text/xml; charset=utf-8@+instance Consumes CreateXmlItem MimeTextxmlCharsetutf8+-- | @text/xml; charset=utf-16@+instance Consumes CreateXmlItem MimeTextxmlCharsetutf16+-- | @application/xml; charset=utf-8@+instance Consumes CreateXmlItem MimeXmlCharsetutf8+-- | @application/xml; charset=utf-16@+instance Consumes CreateXmlItem MimeXmlCharsetutf16++instance Produces CreateXmlItem MimeNoContent++ -- *** fakeOuterBooleanSerialize -- | @POST \/fake\/outer\/boolean@@@ -75,6 +113,9 @@ -- | /Body Param/ "body" - Input boolean as post body instance HasBodyParam FakeOuterBooleanSerialize BodyBool + +-- | @*/*@+instance MimeType mtype => Consumes FakeOuterBooleanSerialize mtype -- | @*/*@ instance MimeType mtype => Produces FakeOuterBooleanSerialize mtype@@ -96,8 +137,11 @@ data FakeOuterCompositeSerialize --- | /Body Param/ "OuterComposite" - Input composite as post body+-- | /Body Param/ "body" - Input composite as post body instance HasBodyParam FakeOuterCompositeSerialize OuterComposite + +-- | @*/*@+instance MimeType mtype => Consumes FakeOuterCompositeSerialize mtype -- | @*/*@ instance MimeType mtype => Produces FakeOuterCompositeSerialize mtype@@ -120,7 +164,10 @@ data FakeOuterNumberSerialize -- | /Body Param/ "body" - Input number as post body-instance HasBodyParam FakeOuterNumberSerialize Body +instance HasBodyParam FakeOuterNumberSerialize BodyDouble + +-- | @*/*@+instance MimeType mtype => Consumes FakeOuterNumberSerialize mtype -- | @*/*@ instance MimeType mtype => Produces FakeOuterNumberSerialize mtype@@ -144,6 +191,9 @@ -- | /Body Param/ "body" - Input string as post body instance HasBodyParam FakeOuterStringSerialize BodyText + +-- | @*/*@+instance MimeType mtype => Consumes FakeOuterStringSerialize mtype -- | @*/*@ instance MimeType mtype => Produces FakeOuterStringSerialize mtype@@ -157,11 +207,11 @@ -- testBodyWithFileSchema :: (Consumes TestBodyWithFileSchema MimeJSON, MimeRender MimeJSON FileSchemaTestClass)- => FileSchemaTestClass -- ^ "fileSchemaTestClass"+ => FileSchemaTestClass -- ^ "body" -> OpenAPIPetstoreRequest TestBodyWithFileSchema MimeJSON NoContent MimeNoContent-testBodyWithFileSchema fileSchemaTestClass =+testBodyWithFileSchema body = _mkRequest "PUT" ["/fake/body-with-file-schema"]- `setBodyParam` fileSchemaTestClass+ `setBodyParam` body data TestBodyWithFileSchema instance HasBodyParam TestBodyWithFileSchema FileSchemaTestClass @@ -178,12 +228,12 @@ -- testBodyWithQueryParams :: (Consumes TestBodyWithQueryParams MimeJSON, MimeRender MimeJSON User)- => User -- ^ "user"+ => User -- ^ "body" -> Query -- ^ "query" -> OpenAPIPetstoreRequest TestBodyWithQueryParams MimeJSON NoContent MimeNoContent-testBodyWithQueryParams user (Query query) =+testBodyWithQueryParams body (Query query) = _mkRequest "PUT" ["/fake/body-with-query-params"]- `setBodyParam` user+ `setBodyParam` body `setQuery` toQuery ("query", Just query) data TestBodyWithQueryParams @@ -205,15 +255,15 @@ -- testClientModel :: (Consumes TestClientModel MimeJSON, MimeRender MimeJSON Client)- => Client -- ^ "client" - client model+ => Client -- ^ "body" - client model -> OpenAPIPetstoreRequest TestClientModel MimeJSON Client MimeJSON-testClientModel client =+testClientModel body = _mkRequest "PATCH" ["/fake"]- `setBodyParam` client+ `setBodyParam` body data TestClientModel --- | /Body Param/ "Client" - client model+-- | /Body Param/ "body" - client model instance HasBodyParam TestClientModel Client -- | @application/json@@@ -403,7 +453,6 @@ instance HasOptionalParam TestGroupParameters Int64Group where applyOptionalParam req (Int64Group xs) = req `setQuery` toQuery ("int64_group", Just xs)- instance Produces TestGroupParameters MimeNoContent @@ -414,17 +463,17 @@ -- test inline additionalProperties -- testInlineAdditionalProperties - :: (Consumes TestInlineAdditionalProperties MimeJSON, MimeRender MimeJSON RequestBody)- => RequestBody -- ^ "requestBody" - request body+ :: (Consumes TestInlineAdditionalProperties MimeJSON, MimeRender MimeJSON ParamMapMapStringText)+ => ParamMapMapStringText -- ^ "param" - request body -> OpenAPIPetstoreRequest TestInlineAdditionalProperties MimeJSON NoContent MimeNoContent-testInlineAdditionalProperties requestBody =+testInlineAdditionalProperties param = _mkRequest "POST" ["/fake/inline-additionalProperties"]- `setBodyParam` requestBody+ `setBodyParam` param data TestInlineAdditionalProperties --- | /Body Param/ "request_body" - request body-instance HasBodyParam TestInlineAdditionalProperties RequestBody +-- | /Body Param/ "param" - request body+instance HasBodyParam TestInlineAdditionalProperties ParamMapMapStringText -- | @application/json@ instance Consumes TestInlineAdditionalProperties MimeJSON
lib/OpenAPIPetstore/API/FakeClassnameTags123.hs view
@@ -69,16 +69,16 @@ -- testClassname :: (Consumes TestClassname MimeJSON, MimeRender MimeJSON Client)- => Client -- ^ "client" - client model+ => Client -- ^ "body" - client model -> OpenAPIPetstoreRequest TestClassname MimeJSON Client MimeJSON-testClassname client =+testClassname body = _mkRequest "PATCH" ["/fake_classname_test"] `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyApiKeyQuery)- `setBodyParam` client+ `setBodyParam` body data TestClassname --- | /Body Param/ "Client" - client model+-- | /Body Param/ "body" - client model instance HasBodyParam TestClassname Client -- | @application/json@
lib/OpenAPIPetstore/API/Pet.hs view
@@ -68,16 +68,16 @@ addPet :: (Consumes AddPet contentType, MimeRender contentType Pet) => ContentType contentType -- ^ request content-type ('MimeType')- -> Pet -- ^ "pet" - Pet object that needs to be added to the store+ -> Pet -- ^ "body" - Pet object that needs to be added to the store -> OpenAPIPetstoreRequest AddPet contentType NoContent MimeNoContent-addPet _ pet =+addPet _ body = _mkRequest "POST" ["/pet"] `_hasAuthType` (P.Proxy :: P.Proxy AuthOAuthPetstoreAuth)- `setBodyParam` pet+ `setBodyParam` body data AddPet --- | /Body Param/ "Pet" - Pet object that needs to be added to the store+-- | /Body Param/ "body" - Pet object that needs to be added to the store instance HasBodyParam AddPet Pet -- | @application/xml@@@ -107,7 +107,6 @@ instance HasOptionalParam DeletePet ApiKey where applyOptionalParam req (ApiKey xs) = req `setHeader` toHeader ("api_key", xs)- instance Produces DeletePet MimeNoContent @@ -131,7 +130,6 @@ `setQuery` toQueryColl CommaSeparated ("status", Just status) data FindPetsByStatus - -- | @application/xml@ instance Produces FindPetsByStatus MimeXML -- | @application/json@@@ -160,7 +158,6 @@ {-# DEPRECATED findPetsByTags "" #-} data FindPetsByTags - -- | @application/xml@ instance Produces FindPetsByTags MimeXML -- | @application/json@@@ -186,7 +183,6 @@ `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyApiKey) data GetPetById - -- | @application/xml@ instance Produces GetPetById MimeXML -- | @application/json@@@ -204,16 +200,16 @@ updatePet :: (Consumes UpdatePet contentType, MimeRender contentType Pet) => ContentType contentType -- ^ request content-type ('MimeType')- -> Pet -- ^ "pet" - Pet object that needs to be added to the store+ -> Pet -- ^ "body" - Pet object that needs to be added to the store -> OpenAPIPetstoreRequest UpdatePet contentType NoContent MimeNoContent-updatePet _ pet =+updatePet _ body = _mkRequest "PUT" ["/pet"] `_hasAuthType` (P.Proxy :: P.Proxy AuthOAuthPetstoreAuth)- `setBodyParam` pet+ `setBodyParam` body data UpdatePet --- | /Body Param/ "Pet" - Pet object that needs to be added to the store+-- | /Body Param/ "body" - Pet object that needs to be added to the store instance HasBodyParam UpdatePet Pet -- | @application/xml@
lib/OpenAPIPetstore/API/Store.hs view
@@ -72,7 +72,6 @@ _mkRequest "DELETE" ["/store/order/",toPath orderId] data DeleteOrder - instance Produces DeleteOrder MimeNoContent @@ -93,7 +92,6 @@ `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyApiKey) data GetInventory - -- | @application/json@ instance Produces GetInventory MimeJSON @@ -114,7 +112,6 @@ _mkRequest "GET" ["/store/order/",toPath orderId] data GetOrderById - -- | @application/xml@ instance Produces GetOrderById MimeXML -- | @application/json@@@ -131,16 +128,19 @@ :: (Consumes PlaceOrder contentType, MimeRender contentType Order) => ContentType contentType -- ^ request content-type ('MimeType') -> Accept accept -- ^ request accept ('MimeType')- -> Order -- ^ "order" - order placed for purchasing the pet+ -> Order -- ^ "body" - order placed for purchasing the pet -> OpenAPIPetstoreRequest PlaceOrder contentType Order accept-placeOrder _ _ order =+placeOrder _ _ body = _mkRequest "POST" ["/store/order"]- `setBodyParam` order+ `setBodyParam` body data PlaceOrder --- | /Body Param/ "Order" - order placed for purchasing the pet+-- | /Body Param/ "body" - order placed for purchasing the pet instance HasBodyParam PlaceOrder Order + +-- | @*/*@+instance MimeType mtype => Consumes PlaceOrder mtype -- | @application/xml@ instance Produces PlaceOrder MimeXML
lib/OpenAPIPetstore/API/User.hs view
@@ -68,16 +68,19 @@ createUser :: (Consumes CreateUser contentType, MimeRender contentType User) => ContentType contentType -- ^ request content-type ('MimeType')- -> User -- ^ "user" - Created user object+ -> User -- ^ "body" - Created user object -> OpenAPIPetstoreRequest CreateUser contentType NoContent MimeNoContent-createUser _ user =+createUser _ body = _mkRequest "POST" ["/user"]- `setBodyParam` user+ `setBodyParam` body data CreateUser --- | /Body Param/ "User" - Created user object+-- | /Body Param/ "body" - Created user object instance HasBodyParam CreateUser User + +-- | @*/*@+instance MimeType mtype => Consumes CreateUser mtype instance Produces CreateUser MimeNoContent @@ -89,18 +92,21 @@ -- Creates list of users with given input array -- createUsersWithArrayInput - :: (Consumes CreateUsersWithArrayInput contentType, MimeRender contentType User2)+ :: (Consumes CreateUsersWithArrayInput contentType, MimeRender contentType Body) => ContentType contentType -- ^ request content-type ('MimeType')- -> User2 -- ^ "user" - List of user object+ -> Body -- ^ "body" - List of user object -> OpenAPIPetstoreRequest CreateUsersWithArrayInput contentType NoContent MimeNoContent-createUsersWithArrayInput _ user =+createUsersWithArrayInput _ body = _mkRequest "POST" ["/user/createWithArray"]- `setBodyParam` user+ `setBodyParam` body data CreateUsersWithArrayInput --- | /Body Param/ "User" - List of user object-instance HasBodyParam CreateUsersWithArrayInput User2 +-- | /Body Param/ "body" - List of user object+instance HasBodyParam CreateUsersWithArrayInput Body + +-- | @*/*@+instance MimeType mtype => Consumes CreateUsersWithArrayInput mtype instance Produces CreateUsersWithArrayInput MimeNoContent @@ -112,18 +118,21 @@ -- Creates list of users with given input array -- createUsersWithListInput - :: (Consumes CreateUsersWithListInput contentType, MimeRender contentType User2)+ :: (Consumes CreateUsersWithListInput contentType, MimeRender contentType Body) => ContentType contentType -- ^ request content-type ('MimeType')- -> User2 -- ^ "user" - List of user object+ -> Body -- ^ "body" - List of user object -> OpenAPIPetstoreRequest CreateUsersWithListInput contentType NoContent MimeNoContent-createUsersWithListInput _ user =+createUsersWithListInput _ body = _mkRequest "POST" ["/user/createWithList"]- `setBodyParam` user+ `setBodyParam` body data CreateUsersWithListInput --- | /Body Param/ "User" - List of user object-instance HasBodyParam CreateUsersWithListInput User2 +-- | /Body Param/ "body" - List of user object+instance HasBodyParam CreateUsersWithListInput Body + +-- | @*/*@+instance MimeType mtype => Consumes CreateUsersWithListInput mtype instance Produces CreateUsersWithListInput MimeNoContent @@ -143,7 +152,6 @@ _mkRequest "DELETE" ["/user/",toPath username] data DeleteUser - instance Produces DeleteUser MimeNoContent @@ -161,7 +169,6 @@ _mkRequest "GET" ["/user/",toPath username] data GetUserByName - -- | @application/xml@ instance Produces GetUserByName MimeXML -- | @application/json@@@ -185,7 +192,6 @@ `setQuery` toQuery ("password", Just password) data LoginUser - -- | @application/xml@ instance Produces LoginUser MimeXML -- | @application/json@@@ -204,7 +210,6 @@ _mkRequest "GET" ["/user/logout"] data LogoutUser - instance Produces LogoutUser MimeNoContent @@ -219,17 +224,20 @@ updateUser :: (Consumes UpdateUser contentType, MimeRender contentType User) => ContentType contentType -- ^ request content-type ('MimeType')- -> User -- ^ "user" - Updated user object+ -> User -- ^ "body" - Updated user object -> Username -- ^ "username" - name that need to be deleted -> OpenAPIPetstoreRequest UpdateUser contentType NoContent MimeNoContent-updateUser _ user (Username username) =+updateUser _ body (Username username) = _mkRequest "PUT" ["/user/",toPath username]- `setBodyParam` user+ `setBodyParam` body data UpdateUser --- | /Body Param/ "User" - Updated user object+-- | /Body Param/ "body" - Updated user object instance HasBodyParam UpdateUser User + +-- | @*/*@+instance MimeType mtype => Consumes UpdateUser mtype instance Produces UpdateUser MimeNoContent
lib/OpenAPIPetstore/Logging.hs view
@@ -10,109 +10,24 @@ {-| Module : OpenAPIPetstore.Logging-Katip Logging functions+Logging functions -}--{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE ScopedTypeVariables #-}--module OpenAPIPetstore.Logging where--import qualified Control.Exception.Safe as E-import qualified Control.Monad.IO.Class as P-import qualified Control.Monad.Trans.Reader as P-import qualified Data.Text as T-import qualified Lens.Micro as L-import qualified System.IO as IO--import Data.Text (Text)-import GHC.Exts (IsString(..))--import qualified Katip as LG---- * Type Aliases (for compatibility)---- | Runs a Katip logging block with the Log environment-type LogExecWithContext = forall m. P.MonadIO m =>- LogContext -> LogExec m---- | A Katip logging block-type LogExec m = forall a. LG.KatipT m a -> m a---- | A Katip Log environment-type LogContext = LG.LogEnv---- | A Katip Log severity-type LogLevel = LG.Severity---- * default logger---- | the default log environment-initLogContext :: IO LogContext-initLogContext = LG.initLogEnv "OpenAPIPetstore" "dev"---- | Runs a Katip logging block with the Log environment-runDefaultLogExecWithContext :: LogExecWithContext-runDefaultLogExecWithContext = LG.runKatipT---- * stdout logger---- | Runs a Katip logging block with the Log environment-stdoutLoggingExec :: LogExecWithContext-stdoutLoggingExec = runDefaultLogExecWithContext---- | A Katip Log environment which targets stdout-stdoutLoggingContext :: LogContext -> IO LogContext-stdoutLoggingContext cxt = do- handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stdout LG.InfoS LG.V2- LG.registerScribe "stdout" handleScribe LG.defaultScribeSettings cxt---- * stderr logger---- | Runs a Katip logging block with the Log environment-stderrLoggingExec :: LogExecWithContext-stderrLoggingExec = runDefaultLogExecWithContext---- | A Katip Log environment which targets stderr-stderrLoggingContext :: LogContext -> IO LogContext-stderrLoggingContext cxt = do- handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stderr LG.InfoS LG.V2- LG.registerScribe "stderr" handleScribe LG.defaultScribeSettings cxt---- * Null logger---- | Disables Katip logging-runNullLogExec :: LogExecWithContext-runNullLogExec le (LG.KatipT f) = P.runReaderT f (L.set LG.logEnvScribes mempty le)---- * Log Msg---- | Log a katip message-_log :: (Applicative m, LG.Katip m) => Text -> LogLevel -> Text -> m ()-_log src level msg = do- LG.logMsg (fromString $ T.unpack src) level (LG.logStr msg)+{-# LANGUAGE CPP #-} --- * Log Exceptions+#ifdef USE_KATIP --- | re-throws exceptions after logging them-logExceptions- :: (LG.Katip m, E.MonadCatch m, Applicative m)- => Text -> m a -> m a-logExceptions src =- E.handle- (\(e :: E.SomeException) -> do- _log src LG.ErrorS ((T.pack . show) e)- E.throw e)+module OpenAPIPetstore.Logging+ ( module OpenAPIPetstore.LoggingKatip+ ) where --- * Log Level+import OpenAPIPetstore.LoggingKatip -levelInfo :: LogLevel-levelInfo = LG.InfoS+#else -levelError :: LogLevel-levelError = LG.ErrorS+module OpenAPIPetstore.Logging+ ( module OpenAPIPetstore.LoggingMonadLogger+ ) where -levelDebug :: LogLevel-levelDebug = LG.DebugS+import OpenAPIPetstore.LoggingMonadLogger +#endif
+ lib/OpenAPIPetstore/LoggingKatip.hs view
@@ -0,0 +1,118 @@+{-+ OpenAPI Petstore++ This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\++ OpenAPI Version: 3.0.1+ OpenAPI Petstore API version: 1.0.0+ Generated by OpenAPI Generator (https://openapi-generator.tech)+-}++{-|+Module : OpenAPIPetstore.LoggingKatip+Katip Logging functions+-}++{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}++module OpenAPIPetstore.LoggingKatip where++import qualified Control.Exception.Safe as E+import qualified Control.Monad.IO.Class as P+import qualified Control.Monad.Trans.Reader as P+import qualified Data.Text as T+import qualified Lens.Micro as L+import qualified System.IO as IO++import Data.Text (Text)+import GHC.Exts (IsString(..))++import qualified Katip as LG++-- * Type Aliases (for compatibility)++-- | Runs a Katip logging block with the Log environment+type LogExecWithContext = forall m. P.MonadIO m =>+ LogContext -> LogExec m++-- | A Katip logging block+type LogExec m = forall a. LG.KatipT m a -> m a++-- | A Katip Log environment+type LogContext = LG.LogEnv++-- | A Katip Log severity+type LogLevel = LG.Severity++-- * default logger++-- | the default log environment+initLogContext :: IO LogContext+initLogContext = LG.initLogEnv "OpenAPIPetstore" "dev"++-- | Runs a Katip logging block with the Log environment+runDefaultLogExecWithContext :: LogExecWithContext+runDefaultLogExecWithContext = LG.runKatipT++-- * stdout logger++-- | Runs a Katip logging block with the Log environment+stdoutLoggingExec :: LogExecWithContext+stdoutLoggingExec = runDefaultLogExecWithContext++-- | A Katip Log environment which targets stdout+stdoutLoggingContext :: LogContext -> IO LogContext+stdoutLoggingContext cxt = do+ handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stdout (LG.permitItem LG.InfoS) LG.V2+ LG.registerScribe "stdout" handleScribe LG.defaultScribeSettings cxt++-- * stderr logger++-- | Runs a Katip logging block with the Log environment+stderrLoggingExec :: LogExecWithContext+stderrLoggingExec = runDefaultLogExecWithContext++-- | A Katip Log environment which targets stderr+stderrLoggingContext :: LogContext -> IO LogContext+stderrLoggingContext cxt = do+ handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stderr (LG.permitItem LG.InfoS) LG.V2+ LG.registerScribe "stderr" handleScribe LG.defaultScribeSettings cxt++-- * Null logger++-- | Disables Katip logging+runNullLogExec :: LogExecWithContext+runNullLogExec le (LG.KatipT f) = P.runReaderT f (L.set LG.logEnvScribes mempty le)++-- * Log Msg++-- | Log a katip message+_log :: (Applicative m, LG.Katip m) => Text -> LogLevel -> Text -> m ()+_log src level msg = do+ LG.logMsg (fromString $ T.unpack src) level (LG.logStr msg)++-- * Log Exceptions++-- | re-throws exceptions after logging them+logExceptions+ :: (LG.Katip m, E.MonadCatch m, Applicative m)+ => Text -> m a -> m a+logExceptions src =+ E.handle+ (\(e :: E.SomeException) -> do+ _log src LG.ErrorS ((T.pack . show) e)+ E.throw e)++-- * Log Level++levelInfo :: LogLevel+levelInfo = LG.InfoS++levelError :: LogLevel+levelError = LG.ErrorS++levelDebug :: LogLevel+levelDebug = LG.DebugS+
+ lib/OpenAPIPetstore/LoggingMonadLogger.hs view
@@ -0,0 +1,127 @@+{-+ OpenAPI Petstore++ This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\++ OpenAPI Version: 3.0.1+ OpenAPI Petstore API version: 1.0.0+ Generated by OpenAPI Generator (https://openapi-generator.tech)+-}++{-|+Module : OpenAPIPetstore.LoggingMonadLogger+monad-logger Logging functions+-}++{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}++module OpenAPIPetstore.LoggingMonadLogger where++import qualified Control.Exception.Safe as E+import qualified Control.Monad.IO.Class as P+import qualified Data.Text as T+import qualified Data.Time as TI++import Data.Monoid ((<>))+import Data.Text (Text)++import qualified Control.Monad.Logger as LG++-- * Type Aliases (for compatibility)++-- | Runs a monad-logger block with the filter predicate+type LogExecWithContext = forall m. P.MonadIO m =>+ LogContext -> LogExec m++-- | A monad-logger block+type LogExec m = forall a. LG.LoggingT m a -> m a++-- | A monad-logger filter predicate+type LogContext = LG.LogSource -> LG.LogLevel -> Bool++-- | A monad-logger log level+type LogLevel = LG.LogLevel++-- * default logger++-- | the default log environment+initLogContext :: IO LogContext+initLogContext = pure infoLevelFilter++-- | Runs a monad-logger block with the filter predicate+runDefaultLogExecWithContext :: LogExecWithContext+runDefaultLogExecWithContext = runNullLogExec++-- * stdout logger++-- | Runs a monad-logger block targeting stdout, with the filter predicate+stdoutLoggingExec :: LogExecWithContext+stdoutLoggingExec cxt = LG.runStdoutLoggingT . LG.filterLogger cxt++-- | @pure@+stdoutLoggingContext :: LogContext -> IO LogContext+stdoutLoggingContext = pure++-- * stderr logger++-- | Runs a monad-logger block targeting stderr, with the filter predicate+stderrLoggingExec :: LogExecWithContext+stderrLoggingExec cxt = LG.runStderrLoggingT . LG.filterLogger cxt++-- | @pure@+stderrLoggingContext :: LogContext -> IO LogContext+stderrLoggingContext = pure++-- * Null logger++-- | Disables monad-logger logging+runNullLogExec :: LogExecWithContext+runNullLogExec = const (`LG.runLoggingT` nullLogger)++-- | monad-logger which does nothing+nullLogger :: LG.Loc -> LG.LogSource -> LG.LogLevel -> LG.LogStr -> IO ()+nullLogger _ _ _ _ = return ()++-- * Log Msg++-- | Log a message using the current time+_log :: (P.MonadIO m, LG.MonadLogger m) => Text -> LG.LogLevel -> Text -> m ()+_log src level msg = do+ now <- P.liftIO (formatTimeLog <$> TI.getCurrentTime)+ LG.logOtherNS ("OpenAPIPetstore." <> src) level ("[" <> now <> "] " <> msg)+ where+ formatTimeLog =+ T.pack . TI.formatTime TI.defaultTimeLocale "%Y-%m-%dT%H:%M:%S%Z"++-- * Log Exceptions++-- | re-throws exceptions after logging them+logExceptions+ :: (LG.MonadLogger m, E.MonadCatch m, P.MonadIO m)+ => Text -> m a -> m a+logExceptions src =+ E.handle+ (\(e :: E.SomeException) -> do+ _log src LG.LevelError ((T.pack . show) e)+ E.throw e)++-- * Log Level++levelInfo :: LogLevel+levelInfo = LG.LevelInfo++levelError :: LogLevel+levelError = LG.LevelError++levelDebug :: LogLevel+levelDebug = LG.LevelDebug++-- * Level Filter++minLevelFilter :: LG.LogLevel -> LG.LogSource -> LG.LogLevel -> Bool+minLevelFilter l _ l' = l' >= l++infoLevelFilter :: LG.LogSource -> LG.LogLevel -> Bool+infoLevelFilter = minLevelFilter LG.LevelInfo
lib/OpenAPIPetstore/MimeTypes.hs view
@@ -201,3 +201,55 @@ instance MimeUnrender MimeNoContent NoContent where mimeUnrender _ = P.Right . P.const NoContent +-- * Custom Mime Types++-- ** MimeXmlCharsetutf16++data MimeXmlCharsetutf16 = MimeXmlCharsetutf16 deriving (P.Typeable)++-- | @application/xml; charset=utf-16@+instance MimeType MimeXmlCharsetutf16 where+ mimeType _ = Just $ P.fromString "application/xml; charset=utf-16"+-- instance MimeRender MimeXmlCharsetutf16 T.Text where mimeRender _ = undefined+-- instance MimeUnrender MimeXmlCharsetutf16 T.Text where mimeUnrender _ = undefined++-- ** MimeXmlCharsetutf8++data MimeXmlCharsetutf8 = MimeXmlCharsetutf8 deriving (P.Typeable)++-- | @application/xml; charset=utf-8@+instance MimeType MimeXmlCharsetutf8 where+ mimeType _ = Just $ P.fromString "application/xml; charset=utf-8"+-- instance MimeRender MimeXmlCharsetutf8 T.Text where mimeRender _ = undefined+-- instance MimeUnrender MimeXmlCharsetutf8 T.Text where mimeUnrender _ = undefined++-- ** MimeTextxml++data MimeTextxml = MimeTextxml deriving (P.Typeable)++-- | @text/xml@+instance MimeType MimeTextxml where+ mimeType _ = Just $ P.fromString "text/xml"+-- instance MimeRender MimeTextxml T.Text where mimeRender _ = undefined+-- instance MimeUnrender MimeTextxml T.Text where mimeUnrender _ = undefined++-- ** MimeTextxmlCharsetutf16++data MimeTextxmlCharsetutf16 = MimeTextxmlCharsetutf16 deriving (P.Typeable)++-- | @text/xml; charset=utf-16@+instance MimeType MimeTextxmlCharsetutf16 where+ mimeType _ = Just $ P.fromString "text/xml; charset=utf-16"+-- instance MimeRender MimeTextxmlCharsetutf16 T.Text where mimeRender _ = undefined+-- instance MimeUnrender MimeTextxmlCharsetutf16 T.Text where mimeUnrender _ = undefined++-- ** MimeTextxmlCharsetutf8++data MimeTextxmlCharsetutf8 = MimeTextxmlCharsetutf8 deriving (P.Typeable)++-- | @text/xml; charset=utf-8@+instance MimeType MimeTextxmlCharsetutf8 where+ mimeType _ = Just $ P.fromString "text/xml; charset=utf-8"+-- instance MimeRender MimeTextxmlCharsetutf8 T.Text where mimeRender _ = undefined+-- instance MimeUnrender MimeTextxmlCharsetutf8 T.Text where mimeUnrender _ = undefined+
lib/OpenAPIPetstore/Model.hs view
@@ -73,11 +73,14 @@ newtype ApiKey = ApiKey { unApiKey :: Text } deriving (P.Eq, P.Show) -- ** Body-newtype Body = Body { unBody :: Double } deriving (P.Eq, P.Show, A.ToJSON)+newtype Body = Body { unBody :: [User] } deriving (P.Eq, P.Show, A.ToJSON) -- ** BodyBool newtype BodyBool = BodyBool { unBodyBool :: Bool } deriving (P.Eq, P.Show, A.ToJSON) +-- ** BodyDouble+newtype BodyDouble = BodyDouble { unBodyDouble :: Double } deriving (P.Eq, P.Show, A.ToJSON)+ -- ** BodyText newtype BodyText = BodyText { unBodyText :: Text } deriving (P.Eq, P.Show, A.ToJSON) @@ -162,6 +165,9 @@ -- ** ParamInteger newtype ParamInteger = ParamInteger { unParamInteger :: Int } deriving (P.Eq, P.Show) +-- ** ParamMapMapStringText+newtype ParamMapMapStringText = ParamMapMapStringText { unParamMapMapStringText :: (Map.Map String Text) } deriving (P.Eq, P.Show, A.ToJSON)+ -- ** ParamString newtype ParamString = ParamString { unParamString :: Text } deriving (P.Eq, P.Show) @@ -177,9 +183,6 @@ -- ** Query newtype Query = Query { unQuery :: Text } deriving (P.Eq, P.Show) --- ** RequestBody-newtype RequestBody = RequestBody { unRequestBody :: (Map.Map String Text) } deriving (P.Eq, P.Show, A.ToJSON)- -- ** RequiredBooleanGroup newtype RequiredBooleanGroup = RequiredBooleanGroup { unRequiredBooleanGroup :: Bool } deriving (P.Eq, P.Show) @@ -204,9 +207,6 @@ -- ** Tags newtype Tags = Tags { unTags :: [Text] } deriving (P.Eq, P.Show) --- ** User2-newtype User2 = User2 { unUser2 :: [User] } deriving (P.Eq, P.Show, A.ToJSON)- -- ** Username newtype Username = Username { unUsername :: Text } deriving (P.Eq, P.Show) @@ -278,34 +278,6 @@ , animalColor = Nothing } --- ** AnimalFarm--- | AnimalFarm-data AnimalFarm = AnimalFarm- { - } deriving (P.Show, P.Eq, P.Typeable)---- | FromJSON AnimalFarm-instance A.FromJSON AnimalFarm where- parseJSON = A.withObject "AnimalFarm" $ \o ->- pure AnimalFarm- ---- | ToJSON AnimalFarm-instance A.ToJSON AnimalFarm where- toJSON AnimalFarm =- _omitNulls- [ - ]----- | Construct a value of type 'AnimalFarm' (by applying it's required fields, if any)-mkAnimalFarm- :: AnimalFarm-mkAnimalFarm =- AnimalFarm- { - }- -- ** ApiResponse -- | ApiResponse data ApiResponse = ApiResponse@@ -1326,34 +1298,6 @@ { specialModelNameSpecialPropertyName = Nothing } --- ** StringBooleanMap--- | StringBooleanMap-data StringBooleanMap = StringBooleanMap- { - } deriving (P.Show, P.Eq, P.Typeable)---- | FromJSON StringBooleanMap-instance A.FromJSON StringBooleanMap where- parseJSON = A.withObject "StringBooleanMap" $ \o ->- pure StringBooleanMap- ---- | ToJSON StringBooleanMap-instance A.ToJSON StringBooleanMap where- toJSON StringBooleanMap =- _omitNulls- [ - ]----- | Construct a value of type 'StringBooleanMap' (by applying it's required fields, if any)-mkStringBooleanMap- :: StringBooleanMap-mkStringBooleanMap =- StringBooleanMap- { - }- -- ** Tag -- | Tag data Tag = Tag@@ -1386,6 +1330,104 @@ , tagName = Nothing } +-- ** TypeHolderDefault+-- | TypeHolderDefault+data TypeHolderDefault = TypeHolderDefault+ { typeHolderDefaultStringItem :: !(Text) -- ^ /Required/ "string_item"+ , typeHolderDefaultNumberItem :: !(Double) -- ^ /Required/ "number_item"+ , typeHolderDefaultIntegerItem :: !(Int) -- ^ /Required/ "integer_item"+ , typeHolderDefaultBoolItem :: !(Bool) -- ^ /Required/ "bool_item"+ , typeHolderDefaultArrayItem :: !([Int]) -- ^ /Required/ "array_item"+ } deriving (P.Show, P.Eq, P.Typeable)++-- | FromJSON TypeHolderDefault+instance A.FromJSON TypeHolderDefault where+ parseJSON = A.withObject "TypeHolderDefault" $ \o ->+ TypeHolderDefault+ <$> (o .: "string_item")+ <*> (o .: "number_item")+ <*> (o .: "integer_item")+ <*> (o .: "bool_item")+ <*> (o .: "array_item")++-- | ToJSON TypeHolderDefault+instance A.ToJSON TypeHolderDefault where+ toJSON TypeHolderDefault {..} =+ _omitNulls+ [ "string_item" .= typeHolderDefaultStringItem+ , "number_item" .= typeHolderDefaultNumberItem+ , "integer_item" .= typeHolderDefaultIntegerItem+ , "bool_item" .= typeHolderDefaultBoolItem+ , "array_item" .= typeHolderDefaultArrayItem+ ]+++-- | Construct a value of type 'TypeHolderDefault' (by applying it's required fields, if any)+mkTypeHolderDefault+ :: Text -- ^ 'typeHolderDefaultStringItem' + -> Double -- ^ 'typeHolderDefaultNumberItem' + -> Int -- ^ 'typeHolderDefaultIntegerItem' + -> Bool -- ^ 'typeHolderDefaultBoolItem' + -> [Int] -- ^ 'typeHolderDefaultArrayItem' + -> TypeHolderDefault+mkTypeHolderDefault typeHolderDefaultStringItem typeHolderDefaultNumberItem typeHolderDefaultIntegerItem typeHolderDefaultBoolItem typeHolderDefaultArrayItem =+ TypeHolderDefault+ { typeHolderDefaultStringItem+ , typeHolderDefaultNumberItem+ , typeHolderDefaultIntegerItem+ , typeHolderDefaultBoolItem+ , typeHolderDefaultArrayItem+ }++-- ** TypeHolderExample+-- | TypeHolderExample+data TypeHolderExample = TypeHolderExample+ { typeHolderExampleStringItem :: !(Text) -- ^ /Required/ "string_item"+ , typeHolderExampleNumberItem :: !(Double) -- ^ /Required/ "number_item"+ , typeHolderExampleIntegerItem :: !(Int) -- ^ /Required/ "integer_item"+ , typeHolderExampleBoolItem :: !(Bool) -- ^ /Required/ "bool_item"+ , typeHolderExampleArrayItem :: !([Int]) -- ^ /Required/ "array_item"+ } deriving (P.Show, P.Eq, P.Typeable)++-- | FromJSON TypeHolderExample+instance A.FromJSON TypeHolderExample where+ parseJSON = A.withObject "TypeHolderExample" $ \o ->+ TypeHolderExample+ <$> (o .: "string_item")+ <*> (o .: "number_item")+ <*> (o .: "integer_item")+ <*> (o .: "bool_item")+ <*> (o .: "array_item")++-- | ToJSON TypeHolderExample+instance A.ToJSON TypeHolderExample where+ toJSON TypeHolderExample {..} =+ _omitNulls+ [ "string_item" .= typeHolderExampleStringItem+ , "number_item" .= typeHolderExampleNumberItem+ , "integer_item" .= typeHolderExampleIntegerItem+ , "bool_item" .= typeHolderExampleBoolItem+ , "array_item" .= typeHolderExampleArrayItem+ ]+++-- | Construct a value of type 'TypeHolderExample' (by applying it's required fields, if any)+mkTypeHolderExample+ :: Text -- ^ 'typeHolderExampleStringItem' + -> Double -- ^ 'typeHolderExampleNumberItem' + -> Int -- ^ 'typeHolderExampleIntegerItem' + -> Bool -- ^ 'typeHolderExampleBoolItem' + -> [Int] -- ^ 'typeHolderExampleArrayItem' + -> TypeHolderExample+mkTypeHolderExample typeHolderExampleStringItem typeHolderExampleNumberItem typeHolderExampleIntegerItem typeHolderExampleBoolItem typeHolderExampleArrayItem =+ TypeHolderExample+ { typeHolderExampleStringItem+ , typeHolderExampleNumberItem+ , typeHolderExampleIntegerItem+ , typeHolderExampleBoolItem+ , typeHolderExampleArrayItem+ }+ -- ** User -- | User data User = User@@ -1442,7 +1484,147 @@ , userUserStatus = Nothing } +-- ** XmlItem+-- | XmlItem+data XmlItem = XmlItem+ { xmlItemAttributeString :: !(Maybe Text) -- ^ "attribute_string"+ , xmlItemAttributeNumber :: !(Maybe Double) -- ^ "attribute_number"+ , xmlItemAttributeInteger :: !(Maybe Int) -- ^ "attribute_integer"+ , xmlItemAttributeBoolean :: !(Maybe Bool) -- ^ "attribute_boolean"+ , xmlItemWrappedArray :: !(Maybe [Int]) -- ^ "wrapped_array"+ , xmlItemNameString :: !(Maybe Text) -- ^ "name_string"+ , xmlItemNameNumber :: !(Maybe Double) -- ^ "name_number"+ , xmlItemNameInteger :: !(Maybe Int) -- ^ "name_integer"+ , xmlItemNameBoolean :: !(Maybe Bool) -- ^ "name_boolean"+ , xmlItemNameArray :: !(Maybe [Int]) -- ^ "name_array"+ , xmlItemNameWrappedArray :: !(Maybe [Int]) -- ^ "name_wrapped_array"+ , xmlItemPrefixString :: !(Maybe Text) -- ^ "prefix_string"+ , xmlItemPrefixNumber :: !(Maybe Double) -- ^ "prefix_number"+ , xmlItemPrefixInteger :: !(Maybe Int) -- ^ "prefix_integer"+ , xmlItemPrefixBoolean :: !(Maybe Bool) -- ^ "prefix_boolean"+ , xmlItemPrefixArray :: !(Maybe [Int]) -- ^ "prefix_array"+ , xmlItemPrefixWrappedArray :: !(Maybe [Int]) -- ^ "prefix_wrapped_array"+ , xmlItemNamespaceString :: !(Maybe Text) -- ^ "namespace_string"+ , xmlItemNamespaceNumber :: !(Maybe Double) -- ^ "namespace_number"+ , xmlItemNamespaceInteger :: !(Maybe Int) -- ^ "namespace_integer"+ , xmlItemNamespaceBoolean :: !(Maybe Bool) -- ^ "namespace_boolean"+ , xmlItemNamespaceArray :: !(Maybe [Int]) -- ^ "namespace_array"+ , xmlItemNamespaceWrappedArray :: !(Maybe [Int]) -- ^ "namespace_wrapped_array"+ , xmlItemPrefixNsString :: !(Maybe Text) -- ^ "prefix_ns_string"+ , xmlItemPrefixNsNumber :: !(Maybe Double) -- ^ "prefix_ns_number"+ , xmlItemPrefixNsInteger :: !(Maybe Int) -- ^ "prefix_ns_integer"+ , xmlItemPrefixNsBoolean :: !(Maybe Bool) -- ^ "prefix_ns_boolean"+ , xmlItemPrefixNsArray :: !(Maybe [Int]) -- ^ "prefix_ns_array"+ , xmlItemPrefixNsWrappedArray :: !(Maybe [Int]) -- ^ "prefix_ns_wrapped_array"+ } deriving (P.Show, P.Eq, P.Typeable) +-- | FromJSON XmlItem+instance A.FromJSON XmlItem where+ parseJSON = A.withObject "XmlItem" $ \o ->+ XmlItem+ <$> (o .:? "attribute_string")+ <*> (o .:? "attribute_number")+ <*> (o .:? "attribute_integer")+ <*> (o .:? "attribute_boolean")+ <*> (o .:? "wrapped_array")+ <*> (o .:? "name_string")+ <*> (o .:? "name_number")+ <*> (o .:? "name_integer")+ <*> (o .:? "name_boolean")+ <*> (o .:? "name_array")+ <*> (o .:? "name_wrapped_array")+ <*> (o .:? "prefix_string")+ <*> (o .:? "prefix_number")+ <*> (o .:? "prefix_integer")+ <*> (o .:? "prefix_boolean")+ <*> (o .:? "prefix_array")+ <*> (o .:? "prefix_wrapped_array")+ <*> (o .:? "namespace_string")+ <*> (o .:? "namespace_number")+ <*> (o .:? "namespace_integer")+ <*> (o .:? "namespace_boolean")+ <*> (o .:? "namespace_array")+ <*> (o .:? "namespace_wrapped_array")+ <*> (o .:? "prefix_ns_string")+ <*> (o .:? "prefix_ns_number")+ <*> (o .:? "prefix_ns_integer")+ <*> (o .:? "prefix_ns_boolean")+ <*> (o .:? "prefix_ns_array")+ <*> (o .:? "prefix_ns_wrapped_array")++-- | ToJSON XmlItem+instance A.ToJSON XmlItem where+ toJSON XmlItem {..} =+ _omitNulls+ [ "attribute_string" .= xmlItemAttributeString+ , "attribute_number" .= xmlItemAttributeNumber+ , "attribute_integer" .= xmlItemAttributeInteger+ , "attribute_boolean" .= xmlItemAttributeBoolean+ , "wrapped_array" .= xmlItemWrappedArray+ , "name_string" .= xmlItemNameString+ , "name_number" .= xmlItemNameNumber+ , "name_integer" .= xmlItemNameInteger+ , "name_boolean" .= xmlItemNameBoolean+ , "name_array" .= xmlItemNameArray+ , "name_wrapped_array" .= xmlItemNameWrappedArray+ , "prefix_string" .= xmlItemPrefixString+ , "prefix_number" .= xmlItemPrefixNumber+ , "prefix_integer" .= xmlItemPrefixInteger+ , "prefix_boolean" .= xmlItemPrefixBoolean+ , "prefix_array" .= xmlItemPrefixArray+ , "prefix_wrapped_array" .= xmlItemPrefixWrappedArray+ , "namespace_string" .= xmlItemNamespaceString+ , "namespace_number" .= xmlItemNamespaceNumber+ , "namespace_integer" .= xmlItemNamespaceInteger+ , "namespace_boolean" .= xmlItemNamespaceBoolean+ , "namespace_array" .= xmlItemNamespaceArray+ , "namespace_wrapped_array" .= xmlItemNamespaceWrappedArray+ , "prefix_ns_string" .= xmlItemPrefixNsString+ , "prefix_ns_number" .= xmlItemPrefixNsNumber+ , "prefix_ns_integer" .= xmlItemPrefixNsInteger+ , "prefix_ns_boolean" .= xmlItemPrefixNsBoolean+ , "prefix_ns_array" .= xmlItemPrefixNsArray+ , "prefix_ns_wrapped_array" .= xmlItemPrefixNsWrappedArray+ ]+++-- | Construct a value of type 'XmlItem' (by applying it's required fields, if any)+mkXmlItem+ :: XmlItem+mkXmlItem =+ XmlItem+ { xmlItemAttributeString = Nothing+ , xmlItemAttributeNumber = Nothing+ , xmlItemAttributeInteger = Nothing+ , xmlItemAttributeBoolean = Nothing+ , xmlItemWrappedArray = Nothing+ , xmlItemNameString = Nothing+ , xmlItemNameNumber = Nothing+ , xmlItemNameInteger = Nothing+ , xmlItemNameBoolean = Nothing+ , xmlItemNameArray = Nothing+ , xmlItemNameWrappedArray = Nothing+ , xmlItemPrefixString = Nothing+ , xmlItemPrefixNumber = Nothing+ , xmlItemPrefixInteger = Nothing+ , xmlItemPrefixBoolean = Nothing+ , xmlItemPrefixArray = Nothing+ , xmlItemPrefixWrappedArray = Nothing+ , xmlItemNamespaceString = Nothing+ , xmlItemNamespaceNumber = Nothing+ , xmlItemNamespaceInteger = Nothing+ , xmlItemNamespaceBoolean = Nothing+ , xmlItemNamespaceArray = Nothing+ , xmlItemNamespaceWrappedArray = Nothing+ , xmlItemPrefixNsString = Nothing+ , xmlItemPrefixNsNumber = Nothing+ , xmlItemPrefixNsInteger = Nothing+ , xmlItemPrefixNsBoolean = Nothing+ , xmlItemPrefixNsArray = Nothing+ , xmlItemPrefixNsWrappedArray = Nothing+ }++ -- * Enums @@ -1885,4 +2067,5 @@ then req `setHeader` toHeader ("Authorization", "Bearer " <> secret) & L.over rAuthTypesL (P.filter (/= P.typeOf a)) else req+
lib/OpenAPIPetstore/ModelLens.hs view
@@ -64,10 +64,6 @@ --- * AnimalFarm--- -- * ApiResponse -- | 'apiResponseCode' Lens@@ -603,10 +599,6 @@ --- * StringBooleanMap--- -- * Tag -- | 'tagId' Lens@@ -621,6 +613,64 @@ +-- * TypeHolderDefault++-- | 'typeHolderDefaultStringItem' Lens+typeHolderDefaultStringItemL :: Lens_' TypeHolderDefault (Text)+typeHolderDefaultStringItemL f TypeHolderDefault{..} = (\typeHolderDefaultStringItem -> TypeHolderDefault { typeHolderDefaultStringItem, ..} ) <$> f typeHolderDefaultStringItem+{-# INLINE typeHolderDefaultStringItemL #-}++-- | 'typeHolderDefaultNumberItem' Lens+typeHolderDefaultNumberItemL :: Lens_' TypeHolderDefault (Double)+typeHolderDefaultNumberItemL f TypeHolderDefault{..} = (\typeHolderDefaultNumberItem -> TypeHolderDefault { typeHolderDefaultNumberItem, ..} ) <$> f typeHolderDefaultNumberItem+{-# INLINE typeHolderDefaultNumberItemL #-}++-- | 'typeHolderDefaultIntegerItem' Lens+typeHolderDefaultIntegerItemL :: Lens_' TypeHolderDefault (Int)+typeHolderDefaultIntegerItemL f TypeHolderDefault{..} = (\typeHolderDefaultIntegerItem -> TypeHolderDefault { typeHolderDefaultIntegerItem, ..} ) <$> f typeHolderDefaultIntegerItem+{-# INLINE typeHolderDefaultIntegerItemL #-}++-- | 'typeHolderDefaultBoolItem' Lens+typeHolderDefaultBoolItemL :: Lens_' TypeHolderDefault (Bool)+typeHolderDefaultBoolItemL f TypeHolderDefault{..} = (\typeHolderDefaultBoolItem -> TypeHolderDefault { typeHolderDefaultBoolItem, ..} ) <$> f typeHolderDefaultBoolItem+{-# INLINE typeHolderDefaultBoolItemL #-}++-- | 'typeHolderDefaultArrayItem' Lens+typeHolderDefaultArrayItemL :: Lens_' TypeHolderDefault ([Int])+typeHolderDefaultArrayItemL f TypeHolderDefault{..} = (\typeHolderDefaultArrayItem -> TypeHolderDefault { typeHolderDefaultArrayItem, ..} ) <$> f typeHolderDefaultArrayItem+{-# INLINE typeHolderDefaultArrayItemL #-}++++-- * TypeHolderExample++-- | 'typeHolderExampleStringItem' Lens+typeHolderExampleStringItemL :: Lens_' TypeHolderExample (Text)+typeHolderExampleStringItemL f TypeHolderExample{..} = (\typeHolderExampleStringItem -> TypeHolderExample { typeHolderExampleStringItem, ..} ) <$> f typeHolderExampleStringItem+{-# INLINE typeHolderExampleStringItemL #-}++-- | 'typeHolderExampleNumberItem' Lens+typeHolderExampleNumberItemL :: Lens_' TypeHolderExample (Double)+typeHolderExampleNumberItemL f TypeHolderExample{..} = (\typeHolderExampleNumberItem -> TypeHolderExample { typeHolderExampleNumberItem, ..} ) <$> f typeHolderExampleNumberItem+{-# INLINE typeHolderExampleNumberItemL #-}++-- | 'typeHolderExampleIntegerItem' Lens+typeHolderExampleIntegerItemL :: Lens_' TypeHolderExample (Int)+typeHolderExampleIntegerItemL f TypeHolderExample{..} = (\typeHolderExampleIntegerItem -> TypeHolderExample { typeHolderExampleIntegerItem, ..} ) <$> f typeHolderExampleIntegerItem+{-# INLINE typeHolderExampleIntegerItemL #-}++-- | 'typeHolderExampleBoolItem' Lens+typeHolderExampleBoolItemL :: Lens_' TypeHolderExample (Bool)+typeHolderExampleBoolItemL f TypeHolderExample{..} = (\typeHolderExampleBoolItem -> TypeHolderExample { typeHolderExampleBoolItem, ..} ) <$> f typeHolderExampleBoolItem+{-# INLINE typeHolderExampleBoolItemL #-}++-- | 'typeHolderExampleArrayItem' Lens+typeHolderExampleArrayItemL :: Lens_' TypeHolderExample ([Int])+typeHolderExampleArrayItemL f TypeHolderExample{..} = (\typeHolderExampleArrayItem -> TypeHolderExample { typeHolderExampleArrayItem, ..} ) <$> f typeHolderExampleArrayItem+{-# INLINE typeHolderExampleArrayItemL #-}+++ -- * User -- | 'userId' Lens@@ -662,5 +712,154 @@ userUserStatusL :: Lens_' User (Maybe Int) userUserStatusL f User{..} = (\userUserStatus -> User { userUserStatus, ..} ) <$> f userUserStatus {-# INLINE userUserStatusL #-}++++-- * XmlItem++-- | 'xmlItemAttributeString' Lens+xmlItemAttributeStringL :: Lens_' XmlItem (Maybe Text)+xmlItemAttributeStringL f XmlItem{..} = (\xmlItemAttributeString -> XmlItem { xmlItemAttributeString, ..} ) <$> f xmlItemAttributeString+{-# INLINE xmlItemAttributeStringL #-}++-- | 'xmlItemAttributeNumber' Lens+xmlItemAttributeNumberL :: Lens_' XmlItem (Maybe Double)+xmlItemAttributeNumberL f XmlItem{..} = (\xmlItemAttributeNumber -> XmlItem { xmlItemAttributeNumber, ..} ) <$> f xmlItemAttributeNumber+{-# INLINE xmlItemAttributeNumberL #-}++-- | 'xmlItemAttributeInteger' Lens+xmlItemAttributeIntegerL :: Lens_' XmlItem (Maybe Int)+xmlItemAttributeIntegerL f XmlItem{..} = (\xmlItemAttributeInteger -> XmlItem { xmlItemAttributeInteger, ..} ) <$> f xmlItemAttributeInteger+{-# INLINE xmlItemAttributeIntegerL #-}++-- | 'xmlItemAttributeBoolean' Lens+xmlItemAttributeBooleanL :: Lens_' XmlItem (Maybe Bool)+xmlItemAttributeBooleanL f XmlItem{..} = (\xmlItemAttributeBoolean -> XmlItem { xmlItemAttributeBoolean, ..} ) <$> f xmlItemAttributeBoolean+{-# INLINE xmlItemAttributeBooleanL #-}++-- | 'xmlItemWrappedArray' Lens+xmlItemWrappedArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemWrappedArrayL f XmlItem{..} = (\xmlItemWrappedArray -> XmlItem { xmlItemWrappedArray, ..} ) <$> f xmlItemWrappedArray+{-# INLINE xmlItemWrappedArrayL #-}++-- | 'xmlItemNameString' Lens+xmlItemNameStringL :: Lens_' XmlItem (Maybe Text)+xmlItemNameStringL f XmlItem{..} = (\xmlItemNameString -> XmlItem { xmlItemNameString, ..} ) <$> f xmlItemNameString+{-# INLINE xmlItemNameStringL #-}++-- | 'xmlItemNameNumber' Lens+xmlItemNameNumberL :: Lens_' XmlItem (Maybe Double)+xmlItemNameNumberL f XmlItem{..} = (\xmlItemNameNumber -> XmlItem { xmlItemNameNumber, ..} ) <$> f xmlItemNameNumber+{-# INLINE xmlItemNameNumberL #-}++-- | 'xmlItemNameInteger' Lens+xmlItemNameIntegerL :: Lens_' XmlItem (Maybe Int)+xmlItemNameIntegerL f XmlItem{..} = (\xmlItemNameInteger -> XmlItem { xmlItemNameInteger, ..} ) <$> f xmlItemNameInteger+{-# INLINE xmlItemNameIntegerL #-}++-- | 'xmlItemNameBoolean' Lens+xmlItemNameBooleanL :: Lens_' XmlItem (Maybe Bool)+xmlItemNameBooleanL f XmlItem{..} = (\xmlItemNameBoolean -> XmlItem { xmlItemNameBoolean, ..} ) <$> f xmlItemNameBoolean+{-# INLINE xmlItemNameBooleanL #-}++-- | 'xmlItemNameArray' Lens+xmlItemNameArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemNameArrayL f XmlItem{..} = (\xmlItemNameArray -> XmlItem { xmlItemNameArray, ..} ) <$> f xmlItemNameArray+{-# INLINE xmlItemNameArrayL #-}++-- | 'xmlItemNameWrappedArray' Lens+xmlItemNameWrappedArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemNameWrappedArrayL f XmlItem{..} = (\xmlItemNameWrappedArray -> XmlItem { xmlItemNameWrappedArray, ..} ) <$> f xmlItemNameWrappedArray+{-# INLINE xmlItemNameWrappedArrayL #-}++-- | 'xmlItemPrefixString' Lens+xmlItemPrefixStringL :: Lens_' XmlItem (Maybe Text)+xmlItemPrefixStringL f XmlItem{..} = (\xmlItemPrefixString -> XmlItem { xmlItemPrefixString, ..} ) <$> f xmlItemPrefixString+{-# INLINE xmlItemPrefixStringL #-}++-- | 'xmlItemPrefixNumber' Lens+xmlItemPrefixNumberL :: Lens_' XmlItem (Maybe Double)+xmlItemPrefixNumberL f XmlItem{..} = (\xmlItemPrefixNumber -> XmlItem { xmlItemPrefixNumber, ..} ) <$> f xmlItemPrefixNumber+{-# INLINE xmlItemPrefixNumberL #-}++-- | 'xmlItemPrefixInteger' Lens+xmlItemPrefixIntegerL :: Lens_' XmlItem (Maybe Int)+xmlItemPrefixIntegerL f XmlItem{..} = (\xmlItemPrefixInteger -> XmlItem { xmlItemPrefixInteger, ..} ) <$> f xmlItemPrefixInteger+{-# INLINE xmlItemPrefixIntegerL #-}++-- | 'xmlItemPrefixBoolean' Lens+xmlItemPrefixBooleanL :: Lens_' XmlItem (Maybe Bool)+xmlItemPrefixBooleanL f XmlItem{..} = (\xmlItemPrefixBoolean -> XmlItem { xmlItemPrefixBoolean, ..} ) <$> f xmlItemPrefixBoolean+{-# INLINE xmlItemPrefixBooleanL #-}++-- | 'xmlItemPrefixArray' Lens+xmlItemPrefixArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemPrefixArrayL f XmlItem{..} = (\xmlItemPrefixArray -> XmlItem { xmlItemPrefixArray, ..} ) <$> f xmlItemPrefixArray+{-# INLINE xmlItemPrefixArrayL #-}++-- | 'xmlItemPrefixWrappedArray' Lens+xmlItemPrefixWrappedArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemPrefixWrappedArrayL f XmlItem{..} = (\xmlItemPrefixWrappedArray -> XmlItem { xmlItemPrefixWrappedArray, ..} ) <$> f xmlItemPrefixWrappedArray+{-# INLINE xmlItemPrefixWrappedArrayL #-}++-- | 'xmlItemNamespaceString' Lens+xmlItemNamespaceStringL :: Lens_' XmlItem (Maybe Text)+xmlItemNamespaceStringL f XmlItem{..} = (\xmlItemNamespaceString -> XmlItem { xmlItemNamespaceString, ..} ) <$> f xmlItemNamespaceString+{-# INLINE xmlItemNamespaceStringL #-}++-- | 'xmlItemNamespaceNumber' Lens+xmlItemNamespaceNumberL :: Lens_' XmlItem (Maybe Double)+xmlItemNamespaceNumberL f XmlItem{..} = (\xmlItemNamespaceNumber -> XmlItem { xmlItemNamespaceNumber, ..} ) <$> f xmlItemNamespaceNumber+{-# INLINE xmlItemNamespaceNumberL #-}++-- | 'xmlItemNamespaceInteger' Lens+xmlItemNamespaceIntegerL :: Lens_' XmlItem (Maybe Int)+xmlItemNamespaceIntegerL f XmlItem{..} = (\xmlItemNamespaceInteger -> XmlItem { xmlItemNamespaceInteger, ..} ) <$> f xmlItemNamespaceInteger+{-# INLINE xmlItemNamespaceIntegerL #-}++-- | 'xmlItemNamespaceBoolean' Lens+xmlItemNamespaceBooleanL :: Lens_' XmlItem (Maybe Bool)+xmlItemNamespaceBooleanL f XmlItem{..} = (\xmlItemNamespaceBoolean -> XmlItem { xmlItemNamespaceBoolean, ..} ) <$> f xmlItemNamespaceBoolean+{-# INLINE xmlItemNamespaceBooleanL #-}++-- | 'xmlItemNamespaceArray' Lens+xmlItemNamespaceArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemNamespaceArrayL f XmlItem{..} = (\xmlItemNamespaceArray -> XmlItem { xmlItemNamespaceArray, ..} ) <$> f xmlItemNamespaceArray+{-# INLINE xmlItemNamespaceArrayL #-}++-- | 'xmlItemNamespaceWrappedArray' Lens+xmlItemNamespaceWrappedArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemNamespaceWrappedArrayL f XmlItem{..} = (\xmlItemNamespaceWrappedArray -> XmlItem { xmlItemNamespaceWrappedArray, ..} ) <$> f xmlItemNamespaceWrappedArray+{-# INLINE xmlItemNamespaceWrappedArrayL #-}++-- | 'xmlItemPrefixNsString' Lens+xmlItemPrefixNsStringL :: Lens_' XmlItem (Maybe Text)+xmlItemPrefixNsStringL f XmlItem{..} = (\xmlItemPrefixNsString -> XmlItem { xmlItemPrefixNsString, ..} ) <$> f xmlItemPrefixNsString+{-# INLINE xmlItemPrefixNsStringL #-}++-- | 'xmlItemPrefixNsNumber' Lens+xmlItemPrefixNsNumberL :: Lens_' XmlItem (Maybe Double)+xmlItemPrefixNsNumberL f XmlItem{..} = (\xmlItemPrefixNsNumber -> XmlItem { xmlItemPrefixNsNumber, ..} ) <$> f xmlItemPrefixNsNumber+{-# INLINE xmlItemPrefixNsNumberL #-}++-- | 'xmlItemPrefixNsInteger' Lens+xmlItemPrefixNsIntegerL :: Lens_' XmlItem (Maybe Int)+xmlItemPrefixNsIntegerL f XmlItem{..} = (\xmlItemPrefixNsInteger -> XmlItem { xmlItemPrefixNsInteger, ..} ) <$> f xmlItemPrefixNsInteger+{-# INLINE xmlItemPrefixNsIntegerL #-}++-- | 'xmlItemPrefixNsBoolean' Lens+xmlItemPrefixNsBooleanL :: Lens_' XmlItem (Maybe Bool)+xmlItemPrefixNsBooleanL f XmlItem{..} = (\xmlItemPrefixNsBoolean -> XmlItem { xmlItemPrefixNsBoolean, ..} ) <$> f xmlItemPrefixNsBoolean+{-# INLINE xmlItemPrefixNsBooleanL #-}++-- | 'xmlItemPrefixNsArray' Lens+xmlItemPrefixNsArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemPrefixNsArrayL f XmlItem{..} = (\xmlItemPrefixNsArray -> XmlItem { xmlItemPrefixNsArray, ..} ) <$> f xmlItemPrefixNsArray+{-# INLINE xmlItemPrefixNsArrayL #-}++-- | 'xmlItemPrefixNsWrappedArray' Lens+xmlItemPrefixNsWrappedArrayL :: Lens_' XmlItem (Maybe [Int])+xmlItemPrefixNsWrappedArrayL f XmlItem{..} = (\xmlItemPrefixNsWrappedArray -> XmlItem { xmlItemPrefixNsWrappedArray, ..} ) <$> f xmlItemPrefixNsWrappedArray+{-# INLINE xmlItemPrefixNsWrappedArrayL #-}
openapi-petstore.cabal view
@@ -1,5 +1,5 @@ name: openapi-petstore-version: 0.0.3.0+version: 0.0.4.0 synopsis: Auto-generated openapi-petstore API Client description: . Client library for calling the OpenAPI Petstore API based on http-client.@@ -12,13 +12,12 @@ . OpenAPI version: 3.0.1 .- category: Web+category: Web homepage: https://openapi-generator.tech author: Author Name Here maintainer: author.name@email.com copyright: YEAR - AUTHOR license: MIT-category: Web build-type: Simple cabal-version: >= 1.10 @@ -26,6 +25,11 @@ README.md openapi.yaml +Flag UseKatip+ Description: Use the katip package to provide logging (if false, use the default monad-logger package)+ Default: True+ Manual: True+ library hs-source-dirs: lib@@ -36,10 +40,10 @@ , base64-bytestring >1.0 && <2.0 , bytestring >=0.10.0 && <0.11 , case-insensitive- , containers >=0.5.0.0 && <0.6+ , containers >=0.5.0.0 && <0.8 , deepseq >= 1.4 && <1.6 , exceptions >= 0.4- , http-api-data >= 0.3.4 && <0.4+ , http-api-data >= 0.3.4 && <0.5 , http-client >=0.5 && <0.6 , http-client-tls , http-media >= 0.4 && < 0.8@@ -47,7 +51,7 @@ , iso8601-time >=0.1.3 && <0.2.0 , microlens >= 0.4.3 && <0.5 , mtl >=2.2.1- , network >=2.6.2 && <2.8+ , network >=2.6.2 && <2.9 , random >=1.1 , safe-exceptions <0.2 , text >=0.11 && <1.3@@ -55,7 +59,6 @@ , transformers >=0.4.0.0 , unordered-containers , vector >=0.10.9 && <0.13- , katip >=0.4 && < 0.6 other-modules: Paths_openapi_petstore exposed-modules:@@ -74,6 +77,15 @@ OpenAPIPetstore.Model OpenAPIPetstore.ModelLens default-language: Haskell2010++ if flag(UseKatip)+ build-depends: katip >=0.6 && < 1.0+ other-modules: OpenAPIPetstore.LoggingKatip+ cpp-options: -DUSE_KATIP+ else+ build-depends: monad-logger >=0.3 && <0.4+ other-modules: OpenAPIPetstore.LoggingMonadLogger+ cpp-options: -DUSE_MONAD_LOGGER test-suite tests type: exitcode-stdio-1.0
openapi.yaml view
@@ -42,6 +42,7 @@ summary: Add a new pet to the store tags: - pet+ x-codegen-request-body-name: body put: operationId: updatePet requestBody:@@ -71,6 +72,7 @@ summary: Update an existing pet tags: - pet+ x-codegen-request-body-name: body /pet/findByStatus: get: description: Multiple status values can be provided with comma separated strings@@ -327,6 +329,7 @@ summary: Place an order for a pet tags: - store+ x-codegen-request-body-name: body /store/order/{order_id}: delete: description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors@@ -398,6 +401,7 @@ summary: Create user tags: - user+ x-codegen-request-body-name: body /user/createWithArray: post: operationId: createUsersWithArrayInput@@ -417,6 +421,7 @@ summary: Creates list of users with given input array tags: - user+ x-codegen-request-body-name: body /user/createWithList: post: operationId: createUsersWithListInput@@ -436,6 +441,7 @@ summary: Creates list of users with given input array tags: - user+ x-codegen-request-body-name: body /user/login: get: operationId: loginUser@@ -565,6 +571,7 @@ summary: Updated user tags: - user+ x-codegen-request-body-name: body /fake_classname_test: patch: description: To test class name in snake case@@ -588,6 +595,7 @@ summary: To test class name in snake case tags: - fake_classname_tags 123#$%^+ x-codegen-request-body-name: body /fake: delete: description: Fake endpoint to test group parameters (optional)@@ -756,6 +764,7 @@ summary: To test "client" model tags: - fake+ x-codegen-request-body-name: body post: description: | Fake endpoint for testing various parameters@@ -874,6 +883,7 @@ description: Output number tags: - fake+ x-codegen-request-body-name: body /fake/outer/string: post: description: Test serialization of outer string types@@ -894,6 +904,7 @@ description: Output string tags: - fake+ x-codegen-request-body-name: body /fake/outer/boolean: post: description: Test serialization of outer boolean types@@ -914,6 +925,7 @@ description: Output boolean tags: - fake+ x-codegen-request-body-name: body /fake/outer/composite: post: description: Test serialization of object with outer number type@@ -934,6 +946,7 @@ description: Output composite tags: - fake+ x-codegen-request-body-name: body /fake/jsonFormData: get: operationId: testJsonFormData@@ -978,6 +991,7 @@ summary: test inline additionalProperties tags: - fake+ x-codegen-request-body-name: param /fake/body-with-query-params: put: operationId: testBodyWithQueryParams@@ -999,6 +1013,41 @@ description: Success tags: - fake+ x-codegen-request-body-name: body+ /fake/create_xml_item:+ post:+ description: this route creates an XmlItem+ operationId: createXmlItem+ requestBody:+ content:+ application/xml:+ schema:+ $ref: '#/components/schemas/XmlItem'+ application/xml; charset=utf-8:+ schema:+ $ref: '#/components/schemas/XmlItem'+ application/xml; charset=utf-16:+ schema:+ $ref: '#/components/schemas/XmlItem'+ text/xml:+ schema:+ $ref: '#/components/schemas/XmlItem'+ text/xml; charset=utf-8:+ schema:+ $ref: '#/components/schemas/XmlItem'+ text/xml; charset=utf-16:+ schema:+ $ref: '#/components/schemas/XmlItem'+ description: XmlItem Body+ required: true+ responses:+ 200:+ content: {}+ description: successful operation+ summary: creates an XmlItem+ tags:+ - fake+ x-codegen-request-body-name: XmlItem /another-fake/dummy: patch: description: To test special tags and operation ID starting with number@@ -1020,6 +1069,7 @@ summary: To test special tags tags: - $another-fake?+ x-codegen-request-body-name: body /fake/body-with-file-schema: put: description: For this test, the body for this request much reference a schema named `File`.@@ -1036,6 +1086,7 @@ description: Success tags: - fake+ x-codegen-request-body-name: body /fake/{petId}/uploadImageWithRequiredFile: post: operationId: uploadFileWithRequiredFile@@ -1078,6 +1129,40 @@ - pet components: schemas:+ Order:+ example:+ petId: 6+ quantity: 1+ id: 0+ shipDate: 2000-01-23T04:56:07.000+00:00+ complete: false+ status: placed+ properties:+ id:+ format: int64+ type: integer+ petId:+ format: int64+ type: integer+ quantity:+ format: int32+ type: integer+ shipDate:+ format: date-time+ type: string+ status:+ description: Order Status+ enum:+ - placed+ - approved+ - delivered+ type: string+ complete:+ default: false+ type: boolean+ type: object+ xml:+ name: Order Category: example: name: default-name@@ -1128,45 +1213,72 @@ type: object xml: name: User- OuterNumber:- type: number- ArrayOfNumberOnly:- properties:- ArrayNumber:- items:- type: number- type: array- type: object- Capitalization:+ Tag:+ example:+ name: name+ id: 1 properties:- smallCamel:- type: string- CapitalCamel:- type: string- small_Snake:- type: string- Capital_Snake:- type: string- SCA_ETH_Flow_Points:- type: string- ATT_NAME:- description: |- Name of the pet+ id:+ format: int64+ type: integer+ name: type: string type: object- MixedPropertiesAndAdditionalPropertiesClass:+ xml:+ name: Tag+ Pet:+ example:+ photoUrls:+ - photoUrls+ - photoUrls+ name: doggie+ id: 0+ category:+ name: default-name+ id: 6+ tags:+ - name: name+ id: 1+ - name: name+ id: 1+ status: available properties:- uuid:- format: uuid+ id:+ format: int64+ type: integer+ x-is-unique: true+ category:+ $ref: '#/components/schemas/Category'+ name:+ example: doggie type: string- dateTime:- format: date-time+ photoUrls:+ items:+ type: string+ type: array+ xml:+ name: photoUrl+ wrapped: true+ tags:+ items:+ $ref: '#/components/schemas/Tag'+ type: array+ xml:+ name: tag+ wrapped: true+ status:+ description: pet status in the store+ enum:+ - available+ - pending+ - sold type: string- map:- additionalProperties:- $ref: '#/components/schemas/Animal'- type: object+ required:+ - name+ - photoUrls type: object+ xml:+ name: Pet ApiResponse: example: code: 0@@ -1181,6 +1293,23 @@ message: type: string type: object+ $special[model.name]:+ properties:+ $special[property.name]:+ format: int64+ type: integer+ type: object+ xml:+ name: $special[model.name]+ Return:+ description: Model for testing reserved words+ properties:+ return:+ format: int32+ type: integer+ type: object+ xml:+ name: Return Name: description: Model for testing model name same as property name properties:@@ -1201,23 +1330,6 @@ type: object xml: name: Name- EnumClass:- default: -efg- enum:- - _abc- - -efg- - (xyz)- type: string- List:- properties:- 123-list:- type: string- type: object- NumberOnly:- properties:- JustNumber:- type: number- type: object 200_response: description: Model for testing model name starting with number properties:@@ -1229,11 +1341,10 @@ type: object xml: name: Name- Client:- example:- client: client+ ClassModel:+ description: Model for testing model with "_class" property properties:- client:+ _class: type: string type: object Dog:@@ -1243,6 +1354,95 @@ breed: type: string type: object+ Cat:+ allOf:+ - $ref: '#/components/schemas/Animal'+ - properties:+ declawed:+ type: boolean+ type: object+ Animal:+ discriminator:+ propertyName: className+ properties:+ className:+ type: string+ color:+ default: red+ type: string+ required:+ - className+ type: object+ AnimalFarm:+ items:+ $ref: '#/components/schemas/Animal'+ type: array+ format_test:+ properties:+ integer:+ maximum: 1E+2+ minimum: 1E+1+ type: integer+ int32:+ format: int32+ maximum: 2E+2+ minimum: 2E+1+ type: integer+ int64:+ format: int64+ type: integer+ number:+ maximum: 543.2+ minimum: 32.1+ type: number+ float:+ format: float+ maximum: 987.6+ minimum: 54.3+ type: number+ double:+ format: double+ maximum: 123.4+ minimum: 67.8+ type: number+ string:+ pattern: /[a-z]/i+ type: string+ byte:+ format: byte+ pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$+ type: string+ binary:+ format: binary+ type: string+ date:+ format: date+ type: string+ dateTime:+ format: date-time+ type: string+ uuid:+ example: 72f98069-206d-4f12-9f12-3d1e525a8e84+ format: uuid+ type: string+ password:+ format: password+ maxLength: 64+ minLength: 10+ type: string+ required:+ - byte+ - date+ - number+ - password+ type: object+ EnumClass:+ default: -efg+ enum:+ - _abc+ - -efg+ - (xyz)+ type: string Enum_Test: properties: enum_string:@@ -1274,40 +1474,6 @@ required: - enum_string_required type: object- Order:- example:- petId: 6- quantity: 1- id: 0- shipDate: 2000-01-23T04:56:07.000+00:00- complete: false- status: placed- properties:- id:- format: int64- type: integer- petId:- format: int64- type: integer- quantity:- format: int32- type: integer- shipDate:- format: date-time- type: string- status:- description: Order Status- enum:- - placed- - approved- - delivered- type: string- complete:- default: false- type: boolean- type: object- xml:- name: Order AdditionalPropertiesClass: properties: map_property:@@ -1321,23 +1487,31 @@ type: object type: object type: object- $special[model.name]:+ MixedPropertiesAndAdditionalPropertiesClass: properties:- $special[property.name]:- format: int64- type: integer+ uuid:+ format: uuid+ type: string+ dateTime:+ format: date-time+ type: string+ map:+ additionalProperties:+ $ref: '#/components/schemas/Animal'+ type: object type: object- xml:- name: $special[model.name]- Return:- description: Model for testing reserved words+ List: properties:- return:- format: int32- type: integer+ 123-list:+ type: string type: object- xml:- name: Return+ Client:+ example:+ client: client+ properties:+ client:+ type: string+ type: object ReadOnlyFirst: properties: bar:@@ -1346,21 +1520,56 @@ baz: type: string type: object- ArrayOfArrayOfNumberOnly:+ hasOnlyReadOnly: properties:- ArrayArrayNumber:- items:- items:- type: number- type: array- type: array+ bar:+ readOnly: true+ type: string+ foo:+ readOnly: true+ type: string type: object- OuterEnum:- enum:- - placed- - approved- - delivered- type: string+ Capitalization:+ properties:+ smallCamel:+ type: string+ CapitalCamel:+ type: string+ small_Snake:+ type: string+ Capital_Snake:+ type: string+ SCA_ETH_Flow_Points:+ type: string+ ATT_NAME:+ description: |+ Name of the pet+ type: string+ type: object+ MapTest:+ properties:+ map_map_of_string:+ additionalProperties:+ additionalProperties:+ type: string+ type: object+ type: object+ map_of_enum_string:+ additionalProperties:+ enum:+ - UPPER+ - lower+ type: string+ type: object+ direct_map:+ additionalProperties:+ type: boolean+ type: object+ indirect_map:+ additionalProperties:+ type: boolean+ type: object+ type: object ArrayTest: properties: array_of_string:@@ -1381,78 +1590,27 @@ type: array type: array type: object- OuterComposite:- example:- my_string: my_string- my_number: 0.80082819046101150206595775671303272247314453125- my_boolean: true+ NumberOnly: properties:- my_number:+ JustNumber: type: number- my_string:- type: string- my_boolean:- type: boolean- x-codegen-body-parameter-name: boolean_post_body type: object- format_test:+ ArrayOfNumberOnly: properties:- integer:- maximum: 1E+2- minimum: 1E+1- type: integer- int32:- format: int32- maximum: 2E+2- minimum: 2E+1- type: integer- int64:- format: int64- type: integer- number:- maximum: 543.2- minimum: 32.1- type: number- float:- format: float- maximum: 987.6- minimum: 54.3- type: number- double:- format: double- maximum: 123.4- minimum: 67.8- type: number- string:- pattern: /[a-z]/i- type: string- byte:- format: byte- pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$- type: string- binary:- format: binary- type: string- date:- format: date- type: string- dateTime:- format: date-time- type: string- uuid:- format: uuid- type: string- password:- format: password- maxLength: 64- minLength: 10- type: string- required:- - byte- - date- - number- - password+ ArrayNumber:+ items:+ type: number+ type: array type: object+ ArrayOfArrayOfNumberOnly:+ properties:+ ArrayArrayNumber:+ items:+ items:+ type: number+ type: array+ type: array+ type: object EnumArrays: properties: just_symbol:@@ -1468,17 +1626,37 @@ type: string type: array type: object- OuterString:+ OuterEnum:+ enum:+ - placed+ - approved+ - delivered type: string- ClassModel:- description: Model for testing model with "_class" property+ OuterComposite:+ example:+ my_string: my_string+ my_number: 0.8008281904610115+ my_boolean: true properties:- _class:+ my_number:+ type: number+ my_string: type: string+ my_boolean:+ type: boolean+ x-codegen-body-parameter-name: boolean_post_body type: object+ OuterNumber:+ type: number+ OuterString:+ type: string OuterBoolean: type: boolean x-codegen-body-parameter-name: boolean_post_body+ StringBooleanMap:+ additionalProperties:+ type: boolean+ type: object FileSchemaTestClass: example: file:@@ -1494,70 +1672,6 @@ $ref: '#/components/schemas/File' type: array type: object- Animal:- discriminator:- propertyName: className- properties:- className:- type: string- color:- default: red- type: string- required:- - className- type: object- StringBooleanMap:- additionalProperties:- type: boolean- type: object- Cat:- allOf:- - $ref: '#/components/schemas/Animal'- - properties:- declawed:- type: boolean- type: object- MapTest:- properties:- map_map_of_string:- additionalProperties:- additionalProperties:- type: string- type: object- type: object- map_of_enum_string:- additionalProperties:- enum:- - UPPER- - lower- type: string- type: object- direct_map:- additionalProperties:- type: boolean- type: object- indirect_map:- additionalProperties:- type: boolean- type: object- type: object- Tag:- example:- name: name- id: 1- properties:- id:- format: int64- type: integer- name:- type: string- type: object- xml:- name: Tag- AnimalFarm:- items:- $ref: '#/components/schemas/Animal'- type: array File: description: Must be named `File` for test. example:@@ -1567,68 +1681,238 @@ description: Test capitalization type: string type: object- Pet:- example:- photoUrls:- - photoUrls- - photoUrls- name: doggie- id: 0- category:- name: default-name- id: 6- tags:- - name: name- id: 1- - name: name- id: 1- status: available+ TypeHolderDefault: properties:- id:- format: int64+ string_item:+ default: what+ type: string+ number_item:+ type: number+ integer_item: type: integer- x-is-unique: true- category:- $ref: '#/components/schemas/Category'- name:- example: doggie+ bool_item:+ default: true+ type: boolean+ array_item:+ items:+ type: integer+ type: array+ required:+ - array_item+ - bool_item+ - integer_item+ - number_item+ - string_item+ type: object+ TypeHolderExample:+ properties:+ string_item:+ example: what type: string- photoUrls:+ number_item:+ example: 1.234+ type: number+ integer_item:+ example: -2+ type: integer+ bool_item:+ example: true+ type: boolean+ array_item:+ example:+ - 0+ - 1+ - 2+ - 3 items:- type: string+ type: integer type: array+ required:+ - array_item+ - bool_item+ - integer_item+ - number_item+ - string_item+ type: object+ XmlItem:+ properties:+ attribute_string:+ example: string+ type: string xml:- name: photoUrl+ attribute: true+ attribute_number:+ example: 1.234+ type: number+ xml:+ attribute: true+ attribute_integer:+ example: -2+ type: integer+ xml:+ attribute: true+ attribute_boolean:+ example: true+ type: boolean+ xml:+ attribute: true+ wrapped_array:+ items:+ type: integer+ type: array+ xml: wrapped: true- tags:+ name_string:+ example: string+ type: string+ xml:+ name: xml_name_string+ name_number:+ example: 1.234+ type: number+ xml:+ name: xml_name_number+ name_integer:+ example: -2+ type: integer+ xml:+ name: xml_name_integer+ name_boolean:+ example: true+ type: boolean+ xml:+ name: xml_name_boolean+ name_array: items:- $ref: '#/components/schemas/Tag'+ type: integer+ xml:+ name: xml_name_array_item type: array+ name_wrapped_array:+ items:+ type: integer+ xml:+ name: xml_name_wrapped_array_item+ type: array xml:- name: tag+ name: xml_name_wrapped_array wrapped: true- status:- description: pet status in the store- enum:- - available- - pending- - sold+ prefix_string:+ example: string type: string- required:- - name- - photoUrls- type: object- xml:- name: Pet- hasOnlyReadOnly:- properties:- bar:- readOnly: true+ xml:+ prefix: ab+ prefix_number:+ example: 1.234+ type: number+ xml:+ prefix: cd+ prefix_integer:+ example: -2+ type: integer+ xml:+ prefix: ef+ prefix_boolean:+ example: true+ type: boolean+ xml:+ prefix: gh+ prefix_array:+ items:+ type: integer+ xml:+ prefix: ij+ type: array+ prefix_wrapped_array:+ items:+ type: integer+ xml:+ prefix: mn+ type: array+ xml:+ prefix: kl+ wrapped: true+ namespace_string:+ example: string type: string- foo:- readOnly: true+ xml:+ namespace: http://a.com/schema+ namespace_number:+ example: 1.234+ type: number+ xml:+ namespace: http://b.com/schema+ namespace_integer:+ example: -2+ type: integer+ xml:+ namespace: http://c.com/schema+ namespace_boolean:+ example: true+ type: boolean+ xml:+ namespace: http://d.com/schema+ namespace_array:+ items:+ type: integer+ xml:+ namespace: http://e.com/schema+ type: array+ namespace_wrapped_array:+ items:+ type: integer+ xml:+ namespace: http://g.com/schema+ type: array+ xml:+ namespace: http://f.com/schema+ wrapped: true+ prefix_ns_string:+ example: string type: string+ xml:+ namespace: http://a.com/schema+ prefix: a+ prefix_ns_number:+ example: 1.234+ type: number+ xml:+ namespace: http://b.com/schema+ prefix: b+ prefix_ns_integer:+ example: -2+ type: integer+ xml:+ namespace: http://c.com/schema+ prefix: c+ prefix_ns_boolean:+ example: true+ type: boolean+ xml:+ namespace: http://d.com/schema+ prefix: d+ prefix_ns_array:+ items:+ type: integer+ xml:+ namespace: http://e.com/schema+ prefix: e+ type: array+ prefix_ns_wrapped_array:+ items:+ type: integer+ xml:+ namespace: http://g.com/schema+ prefix: g+ type: array+ xml:+ namespace: http://f.com/schema+ prefix: f+ wrapped: true type: object+ xml:+ namespace: http://a.com/schema+ prefix: pre securitySchemes: petstore_auth: flows:@@ -1638,9 +1922,6 @@ write:pets: modify pets in your account read:pets: read your pets type: oauth2- http_basic_test:- scheme: basic- type: http api_key: in: header name: api_key@@ -1649,3 +1930,6 @@ in: query name: api_key_query type: apiKey+ http_basic_test:+ scheme: basic+ type: http
tests/Instances.hs view
@@ -101,11 +101,6 @@ <$> arbitrary -- animalClassName :: Text <*> arbitrary -- animalColor :: Maybe Text -instance Arbitrary AnimalFarm where- arbitrary =- - pure AnimalFarm- instance Arbitrary ApiResponse where arbitrary = ApiResponse@@ -301,17 +296,30 @@ SpecialModelName <$> arbitrary -- specialModelNameSpecialPropertyName :: Maybe Integer -instance Arbitrary StringBooleanMap where- arbitrary =- - pure StringBooleanMap- instance Arbitrary Tag where arbitrary = Tag <$> arbitrary -- tagId :: Maybe Integer <*> arbitrary -- tagName :: Maybe Text +instance Arbitrary TypeHolderDefault where+ arbitrary =+ TypeHolderDefault+ <$> arbitrary -- typeHolderDefaultStringItem :: Text+ <*> arbitrary -- typeHolderDefaultNumberItem :: Double+ <*> arbitrary -- typeHolderDefaultIntegerItem :: Int+ <*> arbitrary -- typeHolderDefaultBoolItem :: Bool+ <*> arbitrary -- typeHolderDefaultArrayItem :: [Int]+ +instance Arbitrary TypeHolderExample where+ arbitrary =+ TypeHolderExample+ <$> arbitrary -- typeHolderExampleStringItem :: Text+ <*> arbitrary -- typeHolderExampleNumberItem :: Double+ <*> arbitrary -- typeHolderExampleIntegerItem :: Int+ <*> arbitrary -- typeHolderExampleBoolItem :: Bool+ <*> arbitrary -- typeHolderExampleArrayItem :: [Int]+ instance Arbitrary User where arbitrary = User@@ -323,6 +331,39 @@ <*> arbitrary -- userPassword :: Maybe Text <*> arbitrary -- userPhone :: Maybe Text <*> arbitrary -- userUserStatus :: Maybe Int+ +instance Arbitrary XmlItem where+ arbitrary =+ XmlItem+ <$> arbitrary -- xmlItemAttributeString :: Maybe Text+ <*> arbitrary -- xmlItemAttributeNumber :: Maybe Double+ <*> arbitrary -- xmlItemAttributeInteger :: Maybe Int+ <*> arbitrary -- xmlItemAttributeBoolean :: Maybe Bool+ <*> arbitrary -- xmlItemWrappedArray :: Maybe [Int]+ <*> arbitrary -- xmlItemNameString :: Maybe Text+ <*> arbitrary -- xmlItemNameNumber :: Maybe Double+ <*> arbitrary -- xmlItemNameInteger :: Maybe Int+ <*> arbitrary -- xmlItemNameBoolean :: Maybe Bool+ <*> arbitrary -- xmlItemNameArray :: Maybe [Int]+ <*> arbitrary -- xmlItemNameWrappedArray :: Maybe [Int]+ <*> arbitrary -- xmlItemPrefixString :: Maybe Text+ <*> arbitrary -- xmlItemPrefixNumber :: Maybe Double+ <*> arbitrary -- xmlItemPrefixInteger :: Maybe Int+ <*> arbitrary -- xmlItemPrefixBoolean :: Maybe Bool+ <*> arbitrary -- xmlItemPrefixArray :: Maybe [Int]+ <*> arbitrary -- xmlItemPrefixWrappedArray :: Maybe [Int]+ <*> arbitrary -- xmlItemNamespaceString :: Maybe Text+ <*> arbitrary -- xmlItemNamespaceNumber :: Maybe Double+ <*> arbitrary -- xmlItemNamespaceInteger :: Maybe Int+ <*> arbitrary -- xmlItemNamespaceBoolean :: Maybe Bool+ <*> arbitrary -- xmlItemNamespaceArray :: Maybe [Int]+ <*> arbitrary -- xmlItemNamespaceWrappedArray :: Maybe [Int]+ <*> arbitrary -- xmlItemPrefixNsString :: Maybe Text+ <*> arbitrary -- xmlItemPrefixNsNumber :: Maybe Double+ <*> arbitrary -- xmlItemPrefixNsInteger :: Maybe Int+ <*> arbitrary -- xmlItemPrefixNsBoolean :: Maybe Bool+ <*> arbitrary -- xmlItemPrefixNsArray :: Maybe [Int]+ <*> arbitrary -- xmlItemPrefixNsWrappedArray :: Maybe [Int]
tests/Test.hs view
@@ -22,7 +22,6 @@ pure () propMimeEq MimeJSON (Proxy :: Proxy AdditionalPropertiesClass) propMimeEq MimeJSON (Proxy :: Proxy Animal)- propMimeEq MimeJSON (Proxy :: Proxy AnimalFarm) propMimeEq MimeJSON (Proxy :: Proxy ApiResponse) propMimeEq MimeJSON (Proxy :: Proxy ArrayOfArrayOfNumberOnly) propMimeEq MimeJSON (Proxy :: Proxy ArrayOfNumberOnly)@@ -53,7 +52,9 @@ propMimeEq MimeJSON (Proxy :: Proxy Pet) propMimeEq MimeJSON (Proxy :: Proxy ReadOnlyFirst) propMimeEq MimeJSON (Proxy :: Proxy SpecialModelName)- propMimeEq MimeJSON (Proxy :: Proxy StringBooleanMap) propMimeEq MimeJSON (Proxy :: Proxy Tag)+ propMimeEq MimeJSON (Proxy :: Proxy TypeHolderDefault)+ propMimeEq MimeJSON (Proxy :: Proxy TypeHolderExample) propMimeEq MimeJSON (Proxy :: Proxy User)+ propMimeEq MimeJSON (Proxy :: Proxy XmlItem)