aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/archive.rs14
-rw-r--r--src/listing.rs3
2 files changed, 16 insertions, 1 deletions
diff --git a/src/archive.rs b/src/archive.rs
index 0f09005..1b31d08 100644
--- a/src/archive.rs
+++ b/src/archive.rs
@@ -1,3 +1,4 @@
+use actix_web::http::ContentEncoding;
use bytes::Bytes;
use libflate::gzip::Encoder;
use serde::Deserialize;
@@ -29,6 +30,19 @@ impl CompressionMethod {
}
.to_string()
}
+
+ pub fn content_type(&self) -> String {
+ match &self {
+ CompressionMethod::TarGz => "application/gzip",
+ }
+ .to_string()
+ }
+
+ pub fn content_encoding(&self) -> ContentEncoding {
+ match &self {
+ CompressionMethod::TarGz => ContentEncoding::Gzip,
+ }
+ }
}
/// Possible errors
diff --git a/src/listing.rs b/src/listing.rs
index c9542b8..f7198a5 100644
--- a/src/listing.rs
+++ b/src/listing.rs
@@ -230,8 +230,9 @@ pub fn directory_listing<S>(
if let Some(compression_method) = &download {
match archive::create_archive_file(&compression_method, &dir.path) {
Ok((filename, content)) => Ok(HttpResponse::Ok()
- .content_type("application/tar")
+ .content_type(compression_method.content_type())
.content_length(content.len() as u64)
+ .content_encoding(compression_method.content_encoding())
.header("Content-Transfer-Encoding", "binary")
.header(
"Content-Disposition",