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