serverless-haskell-0.1.0: src/AWSLambda/Events/Embedded.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-|
Module: AWSLambda.Events.Embedded
Description: Type for a JSON value embedded within a JSON string value
-}
module AWSLambda.Events.Embedded where
import Control.Lens.TH
import Data.Aeson
import Data.Text.Encoding (encodeUtf8)
-- | Type for a JSON value embedded within a JSON string value
newtype Embedded a = Embedded { _unEmbed :: a } deriving (Eq, Show)
instance FromJSON a =>
FromJSON (Embedded a) where
parseJSON =
withText "Embedded JSON" $
fmap Embedded . either fail pure . eitherDecodeStrict . encodeUtf8
$(makeLenses ''Embedded)