module Network.GoDaddy.AbuseTypes ( Pagination(Pagination)
, AbuseTicketList(AbuseTicketList)
, AbuseTicketCreate(AbuseTicketCreate)
, AbuseTicketId(AbuseTicketId)
, AbuseTicket(AbuseTicket)) where
import Data.Aeson
import Network.GoDaddy.Aliases
data Pagination = Pagination { first :: Maybe First
, previous :: Maybe Previous
, next :: Maybe Next
, last :: Maybe Last
, total :: Maybe Total } deriving (Show)
instance ToJSON Pagination where
toJSON (Pagination f p n l t) =
object [ "first" .= f
, "previous" .= p
, "next" .= n
, "last" .= l
, "total" .= t ]
instance FromJSON Pagination where
parseJSON (Object v) =
Pagination <$> v .:? "first"
<*> v .:? "previous"
<*> v .:? "next"
<*> v .:? "last"
<*> v .:? "total"
parseJSON _ = fail "Pagination object not found"
data AbuseTicketList = AbuseTicketList { ticketIds :: [AbuseTicketId]
, pagination :: Maybe Pagination } deriving (Show)
instance ToJSON AbuseTicketList where
toJSON (AbuseTicketList t p) =
object [ "ticketIds" .= t
, "pagination" .= p ]
instance FromJSON AbuseTicketList where
parseJSON (Object v) =
AbuseTicketList <$> v .: "ticketIds"
<*> v .:? "pagination"
parseJSON _ = fail "AbuseTicketList object not found"
data AbuseTicketCreate = AbuseTicketCreate { abuseType :: String
, abuseSource :: String
, abuseTarget :: Maybe String
, abuseProxy :: Maybe String
, abuseIntentional :: Maybe Bool
, abuseInfo :: Maybe String
, abuseInfoUrl :: Maybe String } deriving (Show)
instance ToJSON AbuseTicketCreate where
toJSON (AbuseTicketCreate ty so ta pr int inf infu) =
object [ "type" .= ty
, "source" .= so
, "target" .= ta
, "proxy" .= pr
, "intentional" .= int
, "info" .= inf
, "infoUrl" .= infu ]
instance FromJSON AbuseTicketCreate where
parseJSON (Object v) =
AbuseTicketCreate <$> v .: "type"
<*> v .: "source"
<*> v .:? "target"
<*> v .:? "proxy"
<*> v .:? "intentional"
<*> v .:? "info"
<*> v .:? "infoUrl"
parseJSON _ = fail "AbuseTicketCreate object not found"
data AbuseTicketId = AbuseTicketId { ticketId :: String } deriving (Show)
instance ToJSON AbuseTicketId where
toJSON (AbuseTicketId t) = object [ "ticketId" .= t ]
instance FromJSON AbuseTicketId where
parseJSON (Object v) = AbuseTicketId <$> v .: "ticketId"
parseJSON _ = fail "AbuseTicketId object not found"
data AbuseTicket = AbuseTicket { id :: String
, reporter :: String
, domainIp :: String
, close :: Bool
, typ :: String
, target :: String
, source :: String
, createdAt :: String
, closedAt :: String } deriving (Show)
instance ToJSON AbuseTicket where
toJSON (AbuseTicket i r d c ty ta s cr cl) =
object [ "ticketId" .= i
, "reporter" .= r
, "domainIp" .= d
, "closed" .= c
, "type" .= ty
, "target" .= ta
, "source" .= s
, "createdAt" .= cr
, "closedAt" .= cl ]
instance FromJSON AbuseTicket where
parseJSON (Object v) =
AbuseTicket <$> v .: "ticketId"
<*> v .: "reporter"
<*> v .: "domainIp"
<*> v .: "closed"
<*> v .: "type"
<*> v .: "target"
<*> v .: "source"
<*> v .: "createdAt"
<*> v .: "closedAt"