{-#LANGUAGE NoImplicitPrelude #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE OverloadedLists #-} {-#LANGUAGE LambdaCase #-} {-#LANGUAGE ScopedTypeVariables #-} {-#LANGUAGE FlexibleInstances #-} {-#LANGUAGE FlexibleContexts #-} {-#LANGUAGE MultiParamTypeClasses #-} module Web.Sprinkles.Handlers.JSON ( handleJSONTarget ) where import ClassyPrelude import Web.Sprinkles.Backends import qualified Network.Wai as Wai import Web.Sprinkles.Logger as Logger import Web.Sprinkles.Project import Web.Sprinkles.ProjectConfig import Web.Sprinkles.Handlers.Common import Network.HTTP.Types (Status, status200, status302, status400, status404, status500) import Web.Sprinkles.Backends.Loader.Type (PostBodySource (..), pbsFromRequest, pbsInvalid) import Data.Aeson as JSON import Data.Aeson.Encode.Pretty as JSON import Data.Aeson.TH as JSON import Data.AList (AList) import qualified Data.AList as AList handleJSONTarget :: ContextualHandler handleJSONTarget backendData project request respond = do respond $ Wai.responseLBS status200 [("Content-type", "application/json")] (JSON.encode backendData)