{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TemplateHaskell #-} module Data.Swagger.Lens where import Control.Lens import Control.Lens.TH import Data.Aeson (Value) import Data.Swagger.Internal import Data.Text (Text) -- ======================================================================= -- TH derived lenses -- ======================================================================= makeLenses ''Swagger makeLenses ''SwaggerHost makeLenses ''SwaggerInfo makeLenses ''SwaggerContact makeLenses ''SwaggerLicense makeLenses ''SwaggerPaths makeLenses ''SwaggerPathItem makeLenses ''SwaggerTag makeLenses ''SwaggerOperation makeLenses ''SwaggerParameter makePrisms ''SwaggerParameterSchema makeLenses ''SwaggerParameterOtherSchema makeLenses ''SwaggerItems makeLenses ''SwaggerHeader makeLenses ''SwaggerSchema makePrisms ''SwaggerSchemaItems makeLenses ''SwaggerSchemaCommon makeLenses ''SwaggerXml makeLenses ''SwaggerResponses makeLenses ''SwaggerResponse makeLenses ''SwaggerSecurityScheme makePrisms ''SwaggerSecuritySchemeType makeLenses ''SwaggerApiKeyParams makeLenses ''SwaggerOAuth2Params makeLenses ''SwaggerExternalDocs -- ======================================================================= -- Helper classy lenses -- ======================================================================= class HasDescription s d | s -> d where description :: Lens' s d instance HasDescription SwaggerResponse Text where description = swaggerResponseDescription instance HasDescription SwaggerInfo (Maybe Text) where description = swaggerInfoDescription instance HasDescription SwaggerTag (Maybe Text) where description = swaggerTagDescription instance HasDescription SwaggerOperation (Maybe Text) where description = swaggerOperationDescription instance HasDescription SwaggerParameter (Maybe Text) where description = swaggerParameterDescription instance HasDescription SwaggerHeader (Maybe Text) where description = swaggerHeaderDescription instance HasDescription SwaggerSchema (Maybe Text) where description = swaggerSchemaDescription instance HasDescription SwaggerSecurityScheme (Maybe Text) where description = swaggerSecuritySchemeDescription instance HasDescription SwaggerExternalDocs (Maybe Text) where description = swaggerExternalDocsDescription class HasSwaggerSchemaCommon s where schemaCommon :: Lens' s SwaggerSchemaCommon instance HasSwaggerSchemaCommon SwaggerSchema where schemaCommon = swaggerSchemaCommon instance HasSwaggerSchemaCommon SwaggerParameterOtherSchema where schemaCommon = swaggerParameterOtherSchemaCommon instance HasSwaggerSchemaCommon SwaggerItems where schemaCommon = swaggerItemsCommon instance HasSwaggerSchemaCommon SwaggerHeader where schemaCommon = swaggerHeaderCommon instance HasSwaggerSchemaCommon SwaggerSchemaCommon where schemaCommon = id schemaDefault :: HasSwaggerSchemaCommon s => Lens' s (Maybe Value) schemaDefault = schemaCommon.swaggerSchemaDefault schemaMaximum :: HasSwaggerSchemaCommon s => Lens' s (Maybe Integer) schemaMaximum = schemaCommon.swaggerSchemaMaximum schemaExclusiveMaximum :: HasSwaggerSchemaCommon s => Lens' s (Maybe Bool) schemaExclusiveMaximum = schemaCommon.swaggerSchemaExclusiveMaximum schemaMinimum :: HasSwaggerSchemaCommon s => Lens' s (Maybe Integer) schemaMinimum = schemaCommon.swaggerSchemaMinimum schemaExclusiveMinimum :: HasSwaggerSchemaCommon s => Lens' s (Maybe Bool) schemaExclusiveMinimum = schemaCommon.swaggerSchemaExclusiveMinimum schemaMaxLength :: HasSwaggerSchemaCommon s => Lens' s (Maybe Integer) schemaMaxLength = schemaCommon.swaggerSchemaMaxLength schemaMinLength :: HasSwaggerSchemaCommon s => Lens' s (Maybe Integer) schemaMinLength = schemaCommon.swaggerSchemaMinLength schemaPattern :: HasSwaggerSchemaCommon s => Lens' s (Maybe Text) schemaPattern = schemaCommon.swaggerSchemaPattern schemaMaxItems :: HasSwaggerSchemaCommon s => Lens' s (Maybe Integer) schemaMaxItems = schemaCommon.swaggerSchemaMaxItems schemaMinItems :: HasSwaggerSchemaCommon s => Lens' s (Maybe Integer) schemaMinItems = schemaCommon.swaggerSchemaMinItems schemaUniqueItems :: HasSwaggerSchemaCommon s => Lens' s (Maybe Bool) schemaUniqueItems = schemaCommon.swaggerSchemaUniqueItems schemaEnum :: HasSwaggerSchemaCommon s => Lens' s (Maybe [Value]) schemaEnum = schemaCommon.swaggerSchemaEnum schemaMultipleOf :: HasSwaggerSchemaCommon s => Lens' s (Maybe Integer) schemaMultipleOf = schemaCommon.swaggerSchemaMultipleOf