mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-09-26 14:00:12 +00:00
Merge branch 'Add-S3-server-side-encryption-option' into 'main'
Add S3 server side encryption option See merge request gstreamer/gst-plugins-rs!1288
This commit is contained in:
commit
0823ad048f
1 changed files with 21 additions and 1 deletions
|
@ -22,7 +22,7 @@ use aws_sdk_s3::{
|
||||||
upload_part::builders::UploadPartFluentBuilder,
|
upload_part::builders::UploadPartFluentBuilder,
|
||||||
},
|
},
|
||||||
primitives::ByteStream,
|
primitives::ByteStream,
|
||||||
types::{CompletedMultipartUpload, CompletedPart},
|
types::{CompletedMultipartUpload, CompletedPart, ServerSideEncryption},
|
||||||
Client,
|
Client,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ use futures::future;
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::convert::From;
|
use std::convert::From;
|
||||||
|
use std::str::FromStr;
|
||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
@ -105,6 +106,7 @@ struct Settings {
|
||||||
key: Option<String>,
|
key: Option<String>,
|
||||||
content_type: Option<String>,
|
content_type: Option<String>,
|
||||||
content_disposition: Option<String>,
|
content_disposition: Option<String>,
|
||||||
|
server_side_encryption: Option<String>,
|
||||||
buffer_size: u64,
|
buffer_size: u64,
|
||||||
access_key: Option<String>,
|
access_key: Option<String>,
|
||||||
secret_access_key: Option<String>,
|
secret_access_key: Option<String>,
|
||||||
|
@ -159,6 +161,7 @@ impl Default for Settings {
|
||||||
key: None,
|
key: None,
|
||||||
content_type: None,
|
content_type: None,
|
||||||
content_disposition: None,
|
content_disposition: None,
|
||||||
|
server_side_encryption: None,
|
||||||
access_key: None,
|
access_key: None,
|
||||||
secret_access_key: None,
|
secret_access_key: None,
|
||||||
session_token: None,
|
session_token: None,
|
||||||
|
@ -358,6 +361,12 @@ impl S3Sink {
|
||||||
let content_type = settings.content_type.clone();
|
let content_type = settings.content_type.clone();
|
||||||
let content_disposition = settings.content_disposition.clone();
|
let content_disposition = settings.content_disposition.clone();
|
||||||
let metadata = settings.to_metadata(self);
|
let metadata = settings.to_metadata(self);
|
||||||
|
let server_side_encryption = match ServerSideEncryption::from_str(
|
||||||
|
&settings.server_side_encryption.clone().unwrap_or_default(),
|
||||||
|
) {
|
||||||
|
Ok(v) => Some(v),
|
||||||
|
Err(_e) => None,
|
||||||
|
};
|
||||||
|
|
||||||
client
|
client
|
||||||
.create_multipart_upload()
|
.create_multipart_upload()
|
||||||
|
@ -366,6 +375,7 @@ impl S3Sink {
|
||||||
.set_content_type(content_type)
|
.set_content_type(content_type)
|
||||||
.set_content_disposition(content_disposition)
|
.set_content_disposition(content_disposition)
|
||||||
.set_metadata(metadata)
|
.set_metadata(metadata)
|
||||||
|
.set_server_side_encryption(server_side_encryption)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_abort_multipart_upload_request(
|
fn create_abort_multipart_upload_request(
|
||||||
|
@ -775,6 +785,10 @@ impl ObjectImpl for S3Sink {
|
||||||
.nick("content-disposition")
|
.nick("content-disposition")
|
||||||
.blurb("Content-Disposition header to set for uploaded object")
|
.blurb("Content-Disposition header to set for uploaded object")
|
||||||
.build(),
|
.build(),
|
||||||
|
glib::ParamSpecString::builder("server-side-encryption")
|
||||||
|
.nick("server-side-encryption")
|
||||||
|
.blurb("The S3 server side encryption algorithm to use (AES256 or aws:kms)")
|
||||||
|
.build(),
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -888,6 +902,11 @@ impl ObjectImpl for S3Sink {
|
||||||
.get::<Option<String>>()
|
.get::<Option<String>>()
|
||||||
.expect("type checked upstream");
|
.expect("type checked upstream");
|
||||||
}
|
}
|
||||||
|
"server-side-encryption" => {
|
||||||
|
settings.server_side_encryption = value
|
||||||
|
.get::<Option<String>>()
|
||||||
|
.expect("type checked upstream");
|
||||||
|
}
|
||||||
_ => unimplemented!(),
|
_ => unimplemented!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -929,6 +948,7 @@ impl ObjectImpl for S3Sink {
|
||||||
"endpoint-uri" => settings.endpoint_uri.to_value(),
|
"endpoint-uri" => settings.endpoint_uri.to_value(),
|
||||||
"content-type" => settings.content_type.to_value(),
|
"content-type" => settings.content_type.to_value(),
|
||||||
"content-disposition" => settings.content_disposition.to_value(),
|
"content-disposition" => settings.content_disposition.to_value(),
|
||||||
|
"server-side-encryption" => settings.server_side_encryption.to_value(),
|
||||||
_ => unimplemented!(),
|
_ => unimplemented!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue