{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} module Network.DigitalOcean.Services.DomainRecord where ----------------------------------------------------------------- import Data.Aeson import Data.Aeson.Casing import GHC.Generics ----------------------------------------------------------------- import Network.DigitalOcean.Types import Network.DigitalOcean.Utils.Pagination import Network.DigitalOcean.Services.Action ----------------------------------------------------------------- data DomainRecord = DomainRecord { domainrecordId :: Int , domainrecordType :: String , domainrecordName :: String , domainrecordData :: String , domainrecordPriority :: Maybe Int , domainrecordPort :: Maybe Int , domainrecordTtl :: Int , domainrecordWeight :: Maybe Int } deriving (Show, Generic) instance FromJSON (Response DomainRecord) where parseJSON (Object v) = fmap Response $ parseJSON =<< (v .: "domain_record") instance FromJSON (Response [DomainRecord]) where parseJSON (Object v) = fmap Response $ parseJSON =<< (v .: "domain_records") instance FromJSON DomainRecord where parseJSON = genericParseJSON $ aesonPrefix snakeCase instance FromJSON (PaginationState DomainRecord) where parseJSON (Object v) = parsePaginationState v "domain_records" instance Paginatable DomainRecord data DomainRecordPayload = DomainRecordPayload { domainrecordpayloadType :: String , domainrecordpayloadName :: Maybe String , domainrecordpayloadData :: Maybe String , domainrecordpayloadPriority :: Maybe Int , domainrecordpayloadPort :: Maybe Int , domainrecordpayloadTtl :: Maybe Int , domainrecordpayloadWeight :: Maybe Int } deriving (Show, Generic) instance ToJSON DomainRecordPayload where toJSON = genericToJSON $ aesonPrefix snakeCase instance Payload DomainRecordPayload