use serde::Serialize;
use crate::clients::base::{create_resource, list_resource, ResourceContext};
use crate::common::{PaginationList, QueryParams};
use crate::error::ApifyClientResult;
use crate::http_client::HttpClient;
use crate::models::Actor;
#[derive(Debug, Default, Clone)]
pub struct ActorListOptions {
pub offset: Option<i64>,
pub limit: Option<i64>,
pub desc: Option<bool>,
pub my: Option<bool>,
pub sort_by: Option<String>,
}
#[derive(Debug, Clone)]
pub struct ActorCollectionClient {
ctx: ResourceContext,
}
impl ActorCollectionClient {
pub(crate) fn new(http: HttpClient, base_url: &str) -> Self {
Self {
ctx: ResourceContext::collection(http, base_url, "actors"),
}
}
pub async fn list(
&self,
options: ActorListOptions,
) -> ApifyClientResult<PaginationList<Actor>> {
let mut params = QueryParams::new();
params
.add_int("offset", options.offset)
.add_int("limit", options.limit)
.add_bool("desc", options.desc)
.add_bool("my", options.my)
.add_str("sortBy", options.sort_by);
list_resource(&self.ctx, None, ¶ms).await
}
pub async fn create<T: Serialize>(&self, actor: &T) -> ApifyClientResult<Actor> {
create_resource(&self.ctx, &QueryParams::new(), actor).await
}
}