Yesod has rawRequestBody
with the following type signature:
rawRequestBody :: MonadHandler m => Source m ByteString
And http-conduit has this function that converts a source into a RequestBody
:
requestBodySource :: Int64 -> Source (ResourceT IO) ByteString -> RequestBody
I want to be able to stream the rawRequestBody
to an S3 object by converting it into a RequestBody
inside a handler, ResourceT IO ~ MonadHandler
doesn't compute and I can't seem to do MonadHandler m => m -> ResourceT IO
I've tried:
transPipe
- if we get Source Handler ByteString
from rawRequestBody
it seems like the only way to get at the ByteString
is to consume
it, i.e
transPipe ??? rawRequestBody :: Source (ResourceT IO) ByteString
handlerToIO
- however it seems like the request body is cleared so there won't be any data available
Please help :)
The function waiRequest will give you back the WAI Request value. You can use sourceRequestBody to get a Source
from that.