module Network.Hawk.Internal.JSON where
import qualified Data.ByteString.Char8 as S8
import Data.Aeson
import Data.Aeson.Types (typeMismatch)
import Network.Hawk.Internal.Types (MessageAuth(..))
instance ToJSON MessageAuth where
toJSON MessageAuth{..} = object
[ "id" .= msgId
, "ts" .= msgTimestamp
, "nonce" .= S8.unpack msgNonce
, "hash" .= S8.unpack msgHash
, "mac" .= S8.unpack msgMac
]
instance FromJSON MessageAuth where
parseJSON (Object v) = MessageAuth
<$> v .: "id"
<*> v .: "ts"
<*> v .:* "nonce"
<*> v .:* "hash"
<*> v .:* "mac"
where v .:* k = S8.pack <$> (v .: k)
parseJSON invalid = typeMismatch "MessageAuth" invalid