apify_client/clients/
actor_collection.rs1use serde::Serialize;
4
5use crate::clients::base::{create_resource, list_resource, ResourceContext};
6use crate::common::{PaginationList, QueryParams};
7use crate::error::ApifyClientResult;
8use crate::http_client::HttpClient;
9use crate::models::Actor;
10
11#[derive(Debug, Default, Clone)]
13pub struct ActorListOptions {
14 pub offset: Option<i64>,
16 pub limit: Option<i64>,
18 pub desc: Option<bool>,
20 pub my: Option<bool>,
22 pub sort_by: Option<String>,
24}
25
26#[derive(Debug, Clone)]
28pub struct ActorCollectionClient {
29 ctx: ResourceContext,
30}
31
32impl ActorCollectionClient {
33 pub(crate) fn new(http: HttpClient, base_url: &str) -> Self {
34 Self {
35 ctx: ResourceContext::collection(http, base_url, "actors"),
36 }
37 }
38
39 pub async fn list(
43 &self,
44 options: ActorListOptions,
45 ) -> ApifyClientResult<PaginationList<Actor>> {
46 let mut params = QueryParams::new();
47 params
48 .add_int("offset", options.offset)
49 .add_int("limit", options.limit)
50 .add_bool("desc", options.desc)
51 .add_bool("my", options.my)
52 .add_str("sortBy", options.sort_by);
53 list_resource(&self.ctx, None, ¶ms).await
54 }
55
56 pub async fn create<T: Serialize>(&self, actor: &T) -> ApifyClientResult<Actor> {
60 create_resource(&self.ctx, &QueryParams::new(), actor).await
61 }
62}