Я работаю на веб-сайте, использующем Yesod, и пытаюсь передать файл из zip-архива в ответ HTTP.
Я выбираю пакет zip
, соответствующая функция - getEntrySource .
Возвращает
ConduitT () ByteString m ()
, где m
должно удовлетворять
PrimMonad m
MonadThrow m
MonadResource m
Один тип, который будет соответствовать этим ограничениям, будет ResourceT IO
Для потоковой передачи данных Yesod предоставляет responseSource функция, которая принимает
ConduitT () (Flush Builder) (HandlerFor site) ()
Моя проблема:
ResourceT IO
будет работать для getEntrySource
, но respondSource
ожидаетHandlerFor site
.Я нашел функцию transPipe
, но я не думаю, что мне нужно разворачивать ResourceT IO
и оборачивать каждый кусок в HandlerFor site
.
HandlerFor site
неэкземпляр PrimMonad
, и я не понимаю PrimMonad
достаточно, чтобы судить, имеет ли это смысл.