packages feed

patrol-1.0.1.0: source/library/Patrol/Type/Headers.hs

module Patrol.Type.Headers where

import qualified Data.Aeson as Aeson
import qualified Data.ByteString.Builder as Builder

-- | <https://develop.sentry.dev/sdk/data-model/envelopes/#headers>
newtype Headers
  = Headers Aeson.Object
  deriving (Eq, Show)

instance Aeson.FromJSON Headers where
  parseJSON = fmap fromObject . Aeson.parseJSON

instance Aeson.ToJSON Headers where
  toJSON = Aeson.Object . intoObject

fromObject :: Aeson.Object -> Headers
fromObject = Headers

intoObject :: Headers -> Aeson.Object
intoObject (Headers object) = object

empty :: Headers
empty = fromObject mempty

serialize :: Headers -> Builder.Builder
serialize = Aeson.fromEncoding . Aeson.toEncoding