parseJsonBody_
This commit is contained in:
parent
4d45bfeb13
commit
d64ab7482e
@ -8,6 +8,7 @@ module Yesod.Json
|
|||||||
|
|
||||||
-- * Convert to a JSON value
|
-- * Convert to a JSON value
|
||||||
, parseJsonBody
|
, parseJsonBody
|
||||||
|
, parseJsonBody_
|
||||||
|
|
||||||
-- * Produce JSON values
|
-- * Produce JSON values
|
||||||
, J.Value (..)
|
, J.Value (..)
|
||||||
@ -15,7 +16,7 @@ module Yesod.Json
|
|||||||
, array
|
, array
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Yesod.Handler (GHandler, waiRequest, lift)
|
import Yesod.Handler (GHandler, waiRequest, lift, invalidArgs)
|
||||||
import Yesod.Content
|
import Yesod.Content
|
||||||
( ToContent (toContent), RepHtmlJson (RepHtmlJson), RepHtml (RepHtml)
|
( ToContent (toContent), RepHtmlJson (RepHtmlJson), RepHtml (RepHtml)
|
||||||
, RepJson (RepJson), Content (ContentBuilder)
|
, RepJson (RepJson), Content (ContentBuilder)
|
||||||
@ -27,7 +28,7 @@ import qualified Data.Aeson as J
|
|||||||
import qualified Data.Aeson.Encode as JE
|
import qualified Data.Aeson.Encode as JE
|
||||||
import Data.Aeson.Encode (fromValue)
|
import Data.Aeson.Encode (fromValue)
|
||||||
import Data.Conduit.Attoparsec (sinkParser)
|
import Data.Conduit.Attoparsec (sinkParser)
|
||||||
import Data.Text (Text)
|
import Data.Text (Text, pack)
|
||||||
import qualified Data.Vector as V
|
import qualified Data.Vector as V
|
||||||
import Text.Julius (ToJavascript (..))
|
import Text.Julius (ToJavascript (..))
|
||||||
import Data.Text.Lazy.Builder (fromLazyText)
|
import Data.Text.Lazy.Builder (fromLazyText)
|
||||||
@ -74,6 +75,15 @@ parseJsonBody = do
|
|||||||
req <- waiRequest
|
req <- waiRequest
|
||||||
fmap J.fromJSON $ lift $ requestBody req $$ sinkParser J.json'
|
fmap J.fromJSON $ lift $ requestBody req $$ sinkParser J.json'
|
||||||
|
|
||||||
|
-- | Same as 'parseJsonBody', but return an invalid args response on a parse
|
||||||
|
-- error.
|
||||||
|
parseJsonBody_ :: J.FromJSON a => GHandler sub master a
|
||||||
|
parseJsonBody_ = do
|
||||||
|
ra <- parseJsonBody
|
||||||
|
case ra of
|
||||||
|
J.Error s -> invalidArgs [pack s]
|
||||||
|
J.Success a -> return a
|
||||||
|
|
||||||
instance ToJavascript J.Value where
|
instance ToJavascript J.Value where
|
||||||
toJavascript = fromLazyText . decodeUtf8 . JE.encode
|
toJavascript = fromLazyText . decodeUtf8 . JE.encode
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user