From: Christian Ebner <c.ebner@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox 4/6] s3 client: add doc comments for response parser helper methods
Date: Mon, 4 Aug 2025 18:09:35 +0200 [thread overview]
Message-ID: <20250804160937.660470-5-c.ebner@proxmox.com> (raw)
In-Reply-To: <20250804160937.660470-1-c.ebner@proxmox.com>
Document the response reader's helper methods to parse the various
responses.
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
proxmox-s3-client/src/response_reader.rs | 32 ++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/proxmox-s3-client/src/response_reader.rs b/proxmox-s3-client/src/response_reader.rs
index fc9519ad..cd3ee98a 100644
--- a/proxmox-s3-client/src/response_reader.rs
+++ b/proxmox-s3-client/src/response_reader.rs
@@ -186,10 +186,15 @@ pub struct Bucket {
}
impl ResponseReader {
+ /// Create a new response reader to parse given response.
pub(crate) fn new(response: Response<Incoming>) -> Self {
Self { response }
}
+ /// Read and parse the list object v2 response.
+ ///
+ /// Returns with error if the bucket cannot be found, an unexpected status code is encountered
+ /// or the response body cannot be parsed.
pub(crate) async fn list_objects_v2_response(self) -> Result<ListObjectsV2Response, Error> {
let (parts, body) = self.response.into_parts();
let body = body.collect().await?.to_bytes();
@@ -213,6 +218,10 @@ impl ResponseReader {
Ok(response.with_date(date))
}
+ /// Read and parse the head object response.
+ ///
+ /// Returns with error if an unexpected status code is encountered or the response headers or
+ /// body cannot be parsed.
pub(crate) async fn head_object_response(self) -> Result<Option<HeadObjectResponse>, Error> {
let (parts, body) = self.response.into_parts();
let body = body.collect().await?.to_bytes();
@@ -244,6 +253,10 @@ impl ResponseReader {
}))
}
+ /// Read and parse the get object response.
+ ///
+ /// Returns with error if the object is not accessible, an unexpected status code is encountered
+ /// or the response headers or body cannot be parsed.
pub(crate) async fn get_object_response(self) -> Result<Option<GetObjectResponse>, Error> {
let (parts, content) = self.response.into_parts();
@@ -274,6 +287,10 @@ impl ResponseReader {
}))
}
+ /// Read and parse the put object response.
+ ///
+ /// Returns with error on bad request, an unexpected status code is encountered or the response
+ /// headers or body cannot be parsed.
pub(crate) async fn put_object_response(self) -> Result<PutObjectResponse, Error> {
let (parts, body) = self.response.into_parts();
let body = body.collect().await?.to_bytes();
@@ -301,6 +318,9 @@ impl ResponseReader {
Ok(PutObjectResponse::Success(e_tag))
}
+ /// Read and parse the delete object response.
+ ///
+ /// Returns with error if an unexpected status code is encountered.
pub(crate) async fn delete_object_response(self) -> Result<(), Error> {
let (parts, _body) = self.response.into_parts();
@@ -312,6 +332,10 @@ impl ResponseReader {
Ok(())
}
+ /// Read and parse the delete objects response.
+ ///
+ /// Returns with error on bad request, an unexpected status code is encountered or the response
+ /// body cannot be parsed.
pub(crate) async fn delete_objects_response(self) -> Result<DeleteObjectsResponse, Error> {
let (parts, body) = self.response.into_parts();
let body = body.collect().await?.to_bytes();
@@ -336,6 +360,10 @@ impl ResponseReader {
Ok(delete_objects_response)
}
+ /// Read and parse the copy object response.
+ ///
+ /// Returns with error if the source object cannot be found or is in-accessible, an unexpected
+ /// status code is encountered or the response headers or body cannot be parsed.
pub(crate) async fn copy_object_response(self) -> Result<CopyObjectResponse, Error> {
let (parts, body) = self.response.into_parts();
let body = body.collect().await?.to_bytes();
@@ -371,6 +399,10 @@ impl ResponseReader {
})
}
+ /// Read and parse the list buckets response.
+ ///
+ /// Returns with error if an unexpected status code is encountered or the response body cannot
+ /// be parsed.
pub(crate) async fn list_buckets_response(self) -> Result<ListBucketsResponse, Error> {
let (parts, body) = self.response.into_parts();
let body = body.collect().await?.to_bytes();
--
2.47.2
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
next prev parent reply other threads:[~2025-08-04 16:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-04 16:09 [pbs-devel] [PATCH proxmox 0/6] followups and cleanups for s3 client Christian Ebner
2025-08-04 16:09 ` [pbs-devel] [PATCH proxmox 1/6] s3 client: fix formatting issues by `cargo fmt` Christian Ebner
2025-08-04 16:09 ` [pbs-devel] [PATCH proxmox 2/6] s3 client: refactor list buckets response status code matching Christian Ebner
2025-08-04 16:09 ` [pbs-devel] [PATCH proxmox 3/6] s3 client: refactor list buckets result list fetching Christian Ebner
2025-08-04 16:09 ` Christian Ebner [this message]
2025-08-04 16:09 ` [pbs-devel] [PATCH proxmox 5/6] s3 client: add and expand doc comments for response parsing objects Christian Ebner
2025-08-04 16:09 ` [pbs-devel] [PATCH proxmox 6/6] s3 client: add basic regression tests for response parsing Christian Ebner
2025-08-04 20:18 ` [pbs-devel] [PATCH proxmox 0/6] followups and cleanups for s3 client Thomas Lamprecht
2025-08-04 20:18 ` [pve-devel] " Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250804160937.660470-5-c.ebner@proxmox.com \
--to=c.ebner@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.