use crate::get_request_stats;
use crate::photos::{
Photo, PhotoCuratedQuery, PhotoQueryResponse, PhotoResponse, PhotoSearchQuery, PhotosData,
};
use crate::{PexelsClient, PexelsResult};
impl PexelsClient {
pub async fn photo_search(&self, query: PhotoSearchQuery) -> PexelsResult<PhotoQueryResponse> {
let url = "https://api.pexels.com/v1/search";
let result = self.pexels_api_request(url, Some(query)).await?;
Ok(PhotoQueryResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<PhotosData>(result).await?,
})
}
pub async fn curated_photo(
&self,
query: PhotoCuratedQuery,
) -> PexelsResult<PhotoQueryResponse> {
let url = "https://api.pexels.com/v1/curated";
let result = self.pexels_api_request(url, Some(query)).await?;
Ok(PhotoQueryResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<PhotosData>(result).await?,
})
}
pub async fn photo(&self, id: usize) -> PexelsResult<PhotoResponse> {
let url = format!("https://api.pexels.com/v1/photos/{}", id);
let result = self
.pexels_api_request(&url, None::<PhotoSearchQuery>)
.await?;
Ok(PhotoResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<Photo>(result).await?,
})
}
}