{-# LANGUAGE TemplateHaskell #-}

module Taskell.IO.HTTP.Aeson where

import ClassyPrelude

import           Data.Aeson          (defaultOptions, fieldLabelModifier)
import qualified Data.Aeson.TH       as TH (deriveFromJSON)
import           Language.Haskell.TH (Dec, Name, Q)

import Data.FileEmbed (embedFile)

deriveFromJSON :: Name -> Q [Dec]
deriveFromJSON :: Name -> Q [Dec]
deriveFromJSON = Options -> Name -> Q [Dec]
TH.deriveFromJSON Options
defaultOptions {fieldLabelModifier :: String -> String
fieldLabelModifier = Index String -> String -> String
forall seq. IsSequence seq => Index seq -> seq -> seq
drop Index String
1}

parseError :: String -> Text
parseError :: String -> Text
parseError String
err = ByteString -> Text
forall textual binary. Utf8 textual binary => binary -> textual
decodeUtf8 $(embedFile "templates/api-error.txt") Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"\n\n" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Element Text] -> Text
forall seq. IsSequence seq => [Element seq] -> seq
pack String
[Element Text]
err