0
を使用して、requestBodySourceIO
この型シグネチャを有する:保管トラック<code>Network.HTTP.Conduit</code>でrequestBodySourceIO
Prelude Network.HTTP.Conduit Data.Conduit Control.Monad.Trans.Resource> :t requestBodySourceIO
requestBodySourceIO
:: GHC.Int.Int64
-> Source IO Data.ByteString.Internal.ByteString -> RequestBody
最初の引数は、バイト単位体の長さです。これまでにBytestring
の実行合計を追跡しながら、ByteString
のソースを渡すのは良い方法ですか?これは、リクエストの最後に渡された長さが、それに渡されたBytestring
の全長と一致するかどうかを判断するのに役立ちます。
hmm、 'requestBodySourceIO'はあらかじめ定義された関数です。それは何とかここに上書きされないのですか、新しいものを書くことを提案していますか?また、ここでシンクしていますが、上記のコードでどのようにサイズを取得するのですか?上記の 'requestBodySourceIO'内で消費されているようです(何とか上書きできると仮定して)、' requestBody'を返す必要があります。 – Sal
さて、それは理にかなっています!私はまだこのtypechecksを確認する必要があります。その前に、私のためのこのパズルの欠けているもの - 私たちは 'requestBody'を返す' requestBodySourceIO'に 'mySource'を渡します。 'requestBodySourceIO'が終了した後に長さを取得するにはどうしたらいいですか(長さは返されません)? 'mySource'に対して別の' runConduit'を並行して実行することはできますか(そのストリームを2つの異なる関数に渡す何らかの「T」分割)?これを行う効率的な方法は何でしょうか? – Sal
また、必要に応じて、追加する代わりに最終バージョンで回答を上書きすることもできます。 – Sal