-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | OpenAPI3 Haskell Client Code Generator -- -- Please see the README on GitHub at -- https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator#readme @package openapi3-code-generator @version 0.1.0.4 -- | This module serves the purpose of defining common functionality which -- remains the same across all OpenAPI specifications. module OpenAPI.Common -- | An operation can and must be configured with data, which may be common -- for many operations. -- -- This configuration consists of information about the server URL and -- the used security scheme. -- -- In OpenAPI these information can be defined -- --
-- defaultConfiguration
-- { configSecurityScheme = BearerAuthenticationSecurityScheme "token" }
--
data Configuration s
Configuration :: Text -> s -> Configuration s
[configBaseURL] :: Configuration s -> Text
[configSecurityScheme] :: Configuration s -> s
-- | This is the main functionality of this module
--
-- It makes a concrete Call to a Server without a body
doCallWithConfiguration :: (MonadHTTP m, SecurityScheme s) => Configuration s -> Text -> Text -> [(Text, Maybe String)] -> m (Either HttpException (Response ByteString))
-- | Same as doCallWithConfiguration but run in a ReaderT
-- environment which contains the configuration. This is useful if
-- multiple calls have to be executed with the same configuration.
doCallWithConfigurationM :: (MonadHTTP m, SecurityScheme s) => Text -> Text -> [(Text, Maybe String)] -> ReaderT (Configuration s) m (Either HttpException (Response ByteString))
-- | This is the main functionality of this module
--
-- It makes a concrete Call to a Server with a body
doBodyCallWithConfiguration :: (MonadHTTP m, SecurityScheme s, ToJSON body) => Configuration s -> Text -> Text -> [(Text, Maybe String)] -> Maybe body -> RequestBodyEncoding -> m (Either HttpException (Response ByteString))
-- | Same as doBodyCallWithConfiguration but run in a ReaderT
-- environment which contains the configuration. This is useful if
-- multiple calls have to be executed with the same configuration.
doBodyCallWithConfigurationM :: (MonadHTTP m, SecurityScheme s, ToJSON body) => Text -> Text -> [(Text, Maybe String)] -> Maybe body -> RequestBodyEncoding -> ReaderT (Configuration s) m (Either HttpException (Response ByteString))
-- | Run the ReaderT monad with a specified configuration
--
-- Note: This is just flip runReaderT.
runWithConfiguration :: SecurityScheme s => Configuration s -> ReaderT (Configuration s) m a -> m a
-- | Abstracts the usage of httpBS away, so that it can be used for
-- testing
class Monad m => MonadHTTP m
httpBS :: MonadHTTP m => Request -> m (Either HttpException (Response ByteString))
-- | Stringifies a showable value
--
-- -- >>> stringifyModel "Test" -- "Test" ---- --
-- >>> stringifyModel 123 -- "123" --stringifyModel :: StringifyModel a => a -> String -- | This type class makes the code generation for URL parameters easier as -- it allows to stringify a value -- -- The Show class is not sufficient as strings should not be -- stringified with quotes. class Show a => StringifyModel a -- | Allows to specify an authentication scheme for requests done with -- doCallWithConfiguration -- -- This can be used to define custom schemes as well class SecurityScheme s authenticateRequest :: SecurityScheme s => s -> Request -> Request -- | The default authentication scheme which does not add any -- authentication information data AnonymousSecurityScheme AnonymousSecurityScheme :: AnonymousSecurityScheme -- | Convert Text a to ByteString textToByte :: Text -> ByteString -- | Wraps a ByteString to implement ToJSON and -- FromJSON newtype JsonByteString JsonByteString :: ByteString -> JsonByteString -- | Wraps a ZonedTime to implement ToJSON and -- FromJSON newtype JsonDateTime JsonDateTime :: ZonedTime -> JsonDateTime -- | Defines how a request body is encoded data RequestBodyEncoding -- | Encode the body as JSON RequestBodyEncodingJSON :: RequestBodyEncoding -- | Encode the body as form data RequestBodyEncodingFormData :: RequestBodyEncoding instance GHC.Show.Show OpenAPI.Common.JsonDateTime instance GHC.Classes.Ord OpenAPI.Common.JsonByteString instance GHC.Classes.Eq OpenAPI.Common.JsonByteString instance GHC.Show.Show OpenAPI.Common.JsonByteString instance GHC.Generics.Generic (OpenAPI.Common.Configuration s) instance GHC.Classes.Eq s => GHC.Classes.Eq (OpenAPI.Common.Configuration s) instance GHC.Classes.Ord s => GHC.Classes.Ord (OpenAPI.Common.Configuration s) instance GHC.Show.Show s => GHC.Show.Show (OpenAPI.Common.Configuration s) instance GHC.Classes.Eq OpenAPI.Common.JsonDateTime instance GHC.Classes.Ord OpenAPI.Common.JsonDateTime instance Data.Aeson.Types.ToJSON.ToJSON OpenAPI.Common.JsonDateTime instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Common.JsonDateTime instance Data.Aeson.Types.ToJSON.ToJSON OpenAPI.Common.JsonByteString instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Common.JsonByteString instance OpenAPI.Common.StringifyModel GHC.Base.String instance GHC.Show.Show a => OpenAPI.Common.StringifyModel a instance OpenAPI.Common.SecurityScheme OpenAPI.Common.AnonymousSecurityScheme instance OpenAPI.Common.MonadHTTP GHC.Types.IO instance OpenAPI.Common.MonadHTTP m => OpenAPI.Common.MonadHTTP (Control.Monad.Trans.Reader.ReaderT r m) -- | This module defines the available command line flags and their default -- values. module OpenAPI.Generate.Flags -- | The options passed to the generator via CLI data Flags Flags :: String -> Bool -> Bool -> Bool -> String -> String -> Bool -> Bool -> Bool -> String -> String -> String -> String -> Bool -> Flags -- | The directory where the generated output is stored. [optOutputDir] :: Flags -> String -- | Generate a stack project alongside the raw Haskell files [optGenerateStackProject] :: Flags -> Bool -- | Do not generate the output files but only print the generated code [optDryRun] :: Flags -> Bool -- | Overwrite output directory without question [optForce] :: Flags -> Bool -- | Name of the stack project [optPackageName] :: Flags -> String -- | Name of the module [optModuleName] :: Flags -> String -- | Use Data.Scientific instead of Double to support arbitary number -- precision [optUseFloatWithArbitraryPrecision] :: Flags -> Bool -- | Convert strings formatted as date / date-time to date types [optUseDateTypesAsString] :: Flags -> Bool -- | Convert names to CamelCase instead of using names which are as close -- as possible to the names provided in the specification [optConvertToCamelCase] :: Flags -> Bool -- | Add a suffix to property types to prevent naming conflicts [optPropertyTypeSuffix] :: Flags -> String -- | The suffix which is added to the response data types [optResponseTypeSuffix] :: Flags -> String -- | The suffix which is added to the response body data types [optResponseBodyTypeSuffix] :: Flags -> String -- | The suffix which is added to the request body data types [optRequestBodyTypeSuffix] :: Flags -> String -- | Use numbered data constructors (e. g. Variant1, Variant 2, etc.) for -- one-of types [optUseNumberedVariantConstructors] :: Flags -> Bool -- | Default flags which can be used for tests and as a reference which -- values actually are used defaultFlags :: Flags instance GHC.Classes.Eq OpenAPI.Generate.Flags.Flags instance GHC.Show.Show OpenAPI.Generate.Flags.Flags instance Options.Options OpenAPI.Generate.Flags.Flags -- | For more information see -- http://spec.openapis.org/oas/v3.0.3#external-documentation-object module OpenAPI.Generate.Types.ExternalDocumentation data ExternalDocumentationObject ExternalDocumentationObject :: Text -> Maybe Text -> ExternalDocumentationObject [url] :: ExternalDocumentationObject -> Text [description] :: ExternalDocumentationObject -> Maybe Text instance GHC.Generics.Generic OpenAPI.Generate.Types.ExternalDocumentation.ExternalDocumentationObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ExternalDocumentation.ExternalDocumentationObject instance GHC.Classes.Ord OpenAPI.Generate.Types.ExternalDocumentation.ExternalDocumentationObject instance GHC.Show.Show OpenAPI.Generate.Types.ExternalDocumentation.ExternalDocumentationObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ExternalDocumentation.ExternalDocumentationObject -- | Many fields in OpenAPI can be either a reference or a concrete object. -- This module adds this capabilities. -- -- For more information see -- http://spec.openapis.org/oas/v3.0.3#reference-object module OpenAPI.Generate.Types.Referencable -- | Represents either a reference or a concrete value data Referencable a -- | A reference with the JSON reference string pointing to the referenced -- target Reference :: Text -> Referencable a -- | A concrete value which can be used directly Concrete :: a -> Referencable a instance GHC.Classes.Ord a => GHC.Classes.Ord (OpenAPI.Generate.Types.Referencable.Referencable a) instance GHC.Classes.Eq a => GHC.Classes.Eq (OpenAPI.Generate.Types.Referencable.Referencable a) instance GHC.Show.Show a => GHC.Show.Show (OpenAPI.Generate.Types.Referencable.Referencable a) instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (OpenAPI.Generate.Types.Referencable.Referencable a) -- | This module specifies the data types from the OpenAPI specification -- 3.0.3 Schema -- -- For more information see http://spec.openapis.org/oas/v3.0.3 -- and https://json-schema.org/ -- -- All names in this module correspond to the respective OpenAPI types module OpenAPI.Generate.Types.Schema type Schema = Referencable SchemaObject data SchemaObject SchemaObject :: SchemaType -> Maybe Text -> Maybe Integer -> Maybe Float -> Bool -> Maybe Float -> Bool -> Maybe Word -> Maybe Word -> Maybe Text -> Maybe Word -> Maybe Word -> Bool -> Maybe Word -> Maybe Word -> Set Text -> Set Value -> Set Schema -> Set Schema -> Set Schema -> Maybe Schema -> Map Text Schema -> AdditionalProperties -> Maybe Text -> Maybe Text -> Maybe ConcreteValue -> Bool -> Maybe DiscriminatorObject -> Bool -> Bool -> Maybe XMLObject -> Maybe ExternalDocumentationObject -> Maybe Value -> Bool -> Maybe Schema -> SchemaObject [type'] :: SchemaObject -> SchemaType [title] :: SchemaObject -> Maybe Text [multipleOf] :: SchemaObject -> Maybe Integer [maximum] :: SchemaObject -> Maybe Float [exclusiveMaximum] :: SchemaObject -> Bool [minimum] :: SchemaObject -> Maybe Float [exclusiveMinimum] :: SchemaObject -> Bool [maxLength] :: SchemaObject -> Maybe Word [minLength] :: SchemaObject -> Maybe Word [pattern'] :: SchemaObject -> Maybe Text [maxItems] :: SchemaObject -> Maybe Word [minItems] :: SchemaObject -> Maybe Word [uniqueItems] :: SchemaObject -> Bool [maxProperties] :: SchemaObject -> Maybe Word [minProperties] :: SchemaObject -> Maybe Word [required] :: SchemaObject -> Set Text [enum] :: SchemaObject -> Set Value [allOf] :: SchemaObject -> Set Schema [oneOf] :: SchemaObject -> Set Schema [anyOf] :: SchemaObject -> Set Schema [not] :: SchemaObject -> Maybe Schema [properties] :: SchemaObject -> Map Text Schema [additionalProperties] :: SchemaObject -> AdditionalProperties [description] :: SchemaObject -> Maybe Text [format] :: SchemaObject -> Maybe Text [default'] :: SchemaObject -> Maybe ConcreteValue [nullable] :: SchemaObject -> Bool [discriminator] :: SchemaObject -> Maybe DiscriminatorObject [readOnly] :: SchemaObject -> Bool [writeOnly] :: SchemaObject -> Bool [xml] :: SchemaObject -> Maybe XMLObject [externalDocs] :: SchemaObject -> Maybe ExternalDocumentationObject [example] :: SchemaObject -> Maybe Value [deprecated] :: SchemaObject -> Bool [items] :: SchemaObject -> Maybe Schema data SchemaType SchemaTypeString :: SchemaType SchemaTypeNumber :: SchemaType SchemaTypeInteger :: SchemaType SchemaTypeBool :: SchemaType SchemaTypeObject :: SchemaType SchemaTypeArray :: SchemaType data DiscriminatorObject DiscriminatorObject :: Text -> Map Text Text -> DiscriminatorObject [propertyName] :: DiscriminatorObject -> Text [mapping] :: DiscriminatorObject -> Map Text Text data ConcreteValue StringDefaultValue :: Text -> ConcreteValue NumericDefaultValue :: Scientific -> ConcreteValue BoolDefaultValue :: Bool -> ConcreteValue OtherDefaultValue :: Value -> ConcreteValue data AdditionalProperties NoAdditionalProperties :: AdditionalProperties HasAdditionalProperties :: AdditionalProperties AdditionalPropertiesWithSchema :: Schema -> AdditionalProperties data XMLObject XMLObject :: Maybe Text -> Maybe Text -> Maybe Text -> Bool -> Bool -> XMLObject [name] :: XMLObject -> Maybe Text [namespace] :: XMLObject -> Maybe Text [prefix] :: XMLObject -> Maybe Text [attribute] :: XMLObject -> Bool [wrapped] :: XMLObject -> Bool instance GHC.Generics.Generic OpenAPI.Generate.Types.Schema.AdditionalProperties instance GHC.Classes.Ord OpenAPI.Generate.Types.Schema.AdditionalProperties instance GHC.Classes.Eq OpenAPI.Generate.Types.Schema.AdditionalProperties instance GHC.Show.Show OpenAPI.Generate.Types.Schema.AdditionalProperties instance GHC.Generics.Generic OpenAPI.Generate.Types.Schema.SchemaObject instance GHC.Classes.Ord OpenAPI.Generate.Types.Schema.SchemaObject instance GHC.Classes.Eq OpenAPI.Generate.Types.Schema.SchemaObject instance GHC.Show.Show OpenAPI.Generate.Types.Schema.SchemaObject instance GHC.Generics.Generic OpenAPI.Generate.Types.Schema.XMLObject instance GHC.Classes.Ord OpenAPI.Generate.Types.Schema.XMLObject instance GHC.Classes.Eq OpenAPI.Generate.Types.Schema.XMLObject instance GHC.Show.Show OpenAPI.Generate.Types.Schema.XMLObject instance GHC.Generics.Generic OpenAPI.Generate.Types.Schema.ConcreteValue instance GHC.Classes.Ord OpenAPI.Generate.Types.Schema.ConcreteValue instance GHC.Classes.Eq OpenAPI.Generate.Types.Schema.ConcreteValue instance GHC.Show.Show OpenAPI.Generate.Types.Schema.ConcreteValue instance GHC.Generics.Generic OpenAPI.Generate.Types.Schema.DiscriminatorObject instance GHC.Classes.Ord OpenAPI.Generate.Types.Schema.DiscriminatorObject instance GHC.Classes.Eq OpenAPI.Generate.Types.Schema.DiscriminatorObject instance GHC.Show.Show OpenAPI.Generate.Types.Schema.DiscriminatorObject instance GHC.Generics.Generic OpenAPI.Generate.Types.Schema.SchemaType instance GHC.Classes.Ord OpenAPI.Generate.Types.Schema.SchemaType instance GHC.Classes.Eq OpenAPI.Generate.Types.Schema.SchemaType instance GHC.Show.Show OpenAPI.Generate.Types.Schema.SchemaType instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.Schema.SchemaObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.Schema.AdditionalProperties instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.Schema.XMLObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.Schema.ConcreteValue instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.Schema.DiscriminatorObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.Schema.SchemaType instance GHC.Classes.Ord Data.Aeson.Types.Internal.Value -- | This module specifies the data types from the OpenAPI specification -- 3.0.3 -- -- For more information see http://spec.openapis.org/oas/v3.0.3 -- -- All names in this module correspond to the respective OpenAPI types module OpenAPI.Generate.Types type Schema = Referencable SchemaObject data TagObject TagObject :: Text -> Maybe Text -> Maybe ExternalDocumentationObject -> TagObject [$sel:name:TagObject] :: TagObject -> Text [$sel:description:TagObject] :: TagObject -> Maybe Text [$sel:externalDocs:TagObject] :: TagObject -> Maybe ExternalDocumentationObject data OpenIdConnectSecurityScheme OpenIdConnectSecurityScheme :: Maybe Text -> Text -> OpenIdConnectSecurityScheme [$sel:description:OpenIdConnectSecurityScheme] :: OpenIdConnectSecurityScheme -> Maybe Text [$sel:openIdConnectUrl:OpenIdConnectSecurityScheme] :: OpenIdConnectSecurityScheme -> Text data OAuthFlowObject OAuthFlowObject :: Maybe Text -> Maybe Text -> Maybe Text -> Map Text Text -> OAuthFlowObject [$sel:authorizationUrl:OAuthFlowObject] :: OAuthFlowObject -> Maybe Text [$sel:tokenUrl:OAuthFlowObject] :: OAuthFlowObject -> Maybe Text [$sel:refreshUrl:OAuthFlowObject] :: OAuthFlowObject -> Maybe Text [$sel:scopes:OAuthFlowObject] :: OAuthFlowObject -> Map Text Text data OAuthFlowsObject OAuthFlowsObject :: Maybe OAuthFlowObject -> Maybe OAuthFlowObject -> Maybe OAuthFlowObject -> Maybe OAuthFlowObject -> OAuthFlowsObject [$sel:implicit:OAuthFlowsObject] :: OAuthFlowsObject -> Maybe OAuthFlowObject [$sel:password:OAuthFlowsObject] :: OAuthFlowsObject -> Maybe OAuthFlowObject [$sel:clientCredentials:OAuthFlowsObject] :: OAuthFlowsObject -> Maybe OAuthFlowObject [$sel:authorizationCode:OAuthFlowsObject] :: OAuthFlowsObject -> Maybe OAuthFlowObject data OAuth2SecurityScheme OAuth2SecurityScheme :: Maybe Text -> OAuthFlowsObject -> OAuth2SecurityScheme [$sel:description:OAuth2SecurityScheme] :: OAuth2SecurityScheme -> Maybe Text [$sel:flows:OAuth2SecurityScheme] :: OAuth2SecurityScheme -> OAuthFlowsObject data HttpSecurityScheme HttpSecurityScheme :: Maybe Text -> Text -> Maybe Text -> HttpSecurityScheme [$sel:description:HttpSecurityScheme] :: HttpSecurityScheme -> Maybe Text [$sel:scheme:HttpSecurityScheme] :: HttpSecurityScheme -> Text [$sel:bearerFormat:HttpSecurityScheme] :: HttpSecurityScheme -> Maybe Text data ApiKeySecuritySchemeLocation QueryApiKeySecuritySchemeLocation :: ApiKeySecuritySchemeLocation HeaderApiKeySecuritySchemeLocation :: ApiKeySecuritySchemeLocation CookieApiKeySecuritySchemeLocation :: ApiKeySecuritySchemeLocation data ApiKeySecurityScheme ApiKeySecurityScheme :: Maybe Text -> Text -> ApiKeySecuritySchemeLocation -> ApiKeySecurityScheme [$sel:description:ApiKeySecurityScheme] :: ApiKeySecurityScheme -> Maybe Text [$sel:name:ApiKeySecurityScheme] :: ApiKeySecurityScheme -> Text [$sel:in':ApiKeySecurityScheme] :: ApiKeySecurityScheme -> ApiKeySecuritySchemeLocation data SecuritySchemeObject ApiKeySecuritySchemeObject :: ApiKeySecurityScheme -> SecuritySchemeObject HttpSecuritySchemeObject :: HttpSecurityScheme -> SecuritySchemeObject OAuth2SecuritySchemeObject :: OAuth2SecurityScheme -> SecuritySchemeObject OpenIdConnectSecuritySchemeObject :: OpenIdConnectSecurityScheme -> SecuritySchemeObject data ComponentsObject ComponentsObject :: Map Text Schema -> Map Text (Referencable ResponseObject) -> Map Text (Referencable ParameterObject) -> Map Text (Referencable ExampleObject) -> Map Text (Referencable RequestBodyObject) -> Map Text (Referencable HeaderObject) -> Map Text (Referencable SecuritySchemeObject) -> ComponentsObject [$sel:schemas:ComponentsObject] :: ComponentsObject -> Map Text Schema [$sel:responses:ComponentsObject] :: ComponentsObject -> Map Text (Referencable ResponseObject) [$sel:parameters:ComponentsObject] :: ComponentsObject -> Map Text (Referencable ParameterObject) [$sel:examples:ComponentsObject] :: ComponentsObject -> Map Text (Referencable ExampleObject) [$sel:requestBodies:ComponentsObject] :: ComponentsObject -> Map Text (Referencable RequestBodyObject) [$sel:headers:ComponentsObject] :: ComponentsObject -> Map Text (Referencable HeaderObject) [$sel:securitySchemes:ComponentsObject] :: ComponentsObject -> Map Text (Referencable SecuritySchemeObject) newtype HeaderObject HeaderObject :: ParameterObject -> HeaderObject data ParameterObjectSchema SimpleParameterObjectSchema :: Maybe Text -> Bool -> Bool -> Schema -> Maybe Value -> Map Text (Referencable ExampleObject) -> ParameterObjectSchema [$sel:style:SimpleParameterObjectSchema] :: ParameterObjectSchema -> Maybe Text [$sel:explode:SimpleParameterObjectSchema] :: ParameterObjectSchema -> Bool [$sel:allowReserved:SimpleParameterObjectSchema] :: ParameterObjectSchema -> Bool [$sel:schema:SimpleParameterObjectSchema] :: ParameterObjectSchema -> Schema [$sel:example:SimpleParameterObjectSchema] :: ParameterObjectSchema -> Maybe Value [$sel:examples:SimpleParameterObjectSchema] :: ParameterObjectSchema -> Map Text (Referencable ExampleObject) ComplexParameterObjectSchema :: Map Text MediaTypeObject -> ParameterObjectSchema data ParameterObjectLocation QueryParameterObjectLocation :: ParameterObjectLocation HeaderParameterObjectLocation :: ParameterObjectLocation PathParameterObjectLocation :: ParameterObjectLocation CookieParameterObjectLocation :: ParameterObjectLocation data ParameterObject ParameterObject :: Text -> ParameterObjectLocation -> Maybe Text -> Bool -> Bool -> Bool -> ParameterObjectSchema -> ParameterObject [$sel:name:ParameterObject] :: ParameterObject -> Text [$sel:in':ParameterObject] :: ParameterObject -> ParameterObjectLocation [$sel:description:ParameterObject] :: ParameterObject -> Maybe Text [$sel:required:ParameterObject] :: ParameterObject -> Bool [$sel:deprecated:ParameterObject] :: ParameterObject -> Bool [$sel:allowEmptyValue:ParameterObject] :: ParameterObject -> Bool [$sel:schema:ParameterObject] :: ParameterObject -> ParameterObjectSchema data ServerVariableObject ServerVariableObject :: [Text] -> Text -> Maybe Text -> ServerVariableObject [$sel:enum:ServerVariableObject] :: ServerVariableObject -> [Text] [$sel:default':ServerVariableObject] :: ServerVariableObject -> Text [$sel:description:ServerVariableObject] :: ServerVariableObject -> Maybe Text data ServerObject ServerObject :: Text -> Maybe Text -> Map Text ServerVariableObject -> ServerObject [$sel:url:ServerObject] :: ServerObject -> Text [$sel:description:ServerObject] :: ServerObject -> Maybe Text [$sel:variables:ServerObject] :: ServerObject -> Map Text ServerVariableObject data ResponseObject ResponseObject :: Text -> Map Text (Referencable HeaderObject) -> Map Text MediaTypeObject -> ResponseObject [$sel:description:ResponseObject] :: ResponseObject -> Text [$sel:headers:ResponseObject] :: ResponseObject -> Map Text (Referencable HeaderObject) [$sel:content:ResponseObject] :: ResponseObject -> Map Text MediaTypeObject data ResponsesObject ResponsesObject :: Maybe (Referencable ResponseObject) -> Maybe (Referencable ResponseObject) -> Maybe (Referencable ResponseObject) -> Maybe (Referencable ResponseObject) -> Maybe (Referencable ResponseObject) -> Maybe (Referencable ResponseObject) -> Map Int (Referencable ResponseObject) -> ResponsesObject [$sel:default':ResponsesObject] :: ResponsesObject -> Maybe (Referencable ResponseObject) [$sel:range1XX:ResponsesObject] :: ResponsesObject -> Maybe (Referencable ResponseObject) [$sel:range2XX:ResponsesObject] :: ResponsesObject -> Maybe (Referencable ResponseObject) [$sel:range3XX:ResponsesObject] :: ResponsesObject -> Maybe (Referencable ResponseObject) [$sel:range4XX:ResponsesObject] :: ResponsesObject -> Maybe (Referencable ResponseObject) [$sel:range5XX:ResponsesObject] :: ResponsesObject -> Maybe (Referencable ResponseObject) [$sel:perStatusCode:ResponsesObject] :: ResponsesObject -> Map Int (Referencable ResponseObject) data EncodingObject EncodingObject :: Maybe Text -> Map Text (Referencable HeaderObject) -> Maybe Text -> Bool -> Bool -> EncodingObject [$sel:contentType:EncodingObject] :: EncodingObject -> Maybe Text [$sel:headers:EncodingObject] :: EncodingObject -> Map Text (Referencable HeaderObject) [$sel:style:EncodingObject] :: EncodingObject -> Maybe Text [$sel:explode:EncodingObject] :: EncodingObject -> Bool [$sel:allowReserved:EncodingObject] :: EncodingObject -> Bool data ExampleObject ExampleObject :: Maybe Text -> Maybe Text -> Maybe Value -> Maybe Text -> ExampleObject [$sel:summary:ExampleObject] :: ExampleObject -> Maybe Text [$sel:description:ExampleObject] :: ExampleObject -> Maybe Text [$sel:value:ExampleObject] :: ExampleObject -> Maybe Value [$sel:externalValue:ExampleObject] :: ExampleObject -> Maybe Text data MediaTypeObject MediaTypeObject :: Maybe Schema -> Maybe Value -> Map Text (Referencable ExampleObject) -> Map Text EncodingObject -> MediaTypeObject [$sel:schema:MediaTypeObject] :: MediaTypeObject -> Maybe Schema [$sel:example:MediaTypeObject] :: MediaTypeObject -> Maybe Value [$sel:examples:MediaTypeObject] :: MediaTypeObject -> Map Text (Referencable ExampleObject) [$sel:encoding:MediaTypeObject] :: MediaTypeObject -> Map Text EncodingObject data RequestBodyObject RequestBodyObject :: Map Text MediaTypeObject -> Maybe Text -> Bool -> RequestBodyObject [$sel:content:RequestBodyObject] :: RequestBodyObject -> Map Text MediaTypeObject [$sel:description:RequestBodyObject] :: RequestBodyObject -> Maybe Text [$sel:required:RequestBodyObject] :: RequestBodyObject -> Bool type SecurityRequirementObject = Map Text [Text] data OperationObject OperationObject :: [Text] -> Maybe Text -> Maybe Text -> Maybe ExternalDocumentationObject -> Maybe Text -> [Referencable ParameterObject] -> Maybe (Referencable RequestBodyObject) -> ResponsesObject -> Bool -> [SecurityRequirementObject] -> [ServerObject] -> OperationObject [$sel:tags:OperationObject] :: OperationObject -> [Text] [$sel:summary:OperationObject] :: OperationObject -> Maybe Text [$sel:description:OperationObject] :: OperationObject -> Maybe Text [$sel:externalDocs:OperationObject] :: OperationObject -> Maybe ExternalDocumentationObject [$sel:operationId:OperationObject] :: OperationObject -> Maybe Text [$sel:parameters:OperationObject] :: OperationObject -> [Referencable ParameterObject] [$sel:requestBody:OperationObject] :: OperationObject -> Maybe (Referencable RequestBodyObject) [$sel:responses:OperationObject] :: OperationObject -> ResponsesObject [$sel:deprecated:OperationObject] :: OperationObject -> Bool [$sel:security:OperationObject] :: OperationObject -> [SecurityRequirementObject] [$sel:servers:OperationObject] :: OperationObject -> [ServerObject] data PathItemObject PathItemObject :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe OperationObject -> Maybe OperationObject -> Maybe OperationObject -> Maybe OperationObject -> Maybe OperationObject -> Maybe OperationObject -> Maybe OperationObject -> Maybe OperationObject -> [ServerObject] -> [Referencable ParameterObject] -> PathItemObject [$sel:ref:PathItemObject] :: PathItemObject -> Maybe Text [$sel:summary:PathItemObject] :: PathItemObject -> Maybe Text [$sel:description:PathItemObject] :: PathItemObject -> Maybe Text [$sel:get:PathItemObject] :: PathItemObject -> Maybe OperationObject [$sel:put:PathItemObject] :: PathItemObject -> Maybe OperationObject [$sel:post:PathItemObject] :: PathItemObject -> Maybe OperationObject [$sel:delete:PathItemObject] :: PathItemObject -> Maybe OperationObject [$sel:options:PathItemObject] :: PathItemObject -> Maybe OperationObject [$sel:head:PathItemObject] :: PathItemObject -> Maybe OperationObject [$sel:patch:PathItemObject] :: PathItemObject -> Maybe OperationObject [$sel:trace:PathItemObject] :: PathItemObject -> Maybe OperationObject [$sel:servers:PathItemObject] :: PathItemObject -> [ServerObject] [$sel:parameters:PathItemObject] :: PathItemObject -> [Referencable ParameterObject] type PathsObject = Map Text PathItemObject data LicenseObject LicenseObject :: Text -> Maybe Text -> LicenseObject [$sel:name:LicenseObject] :: LicenseObject -> Text [$sel:url:LicenseObject] :: LicenseObject -> Maybe Text data ContactObject ContactObject :: Maybe Text -> Maybe Text -> Maybe Text -> ContactObject [$sel:name:ContactObject] :: ContactObject -> Maybe Text [$sel:url:ContactObject] :: ContactObject -> Maybe Text [$sel:email:ContactObject] :: ContactObject -> Maybe Text data InfoObject InfoObject :: Text -> Maybe Text -> Maybe Text -> Maybe ContactObject -> Maybe LicenseObject -> Text -> InfoObject [$sel:title:InfoObject] :: InfoObject -> Text [$sel:description:InfoObject] :: InfoObject -> Maybe Text [$sel:termsOfService:InfoObject] :: InfoObject -> Maybe Text [$sel:contact:InfoObject] :: InfoObject -> Maybe ContactObject [$sel:license:InfoObject] :: InfoObject -> Maybe LicenseObject [$sel:version:InfoObject] :: InfoObject -> Text data OpenApiSpecification OpenApiSpecification :: Text -> InfoObject -> [ServerObject] -> PathsObject -> ComponentsObject -> [SecurityRequirementObject] -> [TagObject] -> Maybe ExternalDocumentationObject -> OpenApiSpecification [$sel:openapi:OpenApiSpecification] :: OpenApiSpecification -> Text [$sel:info:OpenApiSpecification] :: OpenApiSpecification -> InfoObject [$sel:servers:OpenApiSpecification] :: OpenApiSpecification -> [ServerObject] [$sel:paths:OpenApiSpecification] :: OpenApiSpecification -> PathsObject [$sel:components:OpenApiSpecification] :: OpenApiSpecification -> ComponentsObject [$sel:security:OpenApiSpecification] :: OpenApiSpecification -> [SecurityRequirementObject] [$sel:tags:OpenApiSpecification] :: OpenApiSpecification -> [TagObject] [$sel:externalDocs:OpenApiSpecification] :: OpenApiSpecification -> Maybe ExternalDocumentationObject instance GHC.Generics.Generic OpenAPI.Generate.Types.OpenApiSpecification instance GHC.Classes.Eq OpenAPI.Generate.Types.OpenApiSpecification instance GHC.Show.Show OpenAPI.Generate.Types.OpenApiSpecification instance GHC.Generics.Generic OpenAPI.Generate.Types.TagObject instance GHC.Classes.Eq OpenAPI.Generate.Types.TagObject instance GHC.Show.Show OpenAPI.Generate.Types.TagObject instance GHC.Generics.Generic OpenAPI.Generate.Types.ComponentsObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ComponentsObject instance GHC.Show.Show OpenAPI.Generate.Types.ComponentsObject instance GHC.Generics.Generic OpenAPI.Generate.Types.SecuritySchemeObject instance GHC.Classes.Eq OpenAPI.Generate.Types.SecuritySchemeObject instance GHC.Show.Show OpenAPI.Generate.Types.SecuritySchemeObject instance GHC.Generics.Generic OpenAPI.Generate.Types.OpenIdConnectSecurityScheme instance GHC.Classes.Eq OpenAPI.Generate.Types.OpenIdConnectSecurityScheme instance GHC.Show.Show OpenAPI.Generate.Types.OpenIdConnectSecurityScheme instance GHC.Generics.Generic OpenAPI.Generate.Types.OAuth2SecurityScheme instance GHC.Classes.Eq OpenAPI.Generate.Types.OAuth2SecurityScheme instance GHC.Show.Show OpenAPI.Generate.Types.OAuth2SecurityScheme instance GHC.Generics.Generic OpenAPI.Generate.Types.OAuthFlowsObject instance GHC.Classes.Eq OpenAPI.Generate.Types.OAuthFlowsObject instance GHC.Show.Show OpenAPI.Generate.Types.OAuthFlowsObject instance GHC.Generics.Generic OpenAPI.Generate.Types.OAuthFlowObject instance GHC.Classes.Eq OpenAPI.Generate.Types.OAuthFlowObject instance GHC.Show.Show OpenAPI.Generate.Types.OAuthFlowObject instance GHC.Generics.Generic OpenAPI.Generate.Types.HttpSecurityScheme instance GHC.Classes.Eq OpenAPI.Generate.Types.HttpSecurityScheme instance GHC.Show.Show OpenAPI.Generate.Types.HttpSecurityScheme instance GHC.Generics.Generic OpenAPI.Generate.Types.ApiKeySecurityScheme instance GHC.Classes.Eq OpenAPI.Generate.Types.ApiKeySecurityScheme instance GHC.Show.Show OpenAPI.Generate.Types.ApiKeySecurityScheme instance GHC.Generics.Generic OpenAPI.Generate.Types.ApiKeySecuritySchemeLocation instance GHC.Classes.Eq OpenAPI.Generate.Types.ApiKeySecuritySchemeLocation instance GHC.Show.Show OpenAPI.Generate.Types.ApiKeySecuritySchemeLocation instance GHC.Generics.Generic OpenAPI.Generate.Types.PathItemObject instance GHC.Classes.Eq OpenAPI.Generate.Types.PathItemObject instance GHC.Show.Show OpenAPI.Generate.Types.PathItemObject instance GHC.Generics.Generic OpenAPI.Generate.Types.OperationObject instance GHC.Classes.Eq OpenAPI.Generate.Types.OperationObject instance GHC.Show.Show OpenAPI.Generate.Types.OperationObject instance GHC.Generics.Generic OpenAPI.Generate.Types.RequestBodyObject instance GHC.Classes.Eq OpenAPI.Generate.Types.RequestBodyObject instance GHC.Show.Show OpenAPI.Generate.Types.RequestBodyObject instance GHC.Generics.Generic OpenAPI.Generate.Types.ResponsesObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ResponsesObject instance GHC.Show.Show OpenAPI.Generate.Types.ResponsesObject instance GHC.Generics.Generic OpenAPI.Generate.Types.ResponseObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ResponseObject instance GHC.Show.Show OpenAPI.Generate.Types.ResponseObject instance GHC.Generics.Generic OpenAPI.Generate.Types.EncodingObject instance GHC.Classes.Eq OpenAPI.Generate.Types.EncodingObject instance GHC.Show.Show OpenAPI.Generate.Types.EncodingObject instance GHC.Generics.Generic OpenAPI.Generate.Types.MediaTypeObject instance GHC.Classes.Eq OpenAPI.Generate.Types.MediaTypeObject instance GHC.Show.Show OpenAPI.Generate.Types.MediaTypeObject instance GHC.Generics.Generic OpenAPI.Generate.Types.ParameterObjectSchema instance GHC.Classes.Eq OpenAPI.Generate.Types.ParameterObjectSchema instance GHC.Show.Show OpenAPI.Generate.Types.ParameterObjectSchema instance GHC.Generics.Generic OpenAPI.Generate.Types.ParameterObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ParameterObject instance GHC.Show.Show OpenAPI.Generate.Types.ParameterObject instance GHC.Generics.Generic OpenAPI.Generate.Types.HeaderObject instance GHC.Classes.Eq OpenAPI.Generate.Types.HeaderObject instance GHC.Show.Show OpenAPI.Generate.Types.HeaderObject instance GHC.Generics.Generic OpenAPI.Generate.Types.ParameterObjectLocation instance GHC.Classes.Eq OpenAPI.Generate.Types.ParameterObjectLocation instance GHC.Show.Show OpenAPI.Generate.Types.ParameterObjectLocation instance GHC.Generics.Generic OpenAPI.Generate.Types.ServerObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ServerObject instance GHC.Show.Show OpenAPI.Generate.Types.ServerObject instance GHC.Generics.Generic OpenAPI.Generate.Types.ServerVariableObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ServerVariableObject instance GHC.Show.Show OpenAPI.Generate.Types.ServerVariableObject instance GHC.Generics.Generic OpenAPI.Generate.Types.ExampleObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ExampleObject instance GHC.Show.Show OpenAPI.Generate.Types.ExampleObject instance GHC.Generics.Generic OpenAPI.Generate.Types.InfoObject instance GHC.Classes.Eq OpenAPI.Generate.Types.InfoObject instance GHC.Show.Show OpenAPI.Generate.Types.InfoObject instance GHC.Generics.Generic OpenAPI.Generate.Types.LicenseObject instance GHC.Classes.Eq OpenAPI.Generate.Types.LicenseObject instance GHC.Show.Show OpenAPI.Generate.Types.LicenseObject instance GHC.Generics.Generic OpenAPI.Generate.Types.ContactObject instance GHC.Classes.Eq OpenAPI.Generate.Types.ContactObject instance GHC.Show.Show OpenAPI.Generate.Types.ContactObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.OpenApiSpecification instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.TagObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ComponentsObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.SecuritySchemeObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.OpenIdConnectSecurityScheme instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.OAuth2SecurityScheme instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.OAuthFlowsObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.OAuthFlowObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.HttpSecurityScheme instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ApiKeySecurityScheme instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ApiKeySecuritySchemeLocation instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.PathItemObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.OperationObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.RequestBodyObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ResponsesObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ResponseObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.MediaTypeObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.EncodingObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ParameterObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ParameterObjectSchema instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.HeaderObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ParameterObjectLocation instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ServerObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ServerVariableObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ExampleObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.InfoObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.LicenseObject instance Data.Aeson.Types.FromJSON.FromJSON OpenAPI.Generate.Types.ContactObject -- | Contains function to resolve references within the OpenAPI -- specification module OpenAPI.Generate.Reference -- | A lookup table for references within the OpenAPI specification type ReferenceMap = Map Text ComponentReference -- | Represents all types the ReferenceMap can hold data ComponentReference SchemaReference :: SchemaObject -> ComponentReference ResponseReference :: ResponseObject -> ComponentReference ParameterReference :: ParameterObject -> ComponentReference ExampleReference :: ExampleObject -> ComponentReference RequestBodyReference :: RequestBodyObject -> ComponentReference HeaderReference :: HeaderObject -> ComponentReference SecuritySchemeReference :: SecuritySchemeObject -> ComponentReference -- | Creates a ReferenceMap from an OpenApiSpecification -- containing all elements within components. It does not capture -- possibly referenced locations anywhere else in the specification. buildReferenceMap :: OpenApiSpecification -> ReferenceMap -- | Resolve a SchemaObject reference from a ReferenceMap getSchemaReference :: Text -> ReferenceMap -> Maybe SchemaObject -- | Resolve a ResponseObject reference from a ReferenceMap getResponseReference :: Text -> ReferenceMap -> Maybe ResponseObject -- | Resolve a ParameterObject reference from a ReferenceMap getParameterReference :: Text -> ReferenceMap -> Maybe ParameterObject -- | Resolve a ExampleObject reference from a ReferenceMap getExampleReference :: Text -> ReferenceMap -> Maybe ExampleObject -- | Resolve a RequestBodyObject reference from a -- ReferenceMap getRequestBodyReference :: Text -> ReferenceMap -> Maybe RequestBodyObject -- | Resolve a HeaderObject reference from a ReferenceMap getHeaderReference :: Text -> ReferenceMap -> Maybe HeaderObject -- | Resolve a SecuritySchemeObject reference from a -- ReferenceMap getSecuritySchemeReference :: Text -> ReferenceMap -> Maybe SecuritySchemeObject instance GHC.Generics.Generic OpenAPI.Generate.Reference.ComponentReference instance GHC.Classes.Eq OpenAPI.Generate.Reference.ComponentReference instance GHC.Show.Show OpenAPI.Generate.Reference.ComponentReference -- | This module contains the Generator monad and functions which -- deal with this monad. In addition this module contains the means for -- logging and resolving references since they are closely linked to the -- Generator monad. module OpenAPI.Generate.Monad -- | The reader environment of the Generator monad -- -- The currentPath is updated using the nested function to -- track the current position within the specification. This is used to -- produce tracable log messages. The references map is a lookup -- table for references within the OpenAPI specification. data GeneratorEnvironment GeneratorEnvironment :: [Text] -> ReferenceMap -> Flags -> GeneratorEnvironment [currentPath] :: GeneratorEnvironment -> [Text] [references] :: GeneratorEnvironment -> ReferenceMap [flags] :: GeneratorEnvironment -> Flags -- | Data type representing the log severities data GeneratorLogSeverity ErrorSeverity :: GeneratorLogSeverity WarningSeverity :: GeneratorLogSeverity InfoSeverity :: GeneratorLogSeverity -- | A log entry containing the location within the OpenAPI specification -- where the message was produced, a severity and the actual message. data GeneratorLogEntry GeneratorLogEntry :: [Text] -> GeneratorLogSeverity -> Text -> GeneratorLogEntry [path] :: GeneratorLogEntry -> [Text] [severity] :: GeneratorLogEntry -> GeneratorLogSeverity [message] :: GeneratorLogEntry -> Text -- | The type contained in the writer of the Generator used to -- collect log entries type GeneratorLogs = [GeneratorLogEntry] -- | The Generator monad is used to pass a Reader environment -- to functions in need of resolving references and collects log -- messages. newtype Generator a Generator :: WriterT GeneratorLogs (Reader GeneratorEnvironment) a -> Generator a [unGenerator] :: Generator a -> WriterT GeneratorLogs (Reader GeneratorEnvironment) a -- | Runs the generator monad within a provided environment. runGenerator :: GeneratorEnvironment -> Generator a -> (a, GeneratorLogs) -- | Create an environment based on a ReferenceMap and Flags createEnvironment :: Flags -> ReferenceMap -> GeneratorEnvironment -- | Writes a log message to a Generator monad logMessage :: GeneratorLogSeverity -> Text -> Generator () -- | Writes an error to a Generator monad logError :: Text -> Generator () -- | Writes a warning to a Generator monad logWarning :: Text -> Generator () -- | Writes an info to a Generator monad logInfo :: Text -> Generator () -- | Transforms a log returned from runGenerator to a list of -- Text values for easier printing. transformGeneratorLogs :: GeneratorLogs -> [Text] -- | Transforms the severity to a Text representation transformSeverity :: GeneratorLogSeverity -> Text -- | Transforms the path to a Text representation (parts are -- seperated with a dot) transformPath :: [Text] -> Text -- | This function can be used to tell the Generator monad where in -- the OpenAPI specification the generator currently is nested :: Text -> Generator a -> Generator a -- | Helper function to create a lookup function for a specific type createReferenceLookupM :: (Text -> ReferenceMap -> Maybe a) -> Text -> Generator (Maybe a) -- | Resolve a SchemaObject reference from within the -- Generator monad getSchemaReferenceM :: Text -> Generator (Maybe SchemaObject) -- | Resolve a ResponseObject reference from within the -- Generator monad getResponseReferenceM :: Text -> Generator (Maybe ResponseObject) -- | Resolve a ParameterObject reference from within the -- Generator monad getParameterReferenceM :: Text -> Generator (Maybe ParameterObject) -- | Resolve a ExampleObject reference from within the -- Generator monad getExampleReferenceM :: Text -> Generator (Maybe ExampleObject) -- | Resolve a RequestBodyObject reference from within the -- Generator monad getRequestBodyReferenceM :: Text -> Generator (Maybe RequestBodyObject) -- | Resolve a HeaderObject reference from within the -- Generator monad getHeaderReferenceM :: Text -> Generator (Maybe HeaderObject) -- | Resolve a SecuritySchemeObject reference from within the -- Generator monad getSecuritySchemeReferenceM :: Text -> Generator (Maybe SecuritySchemeObject) -- | Get all flags passed to the program getFlags :: Generator Flags -- | Get a specific flag selected by f getFlag :: (Flags -> a) -> Generator a instance Control.Monad.Writer.Class.MonadWriter OpenAPI.Generate.Monad.GeneratorLogs OpenAPI.Generate.Monad.Generator instance Control.Monad.Reader.Class.MonadReader OpenAPI.Generate.Monad.GeneratorEnvironment OpenAPI.Generate.Monad.Generator instance GHC.Base.Monad OpenAPI.Generate.Monad.Generator instance GHC.Base.Applicative OpenAPI.Generate.Monad.Generator instance GHC.Base.Functor OpenAPI.Generate.Monad.Generator instance GHC.Classes.Eq OpenAPI.Generate.Monad.GeneratorLogEntry instance GHC.Show.Show OpenAPI.Generate.Monad.GeneratorLogEntry instance GHC.Classes.Eq OpenAPI.Generate.Monad.GeneratorLogSeverity instance GHC.Show.Show OpenAPI.Generate.Monad.GeneratorLogSeverity instance GHC.Classes.Eq OpenAPI.Generate.Monad.GeneratorEnvironment instance GHC.Show.Show OpenAPI.Generate.Monad.GeneratorEnvironment -- | Utility functions for the OpenAPI code generator module OpenAPI.Generate.Internal.Util -- | Transform an identifier to ensure it is a valid Haskell identifier -- Additionally, this function applies style settings according to the -- need of the consumer. haskellifyText :: Bool -> Bool -> Text -> String -- | The same as haskellifyText but transform the result to a -- Name haskellifyName :: Bool -> Bool -> Text -> Name -- | Generator version of haskellifyName haskellifyNameM :: Bool -> Text -> Generator Name -- | Transform a module name to ensure it is valid for file names transformToModuleName :: Text -> Text -- | Uppercase the first character of a Text uppercaseFirstText :: Text -> Text -- | A version of mapMaybe that works with a monadic predicate. from -- https://hackage.haskell.org/package/extra-1.7.1/docs/src/Control.Monad.Extra.html#mapMaybeM -- copied mapMaybeM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b] -- | Lifted version of <> which can be used with -- Semigroups inside Applicatives liftedAppend :: (Applicative f, Semigroup a) => f a -> f a -> f a -- | Split a list on on a given element splitOn :: Eq a => a -> [a] -> [[a]] -- | Concat a list of strings with a point -- --
-- >>> joinWithPoint ["a", "b", "c"] -- "a.b.c" --joinWithPoint :: [String] -> String -- | Concat a list of values separated by an other value joinWith :: Monoid a => a -> [a] -> a -- | Utility functions for Doc manipulation module OpenAPI.Generate.Doc -- | Empty document inside an Applicative (typically Q) emptyDoc :: Applicative f => f Doc -- | Append a Doc to another inside an Applicative (typically -- Q) appendDoc :: Applicative f => f Doc -> f Doc -> f Doc -- | Generate a Haddock comment with multiple lines generateHaddockComment :: [Text] -> Doc -- | Escape text for use in Haddock comment escapeText :: Text -> Text -- | Add line breaks to a Doc at all occurrences of the passed -- tokens (removes all other line breaks). breakOnTokens :: [Text] -> Doc -> Doc -- | Add line breaks to a Doc at all occurrences of the passed -- tokens (removes all other line breaks). The replacement function is -- used to generate the text replacing the tokens. breakOnTokensWithReplacement :: (Text -> Text) -> [Text] -> Doc -> Doc -- | Convert a list of lines to side comments sideComments :: [Text] -> Doc -- | Intertwine code lines with comment lines -- -- The code lines should have one more line (the first line is not -- commented) zipCodeAndComments :: [Text] -> [Text] -> Doc -- | Place two documents side-by-side, aligned at the top line -- -- If one of the documents is longer than the other, the shorter one is -- extended with empty lines. The lines of the right document are aligned -- in the same column, no matter if the left document is shorter or -- longer -- -- Example usage: -- --
-- >>> show $ sideBySide (text "a") (text "b" $$ text "c") -- a b -- c --sideBySide :: Doc -> Doc -> Doc -- | Add the module header to a module of an operation addOperationsModuleHeader :: String -> String -> String -> Doc -> Doc -- | Add the module header to the security scheme module addSecuritySchemesModuleHeader :: String -> Doc -> Doc -- | Add the module header to the configuration module addConfigurationModuleHeader :: String -> Doc -> Doc -- | Create a Doc containing a module which imports other modules -- and re-exports them createModuleHeaderWithReexports :: String -> [String] -> String -> Doc -- | Add the module header to a module of a model addModelModuleHeader :: String -> String -> [String] -> String -> Doc -> Doc -- | Provides the generation functions for the supported security schemes module OpenAPI.Generate.SecurityScheme -- | Defines the security schemes which are configured in the OpenAPI -- specification -- -- Generates warnings if unsupported schemes are defined in the -- specification defineSupportedSecuritySchemes :: Text -> [(Text, SecuritySchemeObject)] -> Generator (Q Doc) -- | Functionality to split models into multiple modules according to their -- dependencies module OpenAPI.Generate.ModelDependencies -- | Analyzes the dependencies of the provided models and splits them into -- modules. All models with cyclic dependencies (between each other or to -- itself) are put in a module named by cyclicTypesModule. getModelModulesFromModelsWithDependencies :: String -> [ModelWithDependencies] -> Q [ModuleDefinition] -- | A module definition with a name as a string list with the different -- module levels (e. g. ["OpenAPI", "Generate"] for -- OpenAPI.Generate) and the Doc representing the module -- content type ModuleDefinition = ([String], Doc) -- | A set of model names (typically used as dependency list) type Models = Set Text -- | A tuple containing the content and the dependencies of a model type ModelContentWithDependencies = (Q Doc, Models) -- | Represents a model with a name, content and dependencies type ModelWithDependencies = (Text, ModelContentWithDependencies) -- | Defines functionality for the generation of models from OpenAPI -- schemas module OpenAPI.Generate.Model -- | Extracts the Name of a SchemaObject which should be used -- for primitive types getSchemaType :: Flags -> SchemaObject -> Name -- | Transforms a Schema (either a reference or a concrete object) -- to Maybe SchemaObject If a reference is found -- it is resolved. If it is not found, no log message is generated. resolveSchemaReferenceWithoutWarning :: Schema -> Generator (Maybe SchemaObject) -- | Extracts the constraints of a SchemaObject as human readable -- text getConstraintDescriptionsOfSchema :: Maybe SchemaObject -> [Text] -- | Defines all the models for a schema and returns the declarations with -- the type of the root model defineModelForSchemaNamed :: Text -> Schema -> Generator TypeWithDeclaration -- | Defines all the models for a schema defineModelForSchema :: Text -> Schema -> Generator ModelWithDependencies -- | The type of a model and the declarations needed for defining it type TypeWithDeclaration = (Q Type, ModelContentWithDependencies) instance GHC.Classes.Ord OpenAPI.Generate.Model.TypeAliasStrategy instance GHC.Classes.Eq OpenAPI.Generate.Model.TypeAliasStrategy instance GHC.Show.Show OpenAPI.Generate.Model.TypeAliasStrategy -- | Helpers for the generation of the operation functions module OpenAPI.Generate.Internal.Operation -- | Resolve a possibly referenced response to a concrete value. -- -- A warning is logged if the reference is not found. getResponseObject :: Referencable ResponseObject -> Generator (Maybe ResponseObject) -- | Extracts the response Schema from a ResponseObject. -- -- A warning is logged if the response does not contain one of the -- supported media types. getResponseSchema :: ResponseObject -> Generator (Maybe Schema) -- | Defines the body of an Operation function The Operation function calls -- an generall HTTP function all Parameters are arguments to the function defineOperationFunction :: Bool -> Name -> [ParameterObject] -> Text -> Text -> Maybe RequestBodyDefinition -> Q Exp -> Generator (Q Doc) -- | Get a description of a parameter object (the name and if available the -- description from the specification) getParameterDescription :: ParameterObject -> Generator Text -- | Get the type of a parameter depending on its schema type and the -- configuration options (Flags). If the parameter is not -- required, a Maybe type is produced. getParameterType :: Flags -> ParameterObject -> Q Type -- | Gets the Type definition dependent on the number of parameters/types A -- monadic name for which its forall structure is defined outside this -- function can be given -- --
-- [t|OC.Configuration -> Int -> $(varT monadName) ($(responseType) $(responseInnerType))|] -- = getParametersTypeForSignature conT ''Int -- --getParametersTypeForSignature :: [Q Type] -> Name -> Name -> Name -> Q Type -- | Same as getParametersTypeForSignature but with the -- configuration in ReaderT instead of a parameter getParametersTypeForSignatureWithMonadTransformer :: [Q Type] -> Name -> Name -> Name -> Q Type -- | Constructs the name of an operation. If an -- $sel:operationId:OperationObject is available, this is the -- primary choice. If it is not available, the id is constructed based on -- the request path and method. getOperationName :: Text -> Text -> OperationObject -> Generator Name -- | Extracts a description from an OperationObject. If available, -- the description is used, the summary otherwise. If neither is -- available, an empty description is used. getOperationDescription :: OperationObject -> Text -- | Extracts all parameters of an operation -- -- Concrete objects are always added. References try to get resolved to a -- concrete object. If this fails, the parameter is skipped and a warning -- gets produced. getParametersFromOperationConcrete :: OperationObject -> Generator [ParameterObject] -- | Extracts the request body schema from an operation and the encoding -- which should be used on the body data. getBodySchemaFromOperation :: OperationObject -> Generator (Maybe RequestBodyDefinition) -- | Resolves placeholders in paths with dynamic expressions -- -- "my{var}path" -> "my" ++ myVar ++ "/path" -- -- If the placeholder is at the end or at the beginning an empty string -- gets appended generateParameterizedRequestPath :: [(Name, ParameterObject)] -> Text -> Q Exp -- | Generates query params in the form of [(Text,ByteString)] generateQueryParams :: [(Name, ParameterObject)] -> Q Exp -- | Extracted request body information which can be used for code -- generation data RequestBodyDefinition RequestBodyDefinition :: Schema -> RequestBodyEncoding -> Bool -> RequestBodyDefinition [$sel:schema:RequestBodyDefinition] :: RequestBodyDefinition -> Schema [$sel:encoding:RequestBodyDefinition] :: RequestBodyDefinition -> RequestBodyEncoding [$sel:required:RequestBodyDefinition] :: RequestBodyDefinition -> Bool -- | This module contains the utilities to define the data types of the -- response type of an operation module OpenAPI.Generate.Response -- | Generates a response type with a constructor for all possible response -- types of the operation. -- -- Always generates an error case which is used if no other case matches. getResponseDefinitions :: OperationObject -> (Text -> Text) -> Generator (Name, Q Exp, Q Doc) -- | Contains the functionality to define operation functions for path -- items. module OpenAPI.Generate.Operation -- | Defines the operations for all paths and their methods defineOperationsForPath :: String -> Text -> PathItemObject -> Generator (Q [ModuleDefinition]) -- | Functionality to Generate Haskell Code out of an OpenAPI definition -- File module OpenAPI.Generate -- | Decodes an OpenAPI File decodeOpenApi :: String -> IO OpenApiSpecification -- | Defines all the operations as functions and the common imports defineOperations :: String -> OpenApiSpecification -> Generator (Q [ModuleDefinition]) -- | Defines the defaultURL and the defaultConfiguration -- containing this URL. defineConfigurationInformation :: String -> OpenApiSpecification -> Q Doc -- | Defines all models in the components.schemas section of the -- OpenApiSpecification defineModels :: String -> OpenApiSpecification -> Generator (Q [ModuleDefinition]) -- | Defines all supported security schemes from the -- OpenApiSpecification. defineSecuritySchemes :: String -> OpenApiSpecification -> Generator (Q Doc)