Skip to main content

Crate cloudconvert_sdk

Crate cloudconvert_sdk 

Source
Expand description

Async Rust SDK primitives for the CloudConvert API v2.

This crate exposes typed request and response models for CloudConvert jobs and tasks, plus a CloudConvertClient for calling the API from async Rust applications. Operation-specific drift is handled through option(...) builder methods, extra maps, and TaskRequest::custom.

§Build jobs

Use JobCreateRequest::linear when each task feeds into the next task.

use cloudconvert_sdk::{FileExtension, JobCreateRequest};

let request = JobCreateRequest::linear()
    .import_url("https://example.test/input.docx")
    .convert(FileExtension::Pdf)
    .export_url()
    .build();

let payload = serde_json::to_value(request).unwrap();
assert_eq!(payload["tasks"]["import-url"]["operation"], "import/url");
assert_eq!(payload["tasks"]["convert"]["input"], "import-url");
assert_eq!(payload["tasks"]["export-url"]["input"], "convert");

Use *_with(...) methods to configure task-specific options while keeping a serial pipeline.

use cloudconvert_sdk::{FileExtension, JobCreateRequest};

let request = JobCreateRequest::linear()
    .import_url_with("https://example.test/input.docx", |task| {
        task.filename("input.docx")
    })
    .convert_with(FileExtension::Pdf, |task| {
        task.input_format(FileExtension::Docx)
    })
    .export_url()
    .build();

let payload = serde_json::to_value(request).unwrap();
assert_eq!(payload["tasks"]["import-url"]["filename"], "input.docx");
assert_eq!(payload["tasks"]["convert"]["input_format"], "docx");

Use JobCreateRequest::graph when a job branches, joins multiple inputs, or needs to reference a non-adjacent task.

use cloudconvert_sdk::{FileExtension, JobCreateRequest};

let request = JobCreateRequest::graph(|job| {
    let import = job.import_url("https://example.test/input.docx");
    let pdf = job.convert(&import, FileExtension::Pdf);
    let png = job.convert(&import, FileExtension::Png);
    job.export_url([&pdf, &png]);
})
.build();

let payload = serde_json::to_value(request).unwrap();
assert_eq!(payload["tasks"]["convert"]["input"], "import-url");
assert_eq!(payload["tasks"]["convert-2"]["input"], "import-url");
assert_eq!(
    payload["tasks"]["export-url"]["input"],
    serde_json::json!(["convert", "convert-2"])
);

§Call the API

Live API calls need a CloudConvert API key. ApiKey::from_env() reads CLOUDCONVERT_API_KEY.

use cloudconvert_sdk::{ApiKey, CloudConvertClient, FileExtension, JobCreateRequest};

let client = CloudConvertClient::builder(ApiKey::from_env()?).build()?;
let request = JobCreateRequest::linear()
    .import_url("https://example.test/input.docx")
    .convert(FileExtension::Pdf)
    .export_url()
    .build();

let job = client.jobs().create(request).await?;
let finished = client.jobs().wait(&job.id).await?;
for file in finished.export_urls() {
    if let Some(url) = &file.url {
        let bytes = client.download(url).await?;
        println!("downloaded {} bytes as {}", bytes.len(), file.filename);
    }
}

Structs§

ApiError
ApiKey
ApiResponse
A non-paginated API response that preserves envelope metadata.
ArchiveTask
AzureBlobExportTask
AzureBlobImportTask
Base64ImportTask
CaptureWebsiteTask
ClientBuilder
CloudConvertClient
CloudConvertConfig
CommandTask
ConvertTask
ExportUploadTask
ExportUrlTask
FileResult
GenericTask
Builder for a custom CloudConvert task operation.
GoogleCloudStorageExportTask
GoogleCloudStorageImportTask
ImportUploadTask
ImportUrlTask
Job
JobBuilder
Builder for serial JobCreateRequest pipelines.
JobCreateRequest
Request body for POST /v2/jobs.
JobGetQuery
JobGraphBuilder
Builder for branched CloudConvert job graphs.
JobListQuery
JobTask
JobsResource
MergeTask
MetadataTask
MetadataWriteTask
OAuthAccessToken
OAuthClient
OAuthClientSecret
OAuthRefreshToken
OAuthTokenResponse
OpenStackExportTask
OpenStackImportTask
Operation
OperationEngineVersion
OperationListQuery
OperationOption
OperationValidationError
OperationsResource
OptimizeTask
Page
A paginated API response.
PaginationLinks
Pagination links returned by CloudConvert list endpoints.
PaginationMeta
Pagination metadata returned by CloudConvert list endpoints.
ParseFileExtensionError
Error returned when parsing a string into FileExtension fails.
PdfATask
PdfDecryptTask
PdfEncryptTask
PdfExtractPagesTask
PdfOcrTask
PdfRotatePagesTask
PdfSplitPagesTask
PdfXTask
RateLimit
Rate limit information extracted from CloudConvert response headers.
RawImportTask
S3ExportTask
S3ImportTask
SftpExportTask
SftpImportTask
SigningSecret
SocketSubscription
Task
TaskGetQuery
TaskListQuery
TaskName
Name assigned to a task in a CloudConvert job request.
TaskRequest
Serialized task request used by job and standalone task APIs.
TaskResult
TasksResource
ThumbnailTask
TransportConfig
UploadForm
User
UsersResource
WatermarkTask
Webhook
WebhookCreateRequest
WebhookListQuery
WebhooksResource

Enums§

Error
FileExtension
Supported CloudConvert file extension tokens.
FontAlign
Input
Input dependency for a CloudConvert task.
JobSocketEvent
JobStatus
Layer
OAuthScope
OperationOptionKind
OperationValidationErrorKind
OperationValidationMode
PositionHorizontal
PositionVertical
Region
SocketChannel
SocketEventKind
TaskSocketEvent
TaskStatus
WebhookEvent

Traits§

TaskPayload
Sealed trait implemented by SDK-owned typed task builders.

Functions§

sign_job_url
sign_payload
socket_base_url
verify_signature

Type Aliases§

ExtraOptions
OperationValidationResult
Result