{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} module Network.DigitalOcean.Services.Domain where ----------------------------------------------------------------- import Data.Aeson import Data.Aeson.Casing import Data.Time.Clock import GHC.Generics ----------------------------------------------------------------- import Network.DigitalOcean.Types import Network.DigitalOcean.Utils.Pagination import Network.DigitalOcean.Services.Action ----------------------------------------------------------------- data Domain = Domain { domainName :: String , domainTtl :: String , domainZoneFile :: String } deriving (Show, Generic) instance FromJSON (Response Domain) where parseJSON (Object v) = fmap Response $ parseJSON =<< (v .: "domain") instance FromJSON (Response [Domain]) where parseJSON (Object v) = fmap Response $ parseJSON =<< (v .: "domains") instance FromJSON Domain where parseJSON = genericParseJSON $ aesonPrefix snakeCase instance FromJSON (PaginationState Domain) where parseJSON (Object v) = parsePaginationState v "domains" instance Paginatable Domain data DomainPayload = DomainPayload { domainpayloadName :: String , domainpayloadIpAddress :: String } deriving (Show, Generic) instance ToJSON DomainPayload where toJSON = genericToJSON $ aesonPrefix snakeCase instance Payload DomainPayload