git.iko.soy/typeable/swagger2
on master help sign in
Fix some FromJSON instances
commitcd18970bc2474569bb08bf6c53f702578f19bfae authorNickolay Kudasov <nickolay.kudasov@gmail.com> dateSun 8 Nov 2015, 00:03 (11 years ago) parent872ae32
1 file changed+17−9
src/Data/Swagger/Internal.hs+17−9
src/Data/Swagger/Internal.hs+17−9
@@ -247,7 +247,7 @@ data SwaggerOperation = SwaggerOperation
247247 -- This definition overrides any declared top-level security.
248248 -- To remove a top-level security declaration, @Just []@ can be used.
249249 , swaggerOperationSecurity :: [SwaggerSecurityRequirement]
250− } deriving (Eq, Show)
250+ } deriving (Eq, Show, Generic)
251251
252252newtype SwaggerMimeList = SwaggerMimeList { getSwaggerMimeList :: [MediaType] }
253253 deriving (Eq, Show)
@@ -510,7 +510,7 @@ data SwaggerResponse = SwaggerResponse
510510
511511 -- | An example of the response message.
512512 , swaggerResponseExamples :: Maybe SwaggerExample
513− } deriving (Eq, Show)
513+ } deriving (Eq, Show, Generic)
514514
515515type HeaderName = Text
516516
@@ -624,7 +624,6 @@ newtype URL = URL { getUrl :: Text } deriving (Eq, Show, ToJSON, FromJSON)
624624-- TH derived ToJSON and FromJSON instances
625625-- =======================================================================
626626
627−deriveJSON' ''SwaggerOperation
628627deriveJSON (jsonPrefix "SwaggerParameter") ''SwaggerParameterLocation
629628deriveJSON (jsonPrefix "SwaggerParam") ''SwaggerParameterType
630629deriveJSON' ''SwaggerPathItem
@@ -637,13 +636,15 @@ deriveJSON (jsonPrefix "SwaggerItemsCollection") ''SwaggerItemsCollectionFormat
637636deriveJSON (jsonPrefix "SwaggerCollection") ''SwaggerCollectionFormat
638637deriveJSON (jsonPrefix "SwaggerApiKey") ''SwaggerApiKeyLocation
639638deriveJSON (jsonPrefix "swaggerApiKey") ''SwaggerApiKeyParams
640−deriveJSON' ''SwaggerResponse
641−deriveJSON' ''SwaggerSchemaCommon
639+deriveJSON (jsonPrefix "swaggerSchema") ''SwaggerSchemaCommon
642640deriveJSONDefault ''SwaggerScheme
643641deriveJSON' ''SwaggerTag
644642deriveJSON' ''SwaggerExternalDocs
645643deriveJSON' ''SwaggerXml
646644
645+deriveToJSON' ''SwaggerOperation
646+deriveToJSON' ''SwaggerResponse
647+
647648-- =======================================================================
648649-- Manual ToJSON instances
649650-- =======================================================================
@@ -721,9 +722,7 @@ instance ToJSON SwaggerSchemaItems where
721722 toJSON (SwaggerSchemaItemsArray xs) = toJSON xs
722723
723724instance ToJSON SwaggerResponses where
724− toJSON (SwaggerResponses def rs) = object
725− [ "default" .= def
726− , "responses" .= hashMapMapKeys show rs ]
725+ toJSON (SwaggerResponses def rs) = toJSON (hashMapMapKeys show rs) <+> object [ "default" .= def ]
727726
728727instance ToJSON SwaggerExample where
729728 toJSON = toJSON . Map.mapKeys show . getSwaggerExample
@@ -795,6 +794,7 @@ instance FromJSON SwaggerMimeList where
795794
796795instance FromJSON SwaggerParameter where
797796 parseJSON = genericParseJSONWithSub "schema" (jsonPrefix "swaggerParameter")
797+ `withDefaults` [ "required" .= False ]
798798
799799instance FromJSON SwaggerParameterSchema where
800800 parseJSON json@(Object o) = do
@@ -806,6 +806,7 @@ instance FromJSON SwaggerParameterSchema where
806806
807807instance FromJSON SwaggerParameterOtherSchema where
808808 parseJSON = genericParseJSONWithSub "common" (jsonPrefix "swaggerParameterOtherSchema")
809+ `withDefaults` [ "allowEmptyValue" .= False ]
809810
810811instance FromJSON SwaggerSchemaItems where
811812 parseJSON json@(Object _) = SwaggerSchemaItemsObject <$> parseJSON json
@@ -814,7 +815,7 @@ instance FromJSON SwaggerSchemaItems where
814815
815816instance FromJSON SwaggerResponses where
816817 parseJSON (Object o) = SwaggerResponses
817− <$> o .: "default"
818+ <$> o .:? "default"
818819 <*> (parseJSON (Object (HashMap.delete "default" o)) >>= hashMapReadKeys)
819820 parseJSON _ = empty
820821
@@ -823,3 +824,10 @@ instance FromJSON SwaggerExample where
823824 m <- parseJSON json
824825 pure $ SwaggerExample (Map.mapKeys fromString m)
825826
827+instance FromJSON SwaggerResponse where
828+ parseJSON = genericParseJSON (jsonPrefix "swaggerResponse")
829+ `withDefaults` [ "headers" .= (mempty :: HashMap HeaderName SwaggerHeader) ]
830+
831+instance FromJSON SwaggerOperation where
832+ parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")
833+ `withDefaults` [ "deprecated" .= False ]