swagger2 0.2 → 0.3
raw patch · 5 files changed
+24/−21 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.Swagger.Internal.Utils: instance Data.Swagger.Internal.Utils.SwaggerMonoid GHC.Types.Bool
- Data.Swagger: SwaggerOperation :: [Text] -> Maybe Text -> Maybe Text -> Maybe SwaggerExternalDocs -> Maybe Text -> Maybe SwaggerMimeList -> Maybe SwaggerMimeList -> [SwaggerReferenced SwaggerParameter] -> SwaggerResponses -> Maybe [SwaggerScheme] -> Bool -> [SwaggerSecurityRequirement] -> SwaggerOperation
+ Data.Swagger: SwaggerOperation :: [Text] -> Maybe Text -> Maybe Text -> Maybe SwaggerExternalDocs -> Maybe Text -> Maybe SwaggerMimeList -> Maybe SwaggerMimeList -> [SwaggerReferenced SwaggerParameter] -> SwaggerResponses -> Maybe [SwaggerScheme] -> Maybe Bool -> [SwaggerSecurityRequirement] -> SwaggerOperation
- Data.Swagger: SwaggerParameter :: Text -> Maybe Text -> Bool -> SwaggerParameterSchema -> SwaggerParameter
+ Data.Swagger: SwaggerParameter :: Text -> Maybe Text -> Maybe Bool -> SwaggerParameterSchema -> SwaggerParameter
- Data.Swagger: SwaggerParameterOtherSchema :: SwaggerParameterLocation -> SwaggerParameterType -> Maybe SwaggerFormat -> Bool -> Maybe SwaggerItems -> Maybe SwaggerCollectionFormat -> SwaggerSchemaCommon -> SwaggerParameterOtherSchema
+ Data.Swagger: SwaggerParameterOtherSchema :: SwaggerParameterLocation -> SwaggerParameterType -> Maybe SwaggerFormat -> Maybe Bool -> Maybe SwaggerItems -> Maybe SwaggerCollectionFormat -> SwaggerSchemaCommon -> SwaggerParameterOtherSchema
- Data.Swagger: SwaggerXml :: Maybe Text -> Maybe Text -> Maybe Text -> Bool -> Bool -> SwaggerXml
+ Data.Swagger: SwaggerXml :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Bool -> Maybe Bool -> SwaggerXml
- Data.Swagger: [_swaggerOperationDeprecated] :: SwaggerOperation -> Bool
+ Data.Swagger: [_swaggerOperationDeprecated] :: SwaggerOperation -> Maybe Bool
- Data.Swagger: [_swaggerParameterOtherSchemaAllowEmptyValue] :: SwaggerParameterOtherSchema -> Bool
+ Data.Swagger: [_swaggerParameterOtherSchemaAllowEmptyValue] :: SwaggerParameterOtherSchema -> Maybe Bool
- Data.Swagger: [_swaggerParameterRequired] :: SwaggerParameter -> Bool
+ Data.Swagger: [_swaggerParameterRequired] :: SwaggerParameter -> Maybe Bool
- Data.Swagger: [_swaggerXmlAttribute] :: SwaggerXml -> Bool
+ Data.Swagger: [_swaggerXmlAttribute] :: SwaggerXml -> Maybe Bool
- Data.Swagger: [_swaggerXmlWrapped] :: SwaggerXml -> Bool
+ Data.Swagger: [_swaggerXmlWrapped] :: SwaggerXml -> Maybe Bool
- Data.Swagger.Internal: SwaggerOperation :: [Text] -> Maybe Text -> Maybe Text -> Maybe SwaggerExternalDocs -> Maybe Text -> Maybe SwaggerMimeList -> Maybe SwaggerMimeList -> [SwaggerReferenced SwaggerParameter] -> SwaggerResponses -> Maybe [SwaggerScheme] -> Bool -> [SwaggerSecurityRequirement] -> SwaggerOperation
+ Data.Swagger.Internal: SwaggerOperation :: [Text] -> Maybe Text -> Maybe Text -> Maybe SwaggerExternalDocs -> Maybe Text -> Maybe SwaggerMimeList -> Maybe SwaggerMimeList -> [SwaggerReferenced SwaggerParameter] -> SwaggerResponses -> Maybe [SwaggerScheme] -> Maybe Bool -> [SwaggerSecurityRequirement] -> SwaggerOperation
- Data.Swagger.Internal: SwaggerParameter :: Text -> Maybe Text -> Bool -> SwaggerParameterSchema -> SwaggerParameter
+ Data.Swagger.Internal: SwaggerParameter :: Text -> Maybe Text -> Maybe Bool -> SwaggerParameterSchema -> SwaggerParameter
- Data.Swagger.Internal: SwaggerParameterOtherSchema :: SwaggerParameterLocation -> SwaggerParameterType -> Maybe SwaggerFormat -> Bool -> Maybe SwaggerItems -> Maybe SwaggerCollectionFormat -> SwaggerSchemaCommon -> SwaggerParameterOtherSchema
+ Data.Swagger.Internal: SwaggerParameterOtherSchema :: SwaggerParameterLocation -> SwaggerParameterType -> Maybe SwaggerFormat -> Maybe Bool -> Maybe SwaggerItems -> Maybe SwaggerCollectionFormat -> SwaggerSchemaCommon -> SwaggerParameterOtherSchema
- Data.Swagger.Internal: SwaggerXml :: Maybe Text -> Maybe Text -> Maybe Text -> Bool -> Bool -> SwaggerXml
+ Data.Swagger.Internal: SwaggerXml :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Bool -> Maybe Bool -> SwaggerXml
- Data.Swagger.Internal: [_swaggerOperationDeprecated] :: SwaggerOperation -> Bool
+ Data.Swagger.Internal: [_swaggerOperationDeprecated] :: SwaggerOperation -> Maybe Bool
- Data.Swagger.Internal: [_swaggerParameterOtherSchemaAllowEmptyValue] :: SwaggerParameterOtherSchema -> Bool
+ Data.Swagger.Internal: [_swaggerParameterOtherSchemaAllowEmptyValue] :: SwaggerParameterOtherSchema -> Maybe Bool
- Data.Swagger.Internal: [_swaggerParameterRequired] :: SwaggerParameter -> Bool
+ Data.Swagger.Internal: [_swaggerParameterRequired] :: SwaggerParameter -> Maybe Bool
- Data.Swagger.Internal: [_swaggerXmlAttribute] :: SwaggerXml -> Bool
+ Data.Swagger.Internal: [_swaggerXmlAttribute] :: SwaggerXml -> Maybe Bool
- Data.Swagger.Internal: [_swaggerXmlWrapped] :: SwaggerXml -> Bool
+ Data.Swagger.Internal: [_swaggerXmlWrapped] :: SwaggerXml -> Maybe Bool
- Data.Swagger.Lens: swaggerOperationDeprecated :: Lens' SwaggerOperation Bool
+ Data.Swagger.Lens: swaggerOperationDeprecated :: Lens' SwaggerOperation (Maybe Bool)
- Data.Swagger.Lens: swaggerParameterOtherSchemaAllowEmptyValue :: Lens' SwaggerParameterOtherSchema Bool
+ Data.Swagger.Lens: swaggerParameterOtherSchemaAllowEmptyValue :: Lens' SwaggerParameterOtherSchema (Maybe Bool)
- Data.Swagger.Lens: swaggerParameterRequired :: Lens' SwaggerParameter Bool
+ Data.Swagger.Lens: swaggerParameterRequired :: Lens' SwaggerParameter (Maybe Bool)
- Data.Swagger.Lens: swaggerXmlAttribute :: Lens' SwaggerXml Bool
+ Data.Swagger.Lens: swaggerXmlAttribute :: Lens' SwaggerXml (Maybe Bool)
- Data.Swagger.Lens: swaggerXmlWrapped :: Lens' SwaggerXml Bool
+ Data.Swagger.Lens: swaggerXmlWrapped :: Lens' SwaggerXml (Maybe Bool)
Files
- CHANGELOG.md +8/−0
- src/Data/Swagger/Internal.hs +6/−10
- src/Data/Swagger/Internal/Utils.hs +2/−4
- swagger2.cabal +2/−1
- test/Data/SwaggerSpec.hs +6/−6
CHANGELOG.md view
@@ -1,3 +1,11 @@+0.3+---+* Fixes:+ * Fix `SwaggerMonoid Text` instance;+ * Wrap `Bool` in `Maybe` everywhere;+ * These changes make all `Data.Swagger` `Monoid` instances obey monoid laws+ (previously right identity law was broken by some instances).+ 0.2 --- * Add `Data.Swagger.Lens`
src/Data/Swagger/Internal.hs view
@@ -242,7 +242,7 @@ -- | Declares this operation to be deprecated. -- Usage of the declared operation should be refrained. -- Default value is @False@.- , _swaggerOperationDeprecated :: Bool+ , _swaggerOperationDeprecated :: Maybe Bool -- | A declaration of which security schemes are applied for this operation. -- The list of values describes alternative security schemes that can be used@@ -270,7 +270,7 @@ -- | Determines whether this parameter is mandatory. -- If the parameter is in "path", this property is required and its value MUST be true. -- Otherwise, the property MAY be included and its default value is @False@.- , _swaggerParameterRequired :: Bool+ , _swaggerParameterRequired :: Maybe Bool -- | Parameter schema. , _swaggerParameterSchema :: SwaggerParameterSchema@@ -300,7 +300,7 @@ -- This is valid only for either @'SwaggerParameterQuery'@ or @'SwaggerParameterFormData'@ -- and allows you to send a parameter with a name only or an empty value. -- Default value is @False@.- , _swaggerParameterOtherSchemaAllowEmptyValue :: Bool+ , _swaggerParameterOtherSchemaAllowEmptyValue :: Maybe Bool -- | __Required if type is @'SwaggerParamArray'@__. -- Describes the type of items in the array.@@ -451,7 +451,7 @@ -- | Declares whether the property definition translates to an attribute instead of an element. -- Default value is @False@.- , _swaggerXmlAttribute :: Bool+ , _swaggerXmlAttribute :: Maybe Bool -- | MAY be used only for an array definition. -- Signifies whether the array is wrapped@@ -459,7 +459,7 @@ -- or unwrapped (@\<book/\>\<book/\>@). -- Default value is @False@. -- The definition takes effect only when defined alongside type being array (outside the items).- , _swaggerXmlWrapped :: Bool+ , _swaggerXmlWrapped :: Maybe Bool } deriving (Eq, Show, Generic) data SwaggerItems = SwaggerItems@@ -953,7 +953,6 @@ instance FromJSON SwaggerParameter where parseJSON = genericParseJSONWithSub "schema" (jsonPrefix "swaggerParameter")- `withDefaults` [ "required" .= False ] instance FromJSON SwaggerParameterSchema where parseJSON json@(Object o) = do@@ -967,7 +966,6 @@ instance FromJSON SwaggerParameterOtherSchema where parseJSON = genericParseJSONWithSub "common" (jsonPrefix "swaggerParameterOtherSchema")- `withDefaults` [ "allowEmptyValue" .= False ] instance FromJSON SwaggerSchemaItems where parseJSON json@(Object _) = SwaggerSchemaItemsObject <$> parseJSON json@@ -991,8 +989,7 @@ instance FromJSON SwaggerOperation where parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")- `withDefaults` [ "deprecated" .= False- , "security" .= ([] :: [SwaggerSecurityRequirement]) ]+ `withDefaults` [ "security" .= ([] :: [SwaggerSecurityRequirement]) ] instance FromJSON SwaggerPathItem where parseJSON = genericParseJSON (jsonPrefix "swaggerPathItem")@@ -1009,5 +1006,4 @@ instance FromJSON SwaggerXml where parseJSON = genericParseJSON (jsonPrefix "swaggerXml")- `withDefaults` [ "attribute" .= False, "wrapped" .= False ]
src/Data/Swagger/Internal/Utils.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeOperators #-} module Data.Swagger.Internal.Utils where @@ -111,14 +112,11 @@ instance SwaggerMonoid Text where swaggerMempty = mempty+ swaggerMappend x "" = x swaggerMappend _ y = y instance SwaggerMonoid (Maybe a) where swaggerMempty = Nothing swaggerMappend x Nothing = x- swaggerMappend _ y = y--instance SwaggerMonoid Bool where- swaggerMempty = False swaggerMappend _ y = y
swagger2.cabal view
@@ -1,8 +1,9 @@ name: swagger2-version: 0.2+version: 0.3 synopsis: Swagger 2.0 data model description: Please see README.md homepage: https://github.com/GetShopTV/swagger2+bug-reports: https://github.com/GetShopTV/swagger2/issues license: BSD3 license-file: LICENSE author: Nickolay Kudasov
test/Data/SwaggerSpec.hs view
@@ -165,17 +165,17 @@ [ SwaggerParameter { _swaggerParameterName = "petId" , _swaggerParameterDescription = Just "ID of pet that needs to be updated"- , _swaggerParameterRequired = True+ , _swaggerParameterRequired = Just True , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterPath) } , SwaggerParameter { _swaggerParameterName = "name" , _swaggerParameterDescription = Just "Updated name of the pet"- , _swaggerParameterRequired = False+ , _swaggerParameterRequired = Just False , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterFormData) } , SwaggerParameter { _swaggerParameterName = "status" , _swaggerParameterDescription = Just "Updated status of the pet"- , _swaggerParameterRequired = False+ , _swaggerParameterRequired = Just False , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterFormData) } ] @@ -415,7 +415,7 @@ [ ("skipParam", mempty { _swaggerParameterName = "skip" , _swaggerParameterDescription = Just "number of items to skip"- , _swaggerParameterRequired = True+ , _swaggerParameterRequired = Just True , _swaggerParameterSchema = SwaggerParameterOther mempty { _swaggerParameterOtherSchemaIn = SwaggerParameterQuery , _swaggerParameterOtherSchemaType = SwaggerParamInteger@@ -423,7 +423,7 @@ , ("limitParam", mempty { _swaggerParameterName = "limit" , _swaggerParameterDescription = Just "max records to return"- , _swaggerParameterRequired = True+ , _swaggerParameterRequired = Just True , _swaggerParameterSchema = SwaggerParameterOther mempty { _swaggerParameterOtherSchemaIn = SwaggerParameterQuery , _swaggerParameterOtherSchemaType = SwaggerParamInteger@@ -549,7 +549,7 @@ , _swaggerOperationProduces = Just (SwaggerMimeList [ "application/json" ]) , _swaggerOperationParameters = [ SwaggerInline mempty- { _swaggerParameterRequired = True+ { _swaggerParameterRequired = Just True , _swaggerParameterName = "id" , _swaggerParameterDescription = Just "TodoId param" , _swaggerParameterSchema = SwaggerParameterOther mempty