-- |
-- Smith JSON representiation encoders.
--
{-# LANGUAGE OverloadedStrings #-}
module Smith.Client.Serial.Encode (
    certificateRequest
  ) where


import           Data.Aeson ((.=))
import qualified Data.Aeson as Aeson

import           Smith.Client.Data.CertificateRequest
import           Smith.Client.Data.Environment


certificateRequest :: CertificateRequest -> Aeson.Value
certificateRequest request =
  Aeson.object [
      "public-key" .= (getPublicKey $ certificateRequestPublicKey request)
    , "principals" .= (getPrincipal <$> certificateRequestPrincipals request)
    , "environment" .= (getEnvironment $ certificateRequestEnvironment request)
    , "host-name" .= (getHostName <$> certificateRequestHostName request)
    ]