pub struct SendClient {
pub(crate) client: Client,
}Fields§
§client: ClientImplementations§
Source§impl SendClient
impl SendClient
Sourcepub 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.
Sourcepub 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.
Source§impl SendClient
impl SendClient
fn new(client: Client) -> Self
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>
Source§impl SendClient
impl SendClient
pub(crate) fn get_repository( &self, ) -> Result<Arc<dyn Repository<Send>>, RepositoryError>
Source§impl SendClient
impl SendClient
Sourcepub async fn create(
&self,
request: SendAddRequest,
) -> Result<SendView, CreateSendError>
pub async fn create( &self, request: SendAddRequest, ) -> Result<SendView, CreateSendError>
Create a new Send and save it to the server.
Source§impl SendClient
impl SendClient
Sourcepub 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.
Sourcepub 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::Directuploads 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::AzurePUTs 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.
Sourceasync fn upload_send_file_direct(
&self,
send_id: SendId,
file_id: String,
encrypted_file_name: String,
data: Vec<u8>,
) -> Result<(), UploadSendFileError>
async fn upload_send_file_direct( &self, send_id: SendId, file_id: String, encrypted_file_name: String, data: Vec<u8>, ) -> Result<(), UploadSendFileError>
Direct upload: multipart POST of the encrypted bytes to the Bitwarden server.
Sourceasync fn upload_send_file_azure(
&self,
send_id: SendId,
file_id: String,
upload_url: String,
data: Vec<u8>,
) -> Result<(), UploadSendFileError>
async fn upload_send_file_azure( &self, send_id: SendId, file_id: String, upload_url: String, data: Vec<u8>, ) -> Result<(), UploadSendFileError>
Azure upload: PUT the encrypted bytes to the pre-signed blob upload_url, retrying once
with a freshly renewed URL if the first attempt fails (the pre-signed URL is short-lived).
Sourceasync fn put_azure_blob(
&self,
url: &str,
data: Vec<u8>,
) -> Result<(), UploadSendFileError>
async fn put_azure_blob( &self, url: &str, data: Vec<u8>, ) -> Result<(), UploadSendFileError>
Single-blob PUT to an Azure Blob Storage pre-signed URL.
Mirrors the TS client’s azureUploadBlob single-shot path (see
apps/libs/common/.../azure-file-upload.service.ts): the x-ms-blob-type: BlockBlob
header is required by Azure for a whole-blob PUT, and x-ms-version is taken from the SAS
URL’s sv query parameter when present. Send files are always well under the 256 MiB
single-blob limit, so the block-staging path is intentionally not reproduced.
Sourcepub 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.
Source§impl SendClient
impl SendClient
Source§impl SendClient
impl SendClient
Sourcepub async fn edit(
&self,
send_id: SendId,
request: SendEditRequest,
) -> Result<SendView, EditSendError>
pub async fn edit( &self, send_id: SendId, request: SendEditRequest, ) -> Result<SendView, EditSendError>
Edit the Send and save it to the server.
Source§impl SendClient
impl SendClient
Source§impl SendClient
impl SendClient
Sourcepub 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.
Trait Implementations§
Source§impl From<SendClient> for JsValue
impl From<SendClient> for JsValue
Source§fn from(value: SendClient) -> Self
fn from(value: SendClient) -> Self
Source§impl FromWasmAbi for SendClient
impl FromWasmAbi for SendClient
Source§impl IntoWasmAbi for SendClient
impl IntoWasmAbi for SendClient
Source§impl LongRefFromWasmAbi for SendClient
impl LongRefFromWasmAbi for SendClient
Source§impl OptionFromWasmAbi for SendClient
impl OptionFromWasmAbi for SendClient
Source§impl OptionIntoWasmAbi for SendClient
impl OptionIntoWasmAbi for SendClient
Source§impl RefFromWasmAbi for SendClient
impl RefFromWasmAbi for SendClient
Source§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.Source§impl RefMutFromWasmAbi for SendClient
impl RefMutFromWasmAbi for SendClient
Source§impl TryFromJsValue for SendClient
impl TryFromJsValue for SendClient
Source§impl VectorFromWasmAbi for SendClient
impl VectorFromWasmAbi for SendClient
type Abi = <Box<[JsValue]> as FromWasmAbi>::Abi
unsafe fn vector_from_abi(js: Self::Abi) -> Box<[SendClient]>
Source§impl VectorIntoWasmAbi for SendClient
impl VectorIntoWasmAbi for SendClient
type Abi = <Box<[JsValue]> as IntoWasmAbi>::Abi
fn vector_into_abi(vector: Box<[SendClient]>) -> Self::Abi
Source§impl WasmDescribe for SendClient
impl WasmDescribe for SendClient
Source§impl WasmDescribeVector for SendClient
impl WasmDescribeVector for SendClient
impl SupportsConstructor for SendClient
impl SupportsInstanceProperty for SendClient
impl SupportsStaticProperty for SendClient
Auto Trait Implementations§
impl Freeze for SendClient
impl !RefUnwindSafe for SendClient
impl Send for SendClient
impl Sync for SendClient
impl Unpin for SendClient
impl UnsafeUnpin for SendClient
impl !UnwindSafe 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<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>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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,
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.