apify_client/clients/
actor_collection.rs1use serde::Serialize;
4
5use crate::clients::base::{create_resource, list_resource, ResourceContext};
6use crate::clients::pagination::{list_iterator, ListIterator};
7use crate::common::{PaginationList, QueryParams};
8use crate::error::ApifyClientResult;
9use crate::http_client::HttpClient;
10use crate::models::Actor;
11
12#[derive(Debug, Default, Clone)]
14pub struct ActorListOptions {
15 pub offset: Option<i64>,
17 pub limit: Option<i64>,
19 pub desc: Option<bool>,
21 pub my: Option<bool>,
23 pub sort_by: Option<String>,
25}
26
27#[derive(Debug, Clone)]
29pub struct ActorCollectionClient {
30 ctx: ResourceContext,
31}
32
33impl ActorCollectionClient {
34 pub(crate) fn new(http: HttpClient, base_url: &str) -> Self {
35 Self {
36 ctx: ResourceContext::collection(http, base_url, "actors"),
37 }
38 }
39
40 pub async fn list(
44 &self,
45 options: ActorListOptions,
46 ) -> ApifyClientResult<PaginationList<Actor>> {
47 let mut params = QueryParams::new();
48 params
49 .add_int("offset", options.offset)
50 .add_int("limit", options.limit)
51 .add_bool("desc", options.desc)
52 .add_bool("my", options.my)
53 .add_str("sortBy", options.sort_by);
54 list_resource(&self.ctx, None, ¶ms).await
55 }
56
57 pub fn iterate(&self, options: ActorListOptions) -> ListIterator<Actor> {
67 list_iterator!(self, options, list)
68 }
69
70 pub async fn create<T: Serialize>(&self, actor: &T) -> ApifyClientResult<Actor> {
74 create_resource(&self.ctx, &QueryParams::new(), actor).await
75 }
76}