{-# 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