module Network.DigitalOcean.Services.Certificate 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 Certificate = Certificate
{ certificateId :: CertificateId
, certificateName :: String
, certificateNotAfter :: String
, certificateSha1Fingerprint :: String
, certificateCreatedAt :: UTCTime
} deriving (Show, Generic)
instance FromJSON (Response Certificate) where
parseJSON (Object v) =
fmap Response $ parseJSON =<< (v .: "certificate")
instance FromJSON (Response [Certificate]) where
parseJSON (Object v) =
fmap Response $ parseJSON =<< (v .: "certificates")
instance FromJSON Certificate where
parseJSON = genericParseJSON $ aesonPrefix snakeCase
instance FromJSON (PaginationState Certificate) where
parseJSON (Object v) = parsePaginationState v "certificates"
instance Paginatable Certificate where
data Certificatepayload = Certificatepayload
{ certificatepayloadName :: String
, certificatepayloadPrivateKey :: String
, certificatepayloadLeafCertificate :: String
, certificatepayloadCertificateChain :: Maybe String
} deriving (Show, Generic)
instance ToJSON Certificatepayload where
toJSON = genericToJSON $ aesonPrefix snakeCase
instance Payload Certificatepayload