git.iko.soy/typeable/swagger2
on master help sign in
Fix some defaults in FromJSON instances
commit966767e0ec592bb003460dbec4e593d68a934cbb authorNickolay Kudasov <nickolay.kudasov@gmail.com> dateSun 8 Nov 2015, 22:32 (11 years ago) parent4c7c5bf
2 files changed+19−8
src/Data/Swagger/Internal.hs+18−4 src/Data/Swagger/Internal/Utils.hs+1−4
src/Data/Swagger/Internal.hs+18−4
@@ -89,7 +89,7 @@ data Swagger = Swagger
8989 , swaggerTags :: [SwaggerTag]
9090
9191 -- | Additional external documentation.
92− , swaggerExternalDocs :: SwaggerExternalDocs
92+ , swaggerExternalDocs :: Maybe SwaggerExternalDocs
9393 } deriving (Eq, Show, Generic)
9494
9595-- | The object provides metadata about the API.
@@ -748,7 +748,6 @@ instance SwaggerMonoid SwaggerParameterSchema where
748748
749749deriveJSON (jsonPrefix "SwaggerParameter") ''SwaggerParameterLocation
750750deriveJSON (jsonPrefix "SwaggerParam") ''SwaggerParameterType
751−deriveJSON' ''SwaggerPathItem
752751deriveJSON' ''SwaggerInfo
753752deriveJSON' ''SwaggerContact
754753deriveJSON' ''SwaggerLicense
@@ -766,6 +765,7 @@ deriveJSON' ''SwaggerXml
766765
767766deriveToJSON' ''SwaggerOperation
768767deriveToJSON' ''SwaggerResponse
768+deriveToJSON' ''SwaggerPathItem
769769
770770-- =======================================================================
771771-- Manual ToJSON instances
@@ -883,7 +883,16 @@ instance FromJSON Swagger where
883883 parseJSON json@(Object o) = do
884884 (version :: Text) <- o .: "swagger"
885885 when (version /= "2.0") empty
886− genericParseJSON (jsonPrefix "swagger") json
886+ (genericParseJSON (jsonPrefix "swagger")
887+ `withDefaults` [ "consumes" .= (mempty :: SwaggerMimeList)
888+ , "produces" .= (mempty :: SwaggerMimeList)
889+ , "security" .= ([] :: [SwaggerSecurityRequirement])
890+ , "tags" .= ([] :: [SwaggerTag])
891+ , "definitions" .= (mempty :: HashMap Text SwaggerSchema)
892+ , "parameters" .= (mempty :: HashMap Text SwaggerParameter)
893+ , "responses" .= (mempty :: HashMap Text SwaggerResponse)
894+ , "securityDefinitions" .= (mempty :: HashMap Text SwaggerSecurityScheme)
895+ ] ) json
887896 parseJSON _ = empty
888897
889898instance FromJSON SwaggerSecurityScheme where
@@ -954,5 +963,10 @@ instance FromJSON SwaggerResponse where
954963
955964instance FromJSON SwaggerOperation where
956965 parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")
957− `withDefaults` [ "deprecated" .= False ]
966+ `withDefaults` [ "deprecated" .= False
967+ , "security" .= ([] :: [SwaggerSecurityRequirement]) ]
968+
969+instance FromJSON SwaggerPathItem where
970+ parseJSON = genericParseJSON (jsonPrefix "swaggerPathItem")
971+ `withDefaults` [ "parameters" .= ([] :: [SwaggerParameter]) ]
958972
src/Data/Swagger/Internal/Utils.hs+1−4
@@ -42,14 +42,11 @@ jsonPrefix prefix = defaultOptions
4242 lowerFirstUppers s = map toLower x ++ y
4343 where (x, y) = span isUpper s
4444
45−deriveToJSONDefault :: Name -> Q [Dec]
46−deriveToJSONDefault = deriveToJSON defaultOptions
47−
4845deriveToJSON' :: Name -> Q [Dec]
4946deriveToJSON' name = deriveToJSON (jsonPrefix (nameBase name)) name
5047
5148deriveJSONDefault :: Name -> Q [Dec]
52−deriveJSONDefault = deriveJSON defaultOptions
49+deriveJSONDefault = deriveJSON (jsonPrefix "")
5350
5451deriveJSON' :: Name -> Q [Dec]
5552deriveJSON' name = deriveJSON (jsonPrefix (nameBase name)) name