Skip to main content

apify_client/clients/
actor_version_collection.rs

1//! Client for an Actor's version collection (`/v2/actors/{actorId}/versions`).
2
3use serde::Serialize;
4
5use crate::clients::base::{create_resource, list_resource, ResourceContext};
6use crate::common::{ListOptions, PaginationList, QueryParams};
7use crate::error::ApifyClientResult;
8use crate::http_client::HttpClient;
9use crate::models::ActorVersion;
10
11/// Client for listing and creating Actor versions.
12#[derive(Debug, Clone)]
13pub struct ActorVersionCollectionClient {
14    ctx: ResourceContext,
15}
16
17impl ActorVersionCollectionClient {
18    pub(crate) fn new(http: HttpClient, base_url: &str) -> Self {
19        Self {
20            ctx: ResourceContext::collection(http, base_url, "versions"),
21        }
22    }
23
24    /// Lists the Actor's versions.
25    pub async fn list(
26        &self,
27        options: ListOptions,
28    ) -> ApifyClientResult<PaginationList<ActorVersion>> {
29        let mut params = QueryParams::new();
30        params
31            .add_int("offset", options.offset)
32            .add_int("limit", options.limit)
33            .add_bool("desc", options.desc);
34        list_resource(&self.ctx, None, &params).await
35    }
36
37    /// Creates a new Actor version.
38    pub async fn create<T: Serialize>(&self, version: &T) -> ApifyClientResult<ActorVersion> {
39        create_resource(&self.ctx, &QueryParams::new(), version).await
40    }
41}