git.iko.soy/typeable/swagger2
on master help sign in
Merge pull request #8 from GetShopTV/maybe-bools-#1

Wrap Bool in Maybe everywhere to gain true monoids

commit24d404055a8bd28b3cdf21abe9efb410111a8665 authorNickolay Kudasov <fizruk@users.noreply.github.com> dateTue 10 Nov 2015, 15:58 (11 years ago) parent55b6369a3dfb9f
5 files changed+22−22
CHANGELOG.md+8 src/Data/Swagger/Internal.hs+6−10 src/Data/Swagger/Internal/Utils.hs−5 swagger2.cabal+2−1 test/Data/SwaggerSpec.hs+6−6
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+
190.2
210---
311* Add `Data.Swagger.Lens`
src/Data/Swagger/Internal.hs+6−10
@@ -242,7 +242,7 @@ data SwaggerOperation = SwaggerOperation
242242 -- | Declares this operation to be deprecated.
243243 -- Usage of the declared operation should be refrained.
244244 -- Default value is @False@.
245− , _swaggerOperationDeprecated :: Bool
245+ , _swaggerOperationDeprecated :: Maybe Bool
246246
247247 -- | A declaration of which security schemes are applied for this operation.
248248 -- The list of values describes alternative security schemes that can be used
@@ -270,7 +270,7 @@ data SwaggerParameter = SwaggerParameter
270270 -- | Determines whether this parameter is mandatory.
271271 -- If the parameter is in "path", this property is required and its value MUST be true.
272272 -- Otherwise, the property MAY be included and its default value is @False@.
273− , _swaggerParameterRequired :: Bool
273+ , _swaggerParameterRequired :: Maybe Bool
274274
275275 -- | Parameter schema.
276276 , _swaggerParameterSchema :: SwaggerParameterSchema
@@ -300,7 +300,7 @@ data SwaggerParameterOtherSchema = SwaggerParameterOtherSchema
300300 -- This is valid only for either @'SwaggerParameterQuery'@ or @'SwaggerParameterFormData'@
301301 -- and allows you to send a parameter with a name only or an empty value.
302302 -- Default value is @False@.
303− , _swaggerParameterOtherSchemaAllowEmptyValue :: Bool
303+ , _swaggerParameterOtherSchemaAllowEmptyValue :: Maybe Bool
304304
305305 -- | __Required if type is @'SwaggerParamArray'@__.
306306 -- Describes the type of items in the array.
@@ -451,7 +451,7 @@ data SwaggerXml = SwaggerXml
451451
452452 -- | Declares whether the property definition translates to an attribute instead of an element.
453453 -- Default value is @False@.
454− , _swaggerXmlAttribute :: Bool
454+ , _swaggerXmlAttribute :: Maybe Bool
455455
456456 -- | MAY be used only for an array definition.
457457 -- Signifies whether the array is wrapped
@@ -459,7 +459,7 @@ data SwaggerXml = SwaggerXml
459459 -- or unwrapped (@\<book/\>\<book/\>@).
460460 -- Default value is @False@.
461461 -- The definition takes effect only when defined alongside type being array (outside the items).
462− , _swaggerXmlWrapped :: Bool
462+ , _swaggerXmlWrapped :: Maybe Bool
463463 } deriving (Eq, Show, Generic)
464464
465465data SwaggerItems = SwaggerItems
@@ -953,7 +953,6 @@ instance FromJSON SwaggerMimeList where
953953
954954instance FromJSON SwaggerParameter where
955955 parseJSON = genericParseJSONWithSub "schema" (jsonPrefix "swaggerParameter")
956− `withDefaults` [ "required" .= False ]
957956
958957instance FromJSON SwaggerParameterSchema where
959958 parseJSON json@(Object o) = do
@@ -967,7 +966,6 @@ instance FromJSON SwaggerParameterSchema where
967966
968967instance FromJSON SwaggerParameterOtherSchema where
969968 parseJSON = genericParseJSONWithSub "common" (jsonPrefix "swaggerParameterOtherSchema")
970− `withDefaults` [ "allowEmptyValue" .= False ]
971969
972970instance FromJSON SwaggerSchemaItems where
973971 parseJSON json@(Object _) = SwaggerSchemaItemsObject <$> parseJSON json
@@ -991,8 +989,7 @@ instance FromJSON SwaggerResponse where
991989
992990instance FromJSON SwaggerOperation where
993991 parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")
994− `withDefaults` [ "deprecated" .= False
995− , "security" .= ([] :: [SwaggerSecurityRequirement]) ]
992+ `withDefaults` [ "security" .= ([] :: [SwaggerSecurityRequirement]) ]
996993
997994instance FromJSON SwaggerPathItem where
998995 parseJSON = genericParseJSON (jsonPrefix "swaggerPathItem")
@@ -1009,5 +1006,4 @@ instance FromJSON a => FromJSON (SwaggerReferenced a) where
10091006
10101007instance FromJSON SwaggerXml where
10111008 parseJSON = genericParseJSON (jsonPrefix "swaggerXml")
1012− `withDefaults` [ "attribute" .= False, "wrapped" .= False ]
10131009
src/Data/Swagger/Internal/Utils.hs−5
@@ -120,8 +120,3 @@ instance SwaggerMonoid (Maybe a) where
120120 swaggerMappend x Nothing = x
121121 swaggerMappend _ y = y
122122
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 @@
11name: swagger2
2−version: 0.2
2+version: 0.3
33synopsis: Swagger 2.0 data model
44description: Please see README.md
55homepage: https://github.com/GetShopTV/swagger2
6+bug-reports: https://github.com/GetShopTV/swagger2/issues
67license: BSD3
78license-file: LICENSE
89author: Nickolay Kudasov
test/Data/SwaggerSpec.hs+6−6
@@ -165,17 +165,17 @@ operationExample = mempty
165165 [ SwaggerParameter
166166 { _swaggerParameterName = "petId"
167167 , _swaggerParameterDescription = Just "ID of pet that needs to be updated"
168− , _swaggerParameterRequired = True
168+ , _swaggerParameterRequired = Just True
169169 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterPath) }
170170 , SwaggerParameter
171171 { _swaggerParameterName = "name"
172172 , _swaggerParameterDescription = Just "Updated name of the pet"
173− , _swaggerParameterRequired = False
173+ , _swaggerParameterRequired = Just False
174174 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterFormData) }
175175 , SwaggerParameter
176176 { _swaggerParameterName = "status"
177177 , _swaggerParameterDescription = Just "Updated status of the pet"
178− , _swaggerParameterRequired = False
178+ , _swaggerParameterRequired = Just False
179179 , _swaggerParameterSchema = SwaggerParameterOther (stringSchema SwaggerParameterFormData) }
180180 ]
181181
@@ -415,7 +415,7 @@ parametersDefinitionExample =
415415 [ ("skipParam", mempty
416416 { _swaggerParameterName = "skip"
417417 , _swaggerParameterDescription = Just "number of items to skip"
418− , _swaggerParameterRequired = True
418+ , _swaggerParameterRequired = Just True
419419 , _swaggerParameterSchema = SwaggerParameterOther mempty
420420 { _swaggerParameterOtherSchemaIn = SwaggerParameterQuery
421421 , _swaggerParameterOtherSchemaType = SwaggerParamInteger
@@ -423,7 +423,7 @@ parametersDefinitionExample =
423423 , ("limitParam", mempty
424424 { _swaggerParameterName = "limit"
425425 , _swaggerParameterDescription = Just "max records to return"
426− , _swaggerParameterRequired = True
426+ , _swaggerParameterRequired = Just True
427427 , _swaggerParameterSchema = SwaggerParameterOther mempty
428428 { _swaggerParameterOtherSchemaIn = SwaggerParameterQuery
429429 , _swaggerParameterOtherSchemaType = SwaggerParamInteger
@@ -549,7 +549,7 @@ swaggerExample = mempty
549549 , _swaggerOperationProduces = Just (SwaggerMimeList [ "application/json" ])
550550 , _swaggerOperationParameters =
551551 [ SwaggerInline mempty
552− { _swaggerParameterRequired = True
552+ { _swaggerParameterRequired = Just True
553553 , _swaggerParameterName = "id"
554554 , _swaggerParameterDescription = Just "TodoId param"
555555 , _swaggerParameterSchema = SwaggerParameterOther mempty