amazonka-s3が提供する基本的なコンジットインターフェースの使用方法

2020-03-26 haskell amazon-s3 conduit

私はへの新たなんだconduitとすることを基本となるコンジット・インタフェースの使用方法を把握しようと、私の頭を悩まamazonka-s3提供しています。

ここで私は行き詰まっています。

  • getObjectを実行するとGetObjectResponseが生成され、そこから応答本体をgorsBodyレンズ経由で取得できます。これにより、 RsBody型の値が生成されます
  • RsBodyは、 ConduitM () ByteString (ResourceT IO) ()新しいタイプのラッパーです。 ただし、newtypeの記述方法では、ライブラリの作成者がユーザーにコンストラクターで直接パターンマッチすることを期待しているようには見えません。基になるConduitM ..インターフェイスにアクセスするにはどうすればConduitM ..か?
  • 「反対側」からアプローチすると、 type ResponseBody = ConduitM () ByteString (ResourceT IO) ()型(つまり、 RsBodyの基になる型と同じ型type ResponseBody = ConduitM () ByteString (ResourceT IO) ()機能するsinkLBS関数があることがわかります。ただし、これにより直接LazyByteString 、それ以上ストリーミング(たとえば、コンジットを使用して着信データのチェックサムを計算する)を行うことができなくなります。
  • また、 sinkBody :: MonadIO m => RsBody-> ConduitM ByteString Void(ResourceT IO)a-> maも利用できます。これは、 RsBody newtypeで直接動作しますが、これを使用する方法がわかりませんか?出力でVoidれるのはなぜですか?

Answers

Related