Struct SendClient
pub struct SendClient {
pub(crate) client: Client,
}Fields§
§client: ClientImplementations§
§impl SendClient
impl SendClient
pub async fn access_send(
&self,
access_token: String,
) -> Result<SendAccessResponse, AccessSendError>
pub async fn access_send( &self, access_token: String, ) -> Result<SendAccessResponse, AccessSendError>
Accesses a send, authenticated with a send access token. The returned [SendAccessResponse] contains encrypted fields that must be decrypted client-side using the key derived from the URL fragment.
pub async fn get_file_download_data(
&self,
access_token: String,
file_id: String,
) -> Result<SendFileDownloadData, GetFileDownloadDataError>
pub async fn get_file_download_data( &self, access_token: String, file_id: String, ) -> Result<SendFileDownloadData, GetFileDownloadDataError>
Gets file download data for a file send, authenticated with a send access token.
pub fn decrypt_send_access(
key_b64: String,
response: SendAccessResponse,
) -> Result<SendAccessView, SendAccessDecryptError>
pub fn decrypt_send_access( key_b64: String, response: SendAccessResponse, ) -> Result<SendAccessView, SendAccessDecryptError>
Decrypt a [SendAccessResponse] into a [SendAccessView].
key_b64 is the URL-safe-base64 send key from the trailing segment of the send URL
fragment (16 bytes when decoded) — the same form [SendAccessKey::from_url_b64] accepts
This is a temporary function to support the transition to fully using the SDK for Send logic
§impl SendClient
impl SendClient
pub fn decrypt_send(&self, send: Send) -> Result<SendView, SendDecryptError>
pub fn decrypt_send(&self, send: Send) -> Result<SendView, SendDecryptError>
Decrypt a [Send] into a [SendView].
This is a temporary function to support the transition to fully using the SDK for Send logic
§impl SendClient
impl SendClient
pub fn decrypt(&self, send: Send) -> Result<SendView, SendDecryptError>
pub fn decrypt_list( &self, sends: Vec<Send>, ) -> Result<Vec<SendListView>, SendDecryptError>
pub fn decrypt_file( &self, send: Send, encrypted_file_path: &Path, decrypted_file_path: &Path, ) -> Result<(), SendDecryptFileError>
pub fn decrypt_buffer( &self, send: Send, encrypted_buffer: &[u8], ) -> Result<Vec<u8>, SendDecryptError>
pub fn encrypt(&self, send_view: SendView) -> Result<Send, SendEncryptError>
pub fn encrypt_file( &self, send: Send, decrypted_file_path: &Path, encrypted_file_path: &Path, ) -> Result<(), SendEncryptFileError>
pub fn encrypt_buffer( &self, send: Send, buffer: &[u8], ) -> Result<Vec<u8>, SendEncryptError>
§impl SendClient
impl SendClient
§impl SendClient
impl SendClient
pub async fn create_file_send(
&self,
request: SendAddRequest,
file_buffer: Vec<u8>,
) -> Result<CreateFileSendResponse, CreateFileSendError>
pub async fn create_file_send( &self, request: SendAddRequest, file_buffer: Vec<u8>, ) -> Result<CreateFileSendResponse, CreateFileSendError>
Create a new file [Send] and save it to the server.
file_buffer is the plaintext file content. It is encrypted internally under the send key
derived for this send, and its ciphertext length is sent to the server as file_length so
the server can enforce storage quotas before the upload (matching the legacy client’s
encrypt-then-create ordering).
Returns the created send, the encrypted file bytes, and the metadata needed to upload them.
After calling this, hand [CreateFileSendResponse::encrypted_file_buffer] and the upload
metadata to SendClient::upload_send_file.
pub async fn upload_send_file(
&self,
send_id: SendId,
file_id: String,
encrypted_file_name: String,
file_upload_type: FileUploadType,
upload_url: String,
data: Vec<u8>,
) -> Result<(), UploadSendFileError>
pub async fn upload_send_file( &self, send_id: SendId, file_id: String, encrypted_file_name: String, file_upload_type: FileUploadType, upload_url: String, data: Vec<u8>, ) -> Result<(), UploadSendFileError>
Upload the encrypted file data for a file [Send].
data must be the encrypted file content (encrypted with the send key).
encrypted_file_name is the encrypted file name string from [CreateFileSendResponse].
file_upload_type and upload_url come from [CreateFileSendResponse] and select the
upload backend:
- [
FileUploadType::Direct] uploads directly to the Bitwarden server via a multipart POST. Theupload_urlis ignored in this case (the direct endpoint is derived from the send and file IDs). - [
FileUploadType::Azure]PUTs the ciphertext to the pre-signed Azure Blob Storageupload_url. If that URL has expired, it is renewed once viaSendClient::renew_file_upload_urland the upload is retried.
pub async fn renew_file_upload_url(
&self,
send_id: SendId,
file_id: String,
) -> Result<String, RenewFileUploadUrlError>
pub async fn renew_file_upload_url( &self, send_id: SendId, file_id: String, ) -> Result<String, RenewFileUploadUrlError>
Renew the upload URL for a file [Send].
Returns a fresh upload URL if the previous one has expired.
§impl SendClient
impl SendClient
pub async fn delete(&self, send_id: SendId) -> Result<(), DeleteSendError>
pub async fn delete(&self, send_id: SendId) -> Result<(), DeleteSendError>
Delete a [Send] from the server and remove it from local state.
pub async fn retry_pending_deletions(&self) -> Result<(), DeleteSendError>
pub async fn retry_pending_deletions(&self) -> Result<(), DeleteSendError>
Retry any [Send] deletions that previously failed (e.g. while offline), removing each from the pending queue once the server confirms it is gone.
§impl SendClient
impl SendClient
§impl SendClient
impl SendClient
§impl SendClient
impl SendClient
pub async fn remove_password(
&self,
send_id: SendId,
) -> Result<SendView, RemoveSendPasswordError>
pub async fn remove_password( &self, send_id: SendId, ) -> Result<SendView, RemoveSendPasswordError>
Remove the password from a [Send], saving the updated state to the server and local state.
§impl SendClient
impl SendClient
pub async fn fetch(&self, send_id: SendId) -> Result<Send, FetchSendError>
pub async fn fetch(&self, send_id: SendId) -> Result<Send, FetchSendError>
Fetch a single [Send] by its ID from the server and persist it to local state.
Unlike SendClient::get, which only reads from local state, this makes a network request
and refreshes the locally stored copy. Returns the still-encrypted [Send] — matching what a
sync-notification diff needs to compare revision_date and update encrypted state without
a decrypt round-trip — rather than a SendView; callers that want the
decrypted form can pass the result to SendClient::decrypt.
§impl SendClient
impl SendClient
pub async fn encrypt_send_for_rotation(
&self,
send_view: SendView,
new_key: B64,
) -> Result<Send, SendEncryptError>
pub async fn encrypt_send_for_rotation( &self, send_view: SendView, new_key: B64, ) -> Result<Send, SendEncryptError>
Encrypt a send with the provided key. This should only be used when rotating encryption keys in the Web client.
Until Typescript based key-rotation is removed after completing the rollout of sdk-based key-rotation, this method must be provided the new symmetric key in base64 format. See PM-23084
Trait Implementations§
§impl FromWasmAbi for SendClient
impl FromWasmAbi for SendClient
§impl IntoWasmAbi for SendClient
impl IntoWasmAbi for SendClient
§impl LongRefFromWasmAbi for SendClient
impl LongRefFromWasmAbi for SendClient
§type Anchor = RcRef<SendClient>
type Anchor = RcRef<SendClient>
RefFromWasmAbi::Anchor§unsafe fn long_ref_from_abi(
js: <SendClient as LongRefFromWasmAbi>::Abi,
) -> <SendClient as LongRefFromWasmAbi>::Anchor
unsafe fn long_ref_from_abi( js: <SendClient as LongRefFromWasmAbi>::Abi, ) -> <SendClient as LongRefFromWasmAbi>::Anchor
RefFromWasmAbi::ref_from_abi§impl OptionFromWasmAbi for SendClient
impl OptionFromWasmAbi for SendClient
§fn is_none(abi: &<SendClient as FromWasmAbi>::Abi) -> bool
fn is_none(abi: &<SendClient as FromWasmAbi>::Abi) -> bool
None, and otherwise it will be passed to
FromWasmAbi.§impl OptionIntoWasmAbi for SendClient
impl OptionIntoWasmAbi for SendClient
§fn none() -> <SendClient as IntoWasmAbi>::Abi
fn none() -> <SendClient as IntoWasmAbi>::Abi
None branch of this option. Read more§impl RefFromWasmAbi for SendClient
impl RefFromWasmAbi for SendClient
§type Anchor = RcRef<SendClient>
type Anchor = RcRef<SendClient>
Self for the duration of the
invocation of the function that has an &Self parameter. This is
required to ensure that the lifetimes don’t persist beyond one function
call, and so that they remain anonymous.§unsafe fn ref_from_abi(
js: <SendClient as RefFromWasmAbi>::Abi,
) -> <SendClient as RefFromWasmAbi>::Anchor
unsafe fn ref_from_abi( js: <SendClient as RefFromWasmAbi>::Abi, ) -> <SendClient as RefFromWasmAbi>::Anchor
§impl RefMutFromWasmAbi for SendClient
impl RefMutFromWasmAbi for SendClient
§type Anchor = RcRefMut<SendClient>
type Anchor = RcRefMut<SendClient>
RefFromWasmAbi::Anchor§unsafe fn ref_mut_from_abi(
js: <SendClient as RefMutFromWasmAbi>::Abi,
) -> <SendClient as RefMutFromWasmAbi>::Anchor
unsafe fn ref_mut_from_abi( js: <SendClient as RefMutFromWasmAbi>::Abi, ) -> <SendClient as RefMutFromWasmAbi>::Anchor
RefFromWasmAbi::ref_from_abi§impl TryFromJsValue for SendClient
impl TryFromJsValue for SendClient
§fn try_from_js_value(value: JsValue) -> Result<SendClient, JsValue>
fn try_from_js_value(value: JsValue) -> Result<SendClient, JsValue>
§fn try_from_js_value_ref(value: &JsValue) -> Option<SendClient>
fn try_from_js_value_ref(value: &JsValue) -> Option<SendClient>
§impl VectorFromWasmAbi for SendClient
impl VectorFromWasmAbi for SendClient
type Abi = <Box<[JsValue]> as FromWasmAbi>::Abi
unsafe fn vector_from_abi( js: <SendClient as VectorFromWasmAbi>::Abi, ) -> Box<[SendClient]>
§impl VectorIntoWasmAbi for SendClient
impl VectorIntoWasmAbi for SendClient
type Abi = <Box<[JsValue]> as IntoWasmAbi>::Abi
fn vector_into_abi( vector: Box<[SendClient]>, ) -> <SendClient as VectorIntoWasmAbi>::Abi
Auto Trait Implementations§
impl !RefUnwindSafe for SendClient
impl !UnwindSafe for SendClient
impl Freeze for SendClient
impl Send for SendClient
impl Sync for SendClient
impl Unpin for SendClient
impl UnsafeUnpin for SendClient
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
§unsafe fn clone_handle(handle: Handle) -> Handle
unsafe fn clone_handle(handle: Handle) -> Handle
§unsafe fn consume_handle(handle: Handle) -> Arc<T> ⓘ
unsafe fn consume_handle(handle: Handle) -> Arc<T> ⓘ
Arc<> Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
Source§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::AbiSource§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi, except that it may throw and never
return in the case of Err.