@@ -9,14 +9,12 @@
99{-# LANGUAGE RecordWildCards #-}
1010{-# LANGUAGE ScopedTypeVariables #-}
1111{-# LANGUAGE StandaloneDeriving #-}
12−{-# LANGUAGE TemplateHaskell #-}
1312{-# LANGUAGE UndecidableInstances #-}
1413module Data.Swagger.Internal where
1514
1615import Control.Applicative
1716import Control.Monad
1817import Data.Aeson
19−import Data.Aeson.TH (deriveJSON)
2018import qualified Data.Aeson.Types as JSON
2119import Data.Data (Data(..), Typeable, mkConstr, mkDataType, Fixity(..), Constr, DataType, constrIndex)
2220import Data.HashMap.Strict (HashMap)
@@ -825,20 +823,69 @@ instance SwaggerMonoid ParamAnySchema where
825823 swaggerMappend _ y = y
826824
827825-- =======================================================================
828−-- TH derived ToJSON and FromJSON instances
826+-- Simple Generic-based ToJSON instances
829827-- =======================================================================
830828
831−deriveJSON (jsonPrefix "Param") ''ParamLocation
832−deriveJSON' ''Info
833−deriveJSON' ''Contact
834−deriveJSON' ''License
835−deriveJSON (jsonPrefix "ApiKey") ''ApiKeyLocation
836−deriveJSON (jsonPrefix "apiKey") ''ApiKeyParams
837−deriveJSONDefault ''Scheme
838−deriveJSON' ''Tag
839−deriveJSON' ''ExternalDocs
840−
841−deriveToJSON' ''Xml
829+instance ToJSON ParamLocation where
830+ toJSON = genericToJSON (jsonPrefix "Param")
831+
832+instance ToJSON Info where
833+ toJSON = genericToJSON (jsonPrefix "Info")
834+
835+instance ToJSON Contact where
836+ toJSON = genericToJSON (jsonPrefix "Contact")
837+
838+instance ToJSON License where
839+ toJSON = genericToJSON (jsonPrefix "License")
840+
841+instance ToJSON ApiKeyLocation where
842+ toJSON = genericToJSON (jsonPrefix "ApiKey")
843+
844+instance ToJSON ApiKeyParams where
845+ toJSON = genericToJSON (jsonPrefix "apiKey")
846+
847+instance ToJSON Scheme where
848+ toJSON = genericToJSON (jsonPrefix "")
849+
850+instance ToJSON Tag where
851+ toJSON = genericToJSON (jsonPrefix "Tag")
852+
853+instance ToJSON ExternalDocs where
854+ toJSON = genericToJSON (jsonPrefix "ExternalDocs")
855+
856+instance ToJSON Xml where
857+ toJSON = genericToJSON (jsonPrefix "Xml")
858+
859+-- =======================================================================
860+-- Simple Generic-based FromJSON instances
861+-- =======================================================================
862+
863+instance FromJSON ParamLocation where
864+ parseJSON = genericParseJSON (jsonPrefix "Param")
865+
866+instance FromJSON Info where
867+ parseJSON = genericParseJSON (jsonPrefix "Info")
868+
869+instance FromJSON Contact where
870+ parseJSON = genericParseJSON (jsonPrefix "Contact")
871+
872+instance FromJSON License where
873+ parseJSON = genericParseJSON (jsonPrefix "License")
874+
875+instance FromJSON ApiKeyLocation where
876+ parseJSON = genericParseJSON (jsonPrefix "ApiKey")
877+
878+instance FromJSON ApiKeyParams where
879+ parseJSON = genericParseJSON (jsonPrefix "apiKey")
880+
881+instance FromJSON Scheme where
882+ parseJSON = genericParseJSON (jsonPrefix "")
883+
884+instance FromJSON Tag where
885+ parseJSON = genericParseJSON (jsonPrefix "Tag")
886+
887+instance FromJSON ExternalDocs where
888+ parseJSON = genericParseJSON (jsonPrefix "ExternalDocs")
842889
843890-- =======================================================================
844891-- Manual ToJSON instances