У Yesod есть rawRequestBody
со следующей сигнатурой типа:
rawRequestBody :: MonadHandler m => Source m ByteString
И у http-conduit есть функция, которая преобразует источник в RequestBody
:
requestBodySource :: Int64 -> Source (ResourceT IO) ByteString -> RequestBody
Я хочу иметь возможность передавать rawRequestBody
в объект S3, преобразовывая его в RequestBody
внутри обработчика, ResourceT IO ~ MonadHandler
не вычисляет, и я не могу сделать MonadHandler m => m -> ResourceT IO
Я пробовал:
transPipe
— если мы получим Source Handler ByteString
из rawRequestBody
, это единственный способ добраться до ByteString
это consume
это, т.е.
transPipe ??? rawRequestBody :: Source (ResourceT IO) ByteString
handlerToIO
- однако кажется, что тело запроса очищено, поэтому нет доступных данных
Пожалуйста помоги :)