#![doc = "Generated implementation of authenticated SDK resource facades."]
use spiral_contract::call::CallError;
use uuid::Uuid;
use crate::api::tasks::TasksClient;
use crate::api::tasks::objects::*;
use crate::auth::TokenSource;
use crate::http::HttpClient;
#[derive(Clone, Debug)]
pub struct AuthenticatedClient {
http: HttpClient,
client: TasksClient,
}
impl AuthenticatedClient {
pub fn new(base: &str) -> Result<Self, CallError<TasksError>> {
Self::from_http(HttpClient::connect(base).map_err(CallError::transport)?)
}
pub(crate) fn from_http(http: HttpClient) -> Result<Self, CallError<TasksError>> {
let client =
TasksClient::from_transport(http.base_url().as_str(), http.middleware_client())?;
Ok(Self { http, client })
}
pub fn with_client(mut self, client: reqwest::Client) -> Self {
self.http = self.http.with_client(client);
self.client = self.client.with_transport(self.http.middleware_client());
self
}
pub fn with_token_source(mut self, provider: TokenSource) -> Self {
self.http = self.http.with_token_source(provider);
self
}
pub async fn activate_worker_pool(
&self,
project_id: String,
worker_pool_id: Uuid,
) -> Result<WorkerPoolResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.activate_worker_pool_http(auth_header, project_id, worker_pool_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn cancel_project_task(
&self,
project_id: String,
task_id: Uuid,
) -> Result<Task, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.cancel_project_task_http(auth_header, project_id, task_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn cancel_task(&self, task_id: Uuid) -> Result<Task, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client.cancel_task_http(auth_header, task_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn claim_worker_task(
&self,
worker_session_id: Uuid,
task_id: Uuid,
) -> Result<PollTaskResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.claim_worker_task_http(auth_header, worker_session_id, task_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn create_task(
&self,
project_id: String,
request: CreateTaskRequest,
) -> Result<CreateTaskResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.create_task_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn create_trigger(
&self,
project_id: String,
request: TriggerDefinition,
) -> Result<TaskTrigger, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.create_trigger_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn create_worker_pool(
&self,
project_id: String,
request: CreateWorkerPoolRequest,
) -> Result<WorkerPoolResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.create_worker_pool_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn delete_trigger(
&self,
project_id: String,
trigger_id: Uuid,
) -> Result<(), CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.delete_trigger_http(auth_header, project_id, trigger_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn drain_worker(
&self,
worker_session_id: Uuid,
) -> Result<DrainWorkerResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.drain_worker_http(auth_header, worker_session_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn finish_worker_attempt(
&self,
worker_session_id: Uuid,
attempt_id: Uuid,
request: FinishAttemptRequest,
) -> Result<FinishAttemptResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client.finish_worker_attempt_http(
auth_header,
worker_session_id,
attempt_id,
request,
),
)
.await
.map_err(CallError::transport)?
}
pub async fn heartbeat_worker(
&self,
worker_session_id: Uuid,
request: HeartbeatWorkerRequest,
) -> Result<HeartbeatWorkerResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.heartbeat_worker_http(auth_header, worker_session_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn list_task_specs(
&self,
project_id: String,
) -> Result<ListTaskSpecsResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client.list_task_specs_http(auth_header, project_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn list_tasks(
&self,
project_id: String,
request: ListTasksRequest,
) -> Result<ListTasksResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.list_tasks_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub fn list_tasks_list(
&self,
project_id: String,
request: ListTasksRequest,
) -> crate::List<'_, Task> {
let options = crate::pagination::PageOptions {
token: request.page_token.clone(),
size: request.page_size,
};
crate::List::new(move |options| {
let project_id = ToOwned::to_owned(&project_id);
let mut request = request.clone();
request.page_token = options.token;
request.page_size = options.size;
Box::pin(async move {
let page = self.list_tasks(project_id, request).await?;
Ok(crate::Page {
items: page.tasks,
next_page_token: page.next_page_token,
})
})
})
.with_options(options)
}
pub async fn list_trigger_invocations(
&self,
project_id: String,
trigger_id: Uuid,
request: InvocationPageRequest,
) -> Result<InvocationPage, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.list_trigger_invocations_http(auth_header, project_id, trigger_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn list_triggers(
&self,
project_id: String,
request: TriggerPageRequest,
) -> Result<TriggerPage, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.list_triggers_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn list_worker_attempts(
&self,
project_id: String,
worker_session_id: Uuid,
request: ListWorkerAttemptsRequest,
) -> Result<ListWorkerAttemptsResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client.list_worker_attempts_http(
auth_header,
project_id,
worker_session_id,
request,
),
)
.await
.map_err(CallError::transport)?
}
pub fn list_worker_attempts_list(
&self,
project_id: String,
worker_session_id: Uuid,
request: ListWorkerAttemptsRequest,
) -> crate::List<'_, WorkerAttempt> {
let options = crate::pagination::PageOptions {
token: request.page_token.clone(),
size: request.page_size,
};
crate::List::new(move |options| {
let project_id = ToOwned::to_owned(&project_id);
let worker_session_id = ToOwned::to_owned(&worker_session_id);
let mut request = request.clone();
request.page_token = options.token;
request.page_size = options.size;
Box::pin(async move {
let page = self
.list_worker_attempts(project_id, worker_session_id, request)
.await?;
Ok(crate::Page {
items: page.attempts,
next_page_token: page.next_page_token,
})
})
})
.with_options(options)
}
pub async fn list_worker_pools(
&self,
project_id: String,
request: ListWorkerPoolsRequest,
) -> Result<ListWorkerPoolsResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.list_worker_pools_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub fn list_worker_pools_list(
&self,
project_id: String,
request: ListWorkerPoolsRequest,
) -> crate::List<'_, WorkerPool> {
let options = crate::pagination::PageOptions {
token: request.page_token.clone(),
size: request.page_size,
};
crate::List::new(move |options| {
let project_id = ToOwned::to_owned(&project_id);
let mut request = request.clone();
request.page_token = options.token;
request.page_size = options.size;
Box::pin(async move {
let page = self.list_worker_pools(project_id, request).await?;
Ok(crate::Page {
items: page.worker_pools,
next_page_token: page.next_page_token,
})
})
})
.with_options(options)
}
pub async fn list_worker_sessions(
&self,
project_id: String,
request: ListWorkerSessionsRequest,
) -> Result<ListWorkerSessionsResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.list_worker_sessions_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub fn list_worker_sessions_list(
&self,
project_id: String,
request: ListWorkerSessionsRequest,
) -> crate::List<'_, WorkerSession> {
let options = crate::pagination::PageOptions {
token: request.page_token.clone(),
size: request.page_size,
};
crate::List::new(move |options| {
let project_id = ToOwned::to_owned(&project_id);
let mut request = request.clone();
request.page_token = options.token;
request.page_size = options.size;
Box::pin(async move {
let page = self.list_worker_sessions(project_id, request).await?;
Ok(crate::Page {
items: page.worker_sessions,
next_page_token: page.next_page_token,
})
})
})
.with_options(options)
}
pub async fn pause_worker_pool(
&self,
project_id: String,
worker_pool_id: Uuid,
) -> Result<WorkerPoolResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.pause_worker_pool_http(auth_header, project_id, worker_pool_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn poll_worker(
&self,
worker_session_id: Uuid,
) -> Result<PollTaskResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client.poll_worker_http(auth_header, worker_session_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn read_project_task(
&self,
project_id: String,
task_id: Uuid,
) -> Result<TaskDetails, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.read_project_task_http(auth_header, project_id, task_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn read_resource_usage(
&self,
project_id: String,
worker_session_id: Uuid,
request: ResourceUsageRequest,
) -> Result<ResourceUsageHistory, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client.read_resource_usage_http(
auth_header,
project_id,
worker_session_id,
request,
),
)
.await
.map_err(CallError::transport)?
}
pub async fn read_task(&self, task_id: Uuid) -> Result<TaskDetails, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client.read_task_http(auth_header, task_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn read_task_stats(
&self,
project_id: String,
request: TaskStatsRequest,
) -> Result<TaskStats, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.read_task_stats_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn read_trigger(
&self,
project_id: String,
trigger_id: Uuid,
) -> Result<TaskTrigger, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.read_trigger_http(auth_header, project_id, trigger_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn read_worker_pool(
&self,
project_id: String,
worker_pool_id: Uuid,
) -> Result<WorkerPoolDetails, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.read_worker_pool_http(auth_header, project_id, worker_pool_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn read_worker_session(
&self,
project_id: String,
worker_session_id: Uuid,
) -> Result<WorkerSession, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.read_worker_session_http(auth_header, project_id, worker_session_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn register_worker(
&self,
request: RegisterWorkerRequest,
) -> Result<RegisterWorkerResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client.register_worker_http(auth_header, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn retire_worker_pool(
&self,
project_id: String,
worker_pool_id: Uuid,
) -> Result<WorkerPoolResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.retire_worker_pool_http(auth_header, project_id, worker_pool_id),
)
.await
.map_err(CallError::transport)?
}
pub async fn run_trigger(
&self,
project_id: String,
trigger_id: Uuid,
request: RunTriggerRequest,
) -> Result<TriggerInvocation, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.run_trigger_http(auth_header, project_id, trigger_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn submit_task(
&self,
project_id: String,
request: SubmitTaskRequest,
) -> Result<CreateTaskResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.submit_task_http(auth_header, project_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn test_trigger(
&self,
project_id: String,
trigger_id: Uuid,
request: TestTriggerRequest,
) -> Result<TestTriggerResponse, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.test_trigger_http(auth_header, project_id, trigger_id, request),
)
.await
.map_err(CallError::transport)?
}
pub async fn update_trigger(
&self,
project_id: String,
trigger_id: Uuid,
request: UpdateTriggerRequest,
) -> Result<TaskTrigger, CallError<TasksError>> {
let auth_header = self
.http
.auth_header()
.await
.map_err(CallError::transport)?;
tokio::time::timeout(
std::time::Duration::from_secs(10),
self.client
.update_trigger_http(auth_header, project_id, trigger_id, request),
)
.await
.map_err(CallError::transport)?
}
}