use crate::collection::{
CollectionData, CollectionMediaData, CollectionMediaQuery, CollectionMediaResponse,
CollectionQueryResponse, FeaturedCollectionQuery, UserCollectionQuery,
};
use crate::common::get_request_stats;
use crate::{PexelsClient, PexelsResult};
impl PexelsClient {
pub async fn featured_collection(
&self,
query: FeaturedCollectionQuery,
) -> PexelsResult<CollectionQueryResponse> {
let url = "https://api.pexels.com/v1/collections/featured";
let result = self.pexels_api_request(url, Some(query)).await?;
Ok(CollectionQueryResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<CollectionData>(result).await?,
})
}
pub async fn user_collection(
&self,
query: UserCollectionQuery,
) -> PexelsResult<CollectionQueryResponse> {
let url = "https://api.pexels.com/v1/collections";
let result = self.pexels_api_request(url, Some(query)).await?;
Ok(CollectionQueryResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<CollectionData>(result).await?,
})
}
pub async fn collection_media(
&self,
query: CollectionMediaQuery,
) -> PexelsResult<CollectionMediaResponse> {
let url = format!("https://api.pexels.com/v1/collections/{}", query.id);
let result = self.pexels_api_request(&url, Some(query)).await?;
Ok(CollectionMediaResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<CollectionMediaData>(result).await?,
})
}
}