mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-07-24 08:26:01 +00:00
api: query_url_metadata: optionally detect compression
extend the query_url_metadata endpoint with the option to detect and return used compression algorithms, if supported by PVE. this will be used to support decompression as part of the download flow for certain file types (ISO files for now). Signed-off-by: Philipp Hufnagl <p.hufnagl@proxmox.com> Slightly reworded commit title/message Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> Reviewed-by: Dominik Csapak <d.csapak@proxmox.com> Tested-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
acaa1e40d6
commit
d61728e289
@ -34,6 +34,7 @@ use PVE::RRD;
|
||||
use PVE::Report;
|
||||
use PVE::SafeSyslog;
|
||||
use PVE::Storage;
|
||||
use PVE::Storage::Plugin;
|
||||
use PVE::Tools;
|
||||
use PVE::pvecfg;
|
||||
|
||||
@ -1564,7 +1565,13 @@ __PACKAGE__->register_method({
|
||||
type => 'boolean',
|
||||
optional => 1,
|
||||
default => 1,
|
||||
}
|
||||
},
|
||||
'detect-compression' => {
|
||||
description => "If true an auto detection of used compression will be attempted",
|
||||
type => 'boolean',
|
||||
optional => 1,
|
||||
default => 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
returns => {
|
||||
@ -1583,6 +1590,11 @@ __PACKAGE__->register_method({
|
||||
type => 'string',
|
||||
optional => 1,
|
||||
},
|
||||
compression => {
|
||||
type => 'string',
|
||||
enum => $PVE::Storage::Plugin::KNOWN_COMPRESSION_FORMATS,
|
||||
optional => 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
code => sub {
|
||||
@ -1605,6 +1617,7 @@ __PACKAGE__->register_method({
|
||||
SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE,
|
||||
);
|
||||
}
|
||||
my $detect_compression = $param->{'detect-compression'} // 0;
|
||||
|
||||
my $req = HTTP::Request->new(HEAD => $url);
|
||||
my $res = $ua->request($req);
|
||||
@ -1615,6 +1628,7 @@ __PACKAGE__->register_method({
|
||||
my $disposition = $res->header("Content-Disposition");
|
||||
my $type = $res->header("Content-Type");
|
||||
|
||||
my $compression;
|
||||
my $filename;
|
||||
|
||||
if ($disposition && ($disposition =~ m/filename="([^"]*)"/ || $disposition =~ m/filename=([^;]*)/)) {
|
||||
@ -1628,10 +1642,16 @@ __PACKAGE__->register_method({
|
||||
$type = $1;
|
||||
}
|
||||
|
||||
if ($detect_compression && $filename =~ m!^(.+)\.(${\PVE::Storage::Plugin::COMPRESSOR_RE})$!) {
|
||||
$filename = $1;
|
||||
$compression = $2;
|
||||
}
|
||||
|
||||
my $ret = {};
|
||||
$ret->{filename} = $filename if $filename;
|
||||
$ret->{size} = $size + 0 if $size;
|
||||
$ret->{mimetype} = $type if $type;
|
||||
$ret->{compression} = $compression if $compression;
|
||||
|
||||
return $ret;
|
||||
}});
|
||||
|
Loading…
Reference in New Issue
Block a user