@@ -9,14 +9,12 @@
9{-# LANGUAGE RecordWildCards #-}
9{-# LANGUAGE RecordWildCards #-}
10{-# LANGUAGE ScopedTypeVariables #-}
10{-# LANGUAGE ScopedTypeVariables #-}
11{-# LANGUAGE StandaloneDeriving #-}
11{-# LANGUAGE StandaloneDeriving #-}
12−{-# LANGUAGE TemplateHaskell #-}
13{-# LANGUAGE UndecidableInstances #-}
12{-# LANGUAGE UndecidableInstances #-}
14module Data.Swagger.Internal where
13module Data.Swagger.Internal where
16import Control.Applicative
15import Control.Applicative
17import Control.Monad
16import Control.Monad
18import Data.Aeson
17import Data.Aeson
19−import Data.Aeson.TH (deriveJSON)
20import qualified Data.Aeson.Types as JSON
18import qualified Data.Aeson.Types as JSON
21import Data.Data (Data(..), Typeable, mkConstr, mkDataType, Fixity(..), Constr, DataType, constrIndex)
19import Data.Data (Data(..), Typeable, mkConstr, mkDataType, Fixity(..), Constr, DataType, constrIndex)
22import Data.HashMap.Strict (HashMap)
20import Data.HashMap.Strict (HashMap)
@@ -825,20 +823,69 @@ instance SwaggerMonoid ParamAnySchema where
825 swaggerMappend _ y = y
823 swaggerMappend _ y = y
827-- =======================================================================
825-- =======================================================================
828−-- TH derived ToJSON and FromJSON instances
826+-- Simple Generic-based ToJSON instances
829-- =======================================================================
827-- =======================================================================
829+instance ToJSON ParamLocation where
831−deriveJSON (jsonPrefix "Param") ''ParamLocation
830+ toJSON = genericToJSON (jsonPrefix "Param")
832−deriveJSON' ''Info
831+
833−deriveJSON' ''Contact
832+instance ToJSON Info where
834−deriveJSON' ''License
833+ toJSON = genericToJSON (jsonPrefix "Info")
835−deriveJSON (jsonPrefix "ApiKey") ''ApiKeyLocation
834+
836−deriveJSON (jsonPrefix "apiKey") ''ApiKeyParams
835+instance ToJSON Contact where
837−deriveJSONDefault ''Scheme
836+ toJSON = genericToJSON (jsonPrefix "Contact")
838−deriveJSON' ''Tag
837+
838+instance ToJSON License where
839+ toJSON = genericToJSON (jsonPrefix "License")
841+instance ToJSON ApiKeyLocation where
842+ toJSON = genericToJSON (jsonPrefix "ApiKey")
844+instance ToJSON ApiKeyParams where
845+ toJSON = genericToJSON (jsonPrefix "apiKey")
847+instance ToJSON Scheme where
848+ toJSON = genericToJSON (jsonPrefix "")
850+instance ToJSON Tag where
851+ toJSON = genericToJSON (jsonPrefix "Tag")
839−deriveJSON' ''ExternalDocs
853+instance ToJSON ExternalDocs where
840−
854+ toJSON = genericToJSON (jsonPrefix "ExternalDocs")
841−deriveToJSON' ''Xml
855+
856+instance ToJSON Xml where
857+ toJSON = genericToJSON (jsonPrefix "Xml")
859+-- =======================================================================
860+-- Simple Generic-based FromJSON instances
861+-- =======================================================================
863+instance FromJSON ParamLocation where
864+ parseJSON = genericParseJSON (jsonPrefix "Param")
866+instance FromJSON Info where
867+ parseJSON = genericParseJSON (jsonPrefix "Info")
869+instance FromJSON Contact where
870+ parseJSON = genericParseJSON (jsonPrefix "Contact")
872+instance FromJSON License where
873+ parseJSON = genericParseJSON (jsonPrefix "License")
875+instance FromJSON ApiKeyLocation where
876+ parseJSON = genericParseJSON (jsonPrefix "ApiKey")
878+instance FromJSON ApiKeyParams where
879+ parseJSON = genericParseJSON (jsonPrefix "apiKey")
881+instance FromJSON Scheme where
882+ parseJSON = genericParseJSON (jsonPrefix "")
884+instance FromJSON Tag where
885+ parseJSON = genericParseJSON (jsonPrefix "Tag")
887+instance FromJSON ExternalDocs where
888+ parseJSON = genericParseJSON (jsonPrefix "ExternalDocs")
843-- =======================================================================
890-- =======================================================================
844-- Manual ToJSON instances
891-- Manual ToJSON instances