Yesod responseSource из источника с ограничением PrimMonad - PullRequest
0 голосов
/ 07 октября 2018

Я работаю на веб-сайте, использующем 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 достаточно, чтобы судить, имеет ли это смысл.

1 Ответ

0 голосов
/ 08 октября 2018

Выглядит как чистый недосмотр, что HandlerFor не является экземпляром PrimMonad отправил коммит , который должен решить эту проблему, и отправлю его в Hackage, как только CI сообщит мне, что это безопасно.

...