如何将“原始请求主体”通过管道传输到“请求主体源”中?
How does one pipe `rawRequestBody` into `requestBodySource`?
Yesod rawRequestBody
具有以下类型签名:
rawRequestBody :: MonadHandler m => Source m ByteString
并且 http-conduit 具有将源转换为 RequestBody
:
的功能
requestBodySource :: Int64 -> Source (ResourceT IO) ByteString -> RequestBody
我希望能够通过将 rawRequestBody
转换为处理程序中的 RequestBody
将其流式传输到 S3 对象、ResourceT IO ~ MonadHandler
不计算,我似乎做不到 MonadHandler m => m -> ResourceT IO
我试过:
transPipe
- 如果我们从 rawRequestBody
得到 Source Handler ByteString
似乎到达 ByteString
的唯一方法是 consume
它,即
transPipe ??? rawRequestBody :: Source (ResourceT IO) ByteString
handlerToIO
- 但是请求正文似乎已被清除,因此不会有任何可用数据
请帮忙:)
函数 waiRequest will give you back the WAI Request value. You can use sourceRequestBody 从中得到 Source
。
Yesod rawRequestBody
具有以下类型签名:
rawRequestBody :: MonadHandler m => Source m ByteString
并且 http-conduit 具有将源转换为 RequestBody
:
requestBodySource :: Int64 -> Source (ResourceT IO) ByteString -> RequestBody
我希望能够通过将 rawRequestBody
转换为处理程序中的 RequestBody
将其流式传输到 S3 对象、ResourceT IO ~ MonadHandler
不计算,我似乎做不到 MonadHandler m => m -> ResourceT IO
我试过:
transPipe
- 如果我们从 rawRequestBody
得到 Source Handler ByteString
似乎到达 ByteString
的唯一方法是 consume
它,即
transPipe ??? rawRequestBody :: Source (ResourceT IO) ByteString
handlerToIO
- 但是请求正文似乎已被清除,因此不会有任何可用数据
请帮忙:)
函数 waiRequest will give you back the WAI Request value. You can use sourceRequestBody 从中得到 Source
。