Я пытаюсь адаптировать этот код загрузки AWS S3 для обработки Lazy ByteString
где длина уже известна (чтобы ее не читали целиком в память - она приходит по сети, куда длина отправляется заранее). Кажется, мне нужно определить GivesPopper
над Lazy ByteString
, чтобы преобразовать его в RequestBodyStream
. Из-за запутанного способа определения GivesPopper
я не уверен, как написать его для Lazy ByteString
. Буду признателен за подсказки о том, как это написать. Вот так написано для чтения из файла :
let file ="test"
-- streams large file content, without buffering more than 10k in memory
let streamer sink = withFile file ReadMode $ \h -> sink $ S.hGet h 10240
streamer
в приведенном выше коде имеет тип GivesPopper ()
, если я правильно понимаю. Учитывая Lazy ByteString
с известной длиной len
, что было бы хорошим способом написать над ним функцию GivesPopper
? Мы можем читать по одному куску за раз.