pub trait UploadService<I> {
// Required methods
fn initiate_multipart_upload(
&self,
auth_: BearerToken,
upload_request: InitiateMultipartUploadRequest,
) -> Result<InitiateMultipartUploadResponse, Error>;
fn list_parts(
&self,
auth_: BearerToken,
upload_id: String,
key: String,
) -> Result<Vec<PartWithSize>, Error>;
fn sign_part(
&self,
auth_: BearerToken,
upload_id: String,
key: String,
part_number: i32,
) -> Result<SignPartResponse, Error>;
fn complete_multipart_upload(
&self,
auth_: BearerToken,
upload_id: String,
key: String,
parts: Vec<Part>,
) -> Result<CompleteMultipartUploadResponse, Error>;
fn abort_multipart_upload(
&self,
auth_: BearerToken,
upload_id: String,
key: String,
) -> Result<(), Error>;
fn sign_download(
&self,
auth_: BearerToken,
request: SignDownloadRequest,
) -> Result<SignDownloadResponse, Error>;
fn upload_file(
&self,
auth_: BearerToken,
file_name: String,
size_bytes: Option<SafeLong>,
workspace: Option<WorkspaceRid>,
body: I,
) -> Result<S3Path, Error>;
}Expand description
The Upload Service manages file uploads to object storage.
Required Methods§
Sourcefn initiate_multipart_upload(
&self,
auth_: BearerToken,
upload_request: InitiateMultipartUploadRequest,
) -> Result<InitiateMultipartUploadResponse, Error>
fn initiate_multipart_upload( &self, auth_: BearerToken, upload_request: InitiateMultipartUploadRequest, ) -> Result<InitiateMultipartUploadResponse, Error>
Initiates a multipart upload to object storage. Returns an uploadId that should be used with listParts, signPart, and completeMultipartUpload.
Sourcefn list_parts(
&self,
auth_: BearerToken,
upload_id: String,
key: String,
) -> Result<Vec<PartWithSize>, Error>
fn list_parts( &self, auth_: BearerToken, upload_id: String, key: String, ) -> Result<Vec<PartWithSize>, Error>
Lists the parts that have been uploaded for a given uploadId.
Sourcefn sign_part(
&self,
auth_: BearerToken,
upload_id: String,
key: String,
part_number: i32,
) -> Result<SignPartResponse, Error>
fn sign_part( &self, auth_: BearerToken, upload_id: String, key: String, part_number: i32, ) -> Result<SignPartResponse, Error>
Signs an upload request for a single part. Returns a URL that will execute the upload without further authentication.
Sourcefn complete_multipart_upload(
&self,
auth_: BearerToken,
upload_id: String,
key: String,
parts: Vec<Part>,
) -> Result<CompleteMultipartUploadResponse, Error>
fn complete_multipart_upload( &self, auth_: BearerToken, upload_id: String, key: String, parts: Vec<Part>, ) -> Result<CompleteMultipartUploadResponse, Error>
Completes a multipart upload to object storage. This should be called after all parts have been uploaded. Will throw EmptyMultipartUpload if there are 0 parts.
Sourcefn abort_multipart_upload(
&self,
auth_: BearerToken,
upload_id: String,
key: String,
) -> Result<(), Error>
fn abort_multipart_upload( &self, auth_: BearerToken, upload_id: String, key: String, ) -> Result<(), Error>
Aborts a multipart upload to S3. Frees storage used by previously uploaded parts and prevents further uploads to the same uploadId.
Sourcefn sign_download(
&self,
auth_: BearerToken,
request: SignDownloadRequest,
) -> Result<SignDownloadResponse, Error>
fn sign_download( &self, auth_: BearerToken, request: SignDownloadRequest, ) -> Result<SignDownloadResponse, Error>
Returns a short-lived signed GET URL for an object already in the uploads bucket. Use this to hand a freshly-uploaded object’s path to an external service (e.g. Dagger) without giving that service any Scout credentials. The caller must be authorized to read the workspace that owns the path (encoded as the first segment of the object key).
Sourcefn upload_file(
&self,
auth_: BearerToken,
file_name: String,
size_bytes: Option<SafeLong>,
workspace: Option<WorkspaceRid>,
body: I,
) -> Result<S3Path, Error>
fn upload_file( &self, auth_: BearerToken, file_name: String, size_bytes: Option<SafeLong>, workspace: Option<WorkspaceRid>, body: I, ) -> Result<S3Path, Error>
Uploads a file to S3. Intended for smaller files.