Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sdroege/gst-plugin-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorrajneeshksoni <soni.rajneesh@gmail.com>2023-02-09 16:44:16 +0300
committerArun Raghavan <arun@arunraghavan.net>2023-02-09 22:04:07 +0300
commit994c79569e1fd5a8adb909a611b21607fc2db128 (patch)
tree4015dc16472747b1745333534458808ca0538539 /net
parent4d9b6c54725ceb1494674743d54f88fdb3dce7f0 (diff)
awss3sink: Add properties to set content-Type and content-disposition.
for uploaded object default content-type is set to binary/octet-stream, which is correct. metadata cannot be used to set content-type and content-disposition as setting metadata add a prefix x-amz-meta to key e.g. setting metadate "content-type=video/mp4" actually set value as x-amz-meta-content-type. So these has to be seaprate property. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1085>
Diffstat (limited to 'net')
-rw-r--r--net/aws/src/s3sink/imp.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/net/aws/src/s3sink/imp.rs b/net/aws/src/s3sink/imp.rs
index 0f32aafe..1871740e 100644
--- a/net/aws/src/s3sink/imp.rs
+++ b/net/aws/src/s3sink/imp.rs
@@ -101,6 +101,7 @@ struct Settings {
bucket: Option<String>,
key: Option<String>,
content_type: Option<String>,
+ content_disposition: Option<String>,
buffer_size: u64,
access_key: Option<String>,
secret_access_key: Option<String>,
@@ -153,6 +154,7 @@ impl Default for Settings {
bucket: None,
key: None,
content_type: None,
+ content_disposition: None,
access_key: None,
secret_access_key: None,
session_token: None,
@@ -350,6 +352,7 @@ impl S3Sink {
let bucket = Some(url.bucket.clone());
let key = Some(url.object.clone());
let content_type = settings.content_type.clone();
+ let content_disposition = settings.content_disposition.clone();
let metadata = settings.to_metadata(self);
client
@@ -357,6 +360,7 @@ impl S3Sink {
.set_bucket(bucket)
.set_key(key)
.set_content_type(content_type)
+ .set_content_disposition(content_disposition)
.set_metadata(metadata)
}
@@ -753,6 +757,14 @@ impl ObjectImpl for S3Sink {
.nick("S3 endpoint URI")
.blurb("The S3 endpoint URI to use")
.build(),
+ glib::ParamSpecString::builder("content-type")
+ .nick("content-type")
+ .blurb("Content-Type header to set for uploaded object")
+ .build(),
+ glib::ParamSpecString::builder("content-disposition")
+ .nick("content-disposition")
+ .blurb("Content-Disposition header to set for uploaded object")
+ .build(),
]
});
@@ -856,6 +868,16 @@ impl ObjectImpl for S3Sink {
let _ = self.set_uri(Some(&settings.to_uri()));
}
}
+ "content-type" => {
+ settings.content_type = value
+ .get::<Option<String>>()
+ .expect("type checked upstream");
+ }
+ "content-disposition" => {
+ settings.content_disposition = value
+ .get::<Option<String>>()
+ .expect("type checked upstream");
+ }
_ => unimplemented!(),
}
}
@@ -895,6 +917,8 @@ impl ObjectImpl for S3Sink {
(settings.retry_attempts as i64 * request_timeout).to_value()
}
"endpoint-uri" => settings.endpoint_uri.to_value(),
+ "content-type" => settings.content_type.to_value(),
+ "content-disposition" => settings.content_disposition.to_value(),
_ => unimplemented!(),
}
}