git.iko.soy/typeable/openapi3
on master help sign in
Merge pull request #8 from GetShopTV/maybe-bools-#1
24d4040Nickolay Kudasov
CHANGELOG.md+8
@@ -1,3 +1,11 @@
1+0.3
2+---
3+* Fixes:
4+ * Fix `SwaggerMonoid Text` instance;
5+ * Wrap `Bool` in `Maybe` everywhere;
6+ * These changes make all `Data.Swagger` `Monoid` instances obey monoid laws
7+ (previously right identity law was broken by some instances).
8+
10.2
90.2
2---
10---
3* Add `Data.Swagger.Lens`
11* Add `Data.Swagger.Lens`
src/Data/Swagger/Internal.hs+6−10
@@ -242,7 +242,7 @@ data SwaggerOperation = SwaggerOperation
242 -- | Declares this operation to be deprecated.
242 -- | Declares this operation to be deprecated.
243 -- Usage of the declared operation should be refrained.
243 -- Usage of the declared operation should be refrained.
244 -- Default value is @False@.
244 -- Default value is @False@.
245− , _swaggerOperationDeprecated :: Bool
245+ , _swaggerOperationDeprecated :: Maybe Bool
246
246
247 -- | A declaration of which security schemes are applied for this operation.
247 -- | A declaration of which security schemes are applied for this operation.
248 -- The list of values describes alternative security schemes that can be used
248 -- The list of values describes alternative security schemes that can be used
@@ -270,7 +270,7 @@ data SwaggerParameter = SwaggerParameter
270 -- | Determines whether this parameter is mandatory.
270 -- | Determines whether this parameter is mandatory.
271 -- If the parameter is in "path", this property is required and its value MUST be true.
271 -- If the parameter is in "path", this property is required and its value MUST be true.
272 -- Otherwise, the property MAY be included and its default value is @False@.
272 -- Otherwise, the property MAY be included and its default value is @False@.
273− , _swaggerParameterRequired :: Bool
273+ , _swaggerParameterRequired :: Maybe Bool
274
274
275 -- | Parameter schema.
275 -- | Parameter schema.
276 , _swaggerParameterSchema :: SwaggerParameterSchema
276 , _swaggerParameterSchema :: SwaggerParameterSchema
@@ -300,7 +300,7 @@ data SwaggerParameterOtherSchema = SwaggerParameterOtherSchema
300 -- This is valid only for either @'SwaggerParameterQuery'@ or @'SwaggerParameterFormData'@
300 -- This is valid only for either @'SwaggerParameterQuery'@ or @'SwaggerParameterFormData'@
301 -- and allows you to send a parameter with a name only or an empty value.
301 -- and allows you to send a parameter with a name only or an empty value.
302 -- Default value is @False@.
302 -- Default value is @False@.
303− , _swaggerParameterOtherSchemaAllowEmptyValue :: Bool
303+ , _swaggerParameterOtherSchemaAllowEmptyValue :: Maybe Bool
304
304
305 -- | __Required if type is @'SwaggerParamArray'@__.
305 -- | __Required if type is @'SwaggerParamArray'@__.
306 -- Describes the type of items in the array.
306 -- Describes the type of items in the array.
@@ -451,7 +451,7 @@ data SwaggerXml = SwaggerXml
451
451
452 -- | Declares whether the property definition translates to an attribute instead of an element.
452 -- | Declares whether the property definition translates to an attribute instead of an element.
453 -- Default value is @False@.
453 -- Default value is @False@.
454− , _swaggerXmlAttribute :: Bool
454+ , _swaggerXmlAttribute :: Maybe Bool
455
455
456 -- | MAY be used only for an array definition.
456 -- | MAY be used only for an array definition.
457 -- Signifies whether the array is wrapped
457 -- Signifies whether the array is wrapped
@@ -459,7 +459,7 @@ data SwaggerXml = SwaggerXml
459 -- or unwrapped (@\<book/\>\<book/\>@).
459 -- or unwrapped (@\<book/\>\<book/\>@).
460 -- Default value is @False@.
460 -- Default value is @False@.
461 -- The definition takes effect only when defined alongside type being array (outside the items).
461 -- The definition takes effect only when defined alongside type being array (outside the items).
462− , _swaggerXmlWrapped :: Bool
462+ , _swaggerXmlWrapped :: Maybe Bool
463 } deriving (Eq, Show, Generic)
463 } deriving (Eq, Show, Generic)
464
464
465data SwaggerItems = SwaggerItems
465data SwaggerItems = SwaggerItems
@@ -953,7 +953,6 @@ instance FromJSON SwaggerMimeList where
953
953
954instance FromJSON SwaggerParameter where
954instance FromJSON SwaggerParameter where
955 parseJSON = genericParseJSONWithSub "schema" (jsonPrefix "swaggerParameter")
955 parseJSON = genericParseJSONWithSub "schema" (jsonPrefix "swaggerParameter")
956− `withDefaults` [ "required" .= False ]
957
956
958instance FromJSON SwaggerParameterSchema where
957instance FromJSON SwaggerParameterSchema where
959 parseJSON json@(Object o) = do
958 parseJSON json@(Object o) = do
@@ -967,7 +966,6 @@ instance FromJSON SwaggerParameterSchema where
967
966
968instance FromJSON SwaggerParameterOtherSchema where
967instance FromJSON SwaggerParameterOtherSchema where
969 parseJSON = genericParseJSONWithSub "common" (jsonPrefix "swaggerParameterOtherSchema")
968 parseJSON = genericParseJSONWithSub "common" (jsonPrefix "swaggerParameterOtherSchema")
970− `withDefaults` [ "allowEmptyValue" .= False ]
971
969
972instance FromJSON SwaggerSchemaItems where
970instance FromJSON SwaggerSchemaItems where
973 parseJSON json@(Object _) = SwaggerSchemaItemsObject <$> parseJSON json
971 parseJSON json@(Object _) = SwaggerSchemaItemsObject <$> parseJSON json
@@ -991,8 +989,7 @@ instance FromJSON SwaggerResponse where
991
989
992instance FromJSON SwaggerOperation where
990instance FromJSON SwaggerOperation where
993 parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")
991 parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")
994− `withDefaults` [ "deprecated" .= False
995− , "security" .= ([] :: [SwaggerSecurityRequirement]) ]
992+ `withDefaults` [ "security" .= ([] :: [SwaggerSecurityRequirement]) ]
996
993
997instance FromJSON SwaggerPathItem where
994instance FromJSON SwaggerPathItem where
998 parseJSON = genericParseJSON (jsonPrefix "swaggerPathItem")
995 parseJSON = genericParseJSON (jsonPrefix "swaggerPathItem")
@@ -1009,5 +1006,4 @@ instance FromJSON a => FromJSON (SwaggerReferenced a) where
1009
1006
1010instance FromJSON SwaggerXml where
1007instance FromJSON SwaggerXml where
1011 parseJSON = genericParseJSON (jsonPrefix "swaggerXml")
1008 parseJSON = genericParseJSON (jsonPrefix "swaggerXml")
1012− `withDefaults` [ "attribute" .= False, "wrapped" .= False ]
1013
1009
src/Data/Swagger/Internal/Utils.hs−5
@@ -120,8 +120,3 @@ instance SwaggerMonoid (Maybe a) where
120 swaggerMappend x Nothing = x
120 swaggerMappend x Nothing = x
121 swaggerMappend _ y = y
121 swaggerMappend _ y = y
122
122
123−-- | __WARNING:__ not a true monoid (`swaggerMempty` breaks right identity law).
124−instance SwaggerMonoid Bool where
125− swaggerMempty = False
126− swaggerMappend _ y = y
127−
swagger2.cabal+2−1
@@ -1,8 +1,9 @@
1name: swagger2
1name: swagger2
2−version: 0.2
2+version: 0.3
3synopsis: Swagger 2.0 data model
3synopsis: Swagger 2.0 data model
4description: Please see README.md
4description: Please see README.md
5homepage: https://github.com/GetShopTV/swagger2
5homepage: https://github.com/GetShopTV/swagger2
6+bug-reports: https://github.com/GetShopTV/swagger2/issues
6license: BSD3
7license: BSD3
7license-file: LICENSE
8license-file: LICENSE
8author: Nickolay Kudasov
9author: Nickolay Kudasov
test/Data/SwaggerSpec.hs+6−6
@@ -165,17 +165,17 @@ operationExample = mempty
165 [ SwaggerParameter
165 [ SwaggerParameter
166 { _swaggerParameterName = "petId"
166 { _swaggerParameterName = "petId"
167 , _swaggerParameterDescription = Just "ID of pet that needs to be updated"
167 , _swaggerParameterDescription = Just "ID of pet that needs to be updated"
168− , _swaggerParameterRequired = True
168+ , _swaggerParameterRequired = Just True
169 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterPath) }
169 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterPath) }
170 , SwaggerParameter
170 , SwaggerParameter
171 { _swaggerParameterName = "name"
171 { _swaggerParameterName = "name"
172 , _swaggerParameterDescription = Just "Updated name of the pet"
172 , _swaggerParameterDescription = Just "Updated name of the pet"
173− , _swaggerParameterRequired = False
173+ , _swaggerParameterRequired = Just False
174 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterFormData) }
174 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterFormData) }
175 , SwaggerParameter
175 , SwaggerParameter
176 { _swaggerParameterName = "status"
176 { _swaggerParameterName = "status"
177 , _swaggerParameterDescription = Just "Updated status of the pet"
177 , _swaggerParameterDescription = Just "Updated status of the pet"
178− , _swaggerParameterRequired = False
178+ , _swaggerParameterRequired = Just False
179 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterFormData) }
179 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterFormData) }
180 ]
180 ]
181
181
@@ -415,7 +415,7 @@ parametersDefinitionExample =
415 [ ("skipParam", mempty
415 [ ("skipParam", mempty
416 { _swaggerParameterName = "skip"
416 { _swaggerParameterName = "skip"
417 , _swaggerParameterDescription = Just "number of items to skip"
417 , _swaggerParameterDescription = Just "number of items to skip"
418− , _swaggerParameterRequired = True
418+ , _swaggerParameterRequired = Just True
419 , _swaggerParameterSchema = SwaggerParameterOther mempty
419 , _swaggerParameterSchema = SwaggerParameterOther mempty
420 { _swaggerParameterOtherSchemaIn = SwaggerParameterQuery
420 { _swaggerParameterOtherSchemaIn = SwaggerParameterQuery
421 , _swaggerParameterOtherSchemaType = SwaggerParamInteger
421 , _swaggerParameterOtherSchemaType = SwaggerParamInteger
@@ -423,7 +423,7 @@ parametersDefinitionExample =
423 , ("limitParam", mempty
423 , ("limitParam", mempty
424 { _swaggerParameterName = "limit"
424 { _swaggerParameterName = "limit"
425 , _swaggerParameterDescription = Just "max records to return"
425 , _swaggerParameterDescription = Just "max records to return"
426− , _swaggerParameterRequired = True
426+ , _swaggerParameterRequired = Just True
427 , _swaggerParameterSchema = SwaggerParameterOther mempty
427 , _swaggerParameterSchema = SwaggerParameterOther mempty
428 { _swaggerParameterOtherSchemaIn = SwaggerParameterQuery
428 { _swaggerParameterOtherSchemaIn = SwaggerParameterQuery
429 , _swaggerParameterOtherSchemaType = SwaggerParamInteger
429 , _swaggerParameterOtherSchemaType = SwaggerParamInteger
@@ -549,7 +549,7 @@ swaggerExample = mempty
549 , _swaggerOperationProduces = Just (SwaggerMimeList [ "application/json" ])
549 , _swaggerOperationProduces = Just (SwaggerMimeList [ "application/json" ])
550 , _swaggerOperationParameters =
550 , _swaggerOperationParameters =
551 [ SwaggerInline mempty
551 [ SwaggerInline mempty
552− { _swaggerParameterRequired = True
552+ { _swaggerParameterRequired = Just True
553 , _swaggerParameterName = "id"
553 , _swaggerParameterName = "id"
554 , _swaggerParameterDescription = Just "TodoId param"
554 , _swaggerParameterDescription = Just "TodoId param"
555 , _swaggerParameterSchema = SwaggerParameterOther mempty
555 , _swaggerParameterSchema = SwaggerParameterOther mempty