{-# LANGUAGE DeriveGeneric #-} module Data.WellKnownClientData (WellKnownClient, makeWellKnownClient) where import Data.Aeson import Data.Aeson.TH import GHC.Generics (Generic) data BaseUrlHolder = BaseUrlHolder { base_url :: String } deriving (Eq, Show, Generic) instance FromJSON BaseUrlHolder where instance ToJSON BaseUrlHolder where data WellKnownClient = WellKnownClient { homeserver :: BaseUrlHolder , identity_server :: BaseUrlHolder } deriving (Eq, Show, Generic) fieldMapping :: String -> String fieldMapping "homeserver" = "m.homeserver" fieldMapping "identity_server" = "m.identity_server" fieldMapping name = name instance FromJSON WellKnownClient where parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = fieldMapping } instance ToJSON WellKnownClient where toJSON = genericToJSON defaultOptions { fieldLabelModifier = fieldMapping } makeWellKnownClient :: String -> String -> WellKnownClient makeWellKnownClient homeserver identity_server = WellKnownClient (BaseUrlHolder homeserver) (BaseUrlHolder identity_server)