From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: Proxmox Backup Server development discussion
<pbs-devel@lists.proxmox.com>,
Dominik Csapak <d.csapak@proxmox.com>
Subject: Re: [pbs-devel] [PATCH proxmox-backup v2 3/5] server/rest: add helper to extract compression headers
Date: Fri, 2 Apr 2021 14:20:21 +0200 [thread overview]
Message-ID: <fa524fca-81d0-1810-3be4-21dc7b9c35d0@proxmox.com> (raw)
In-Reply-To: <20210401141123.12964-4-d.csapak@proxmox.com>
On 01.04.21 16:11, Dominik Csapak wrote:
> for now we only extract 'deflate'
>
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
> src/server/rest.rs | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/src/server/rest.rs b/src/server/rest.rs
> index 1cd26787..00ff6844 100644
> --- a/src/server/rest.rs
> +++ b/src/server/rest.rs
> @@ -39,6 +39,7 @@ use crate::api2::types::{Authid, Userid};
> use crate::auth_helpers::*;
> use crate::config::cached_user_info::CachedUserInfo;
> use crate::tools;
> +use crate::tools::compression::CompressionMethod;
> use crate::tools::FileLogger;
>
> extern "C" {
> @@ -587,6 +588,28 @@ fn extract_lang_header(headers: &http::HeaderMap) -> Option<String> {
> None
> }
>
> +fn extract_compression_method(headers: &http::HeaderMap) -> Option<CompressionMethod> {
> + let mut compression = None;
> + if let Some(raw_encoding) = headers.get(header::ACCEPT_ENCODING) {
> + if let Ok(encoding) = raw_encoding.to_str() {
FWIW, above two lines could be merged with:
if let Some(Ok(encodings)) = headers.get(header::ACCEPT_ENCODING).map(|v| v.to_str()) {
Would reduce a level of indentation, which this fn has quite a few.
> + for encoding in encoding.split(&[',', ' '][..]) {
as mentioned off-list, the Accept-Encoding allows to add "Quality values" [2], like
`deflate;q=<weight>`[1], to encodings, I haven't seen any browser actually using it
but it is allowed in the RFC[0].
I'd not implement support for it, but we could either adapt the FromStr implementation
or split also by semicolon here.
[0]: https://tools.ietf.org/html/rfc7231#section-5.3.4
[1]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding#directives
[2]: https://developer.mozilla.org/en-US/docs/Glossary/Quality_values
> + if let Ok(method) = encoding.parse() {
> + if method != CompressionMethod::Deflate {
> + // fixme: implement other compressors
> + continue;
> + }
> + let method = Some(method);
> + if method > compression {
> + compression = method;
> + }
> + }
> + }
> + }
> + }
> +
> + return compression;
> +}
> +
> async fn handle_request(
> api: Arc<ApiConfig>,
> req: Request<Body>,
>
next prev parent reply other threads:[~2021-04-02 12:20 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-01 14:11 [pbs-devel] [PATCH proxmox-backup v2 0/5] add compression to api/static files Dominik Csapak
2021-04-01 14:11 ` [pbs-devel] [PATCH proxmox-backup v2 1/5] tools: add compression module Dominik Csapak
2021-04-02 12:07 ` Thomas Lamprecht
2021-04-01 14:11 ` [pbs-devel] [PATCH proxmox-backup v2 2/5] tools/compression: add DeflateEncoder and helpers Dominik Csapak
2021-04-02 12:14 ` Thomas Lamprecht
2021-04-01 14:11 ` [pbs-devel] [PATCH proxmox-backup v2 3/5] server/rest: add helper to extract compression headers Dominik Csapak
2021-04-02 12:20 ` Thomas Lamprecht [this message]
2021-04-01 14:11 ` [pbs-devel] [PATCH proxmox-backup v2 4/5] server/rest: compress api calls Dominik Csapak
2021-04-01 14:11 ` [pbs-devel] [PATCH proxmox-backup v2 5/5] server/rest: compress static files Dominik Csapak
2021-04-02 12:32 ` 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=fa524fca-81d0-1810-3be4-21dc7b9c35d0@proxmox.com \
--to=t.lamprecht@proxmox.com \
--cc=d.csapak@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.