Module Awskit_s3_eio.Reader

include Awskit_s3.READER with type 'a io := 'a and type t = Runtime.response_body_reader

Scoped response body reader.

Readers passed to object consume callbacks are valid only until the callback returns. Drain, copy, or decode the body inside that callback.

val read : t -> bytes -> off:int -> len:int -> (int, Awskit.Error.t) Stdlib.result

Read up to len bytes into bytes starting at off.

Returns Ok 0 at end of body.

val next : ?chunk_size:int -> t -> (bytes option, Awskit.Error.t) Stdlib.result

Read the next fresh chunk, or None at end of body.

chunk_size must be positive when supplied.

val fold : ?chunk_size:int -> t -> init:'a -> f:('a -> bytes -> ('a, Awskit.Error.t) Stdlib.result) -> ('a, Awskit.Error.t) Stdlib.result

Fold over response-body chunks until end of body or the callback returns an error.

val iter : ?chunk_size:int -> t -> f:(bytes -> (unit, Awskit.Error.t) Stdlib.result) -> (unit, Awskit.Error.t) Stdlib.result

Iterate over response-body chunks until end of body or the callback returns an error.

val to_bytes : ?chunk_size:int -> max_bytes:int64 -> t -> (bytes, Awskit.Error.t) Stdlib.result

Drain the body into memory as bytes, failing if it exceeds max_bytes.

val to_string : ?chunk_size:int -> max_bytes:int64 -> t -> (string, Awskit.Error.t) Stdlib.result

Drain the body into a string, failing if it exceeds max_bytes.

val to_flow : ?on_progress:(int64 -> unit) -> 'flow Eio.Flow.sink -> t -> (unit, Awskit_s3.Error.t) Stdlib.result

Stream a response body into an existing Eio sink flow. The caller owns and closes the flow.

val to_path : ?on_progress:(int64 -> unit) -> _ Eio.Path.t -> t -> (unit, Awskit_s3.Error.t) Stdlib.result

Stream a response body into a private 0o600 temporary file, then publish it at the target path when the copy succeeds.