{-# 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