use crate::common::get_request_stats;
use crate::videos::{
PopularVideoQuery, Video, VideoQueryResponse, VideoResponse, VideoSearchQuery, VideosData,
};
use crate::{PexelsClient, PexelsResult};
impl PexelsClient {
pub async fn video_search(&self, query: VideoSearchQuery) -> PexelsResult<VideoQueryResponse> {
let url = "https://api.pexels.com/videos/search";
let result = self.pexels_api_request(url, Some(query)).await?;
Ok(VideoQueryResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<VideosData>(result).await?,
})
}
pub async fn popular_videos(
&self,
query: PopularVideoQuery,
) -> PexelsResult<VideoQueryResponse> {
let url = "https://api.pexels.com/videos/popular";
let result = self.pexels_api_request(url, Some(query)).await?;
Ok(VideoQueryResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<VideosData>(result).await?,
})
}
pub async fn video(&self, id: usize) -> PexelsResult<VideoResponse> {
let url = format!("https://api.pexels.com/videos/videos/{}", id);
let result = self
.pexels_api_request(&url, None::<VideoSearchQuery>)
.await?;
Ok(VideoResponse {
stats: get_request_stats(&result)?,
data: Self::pexels_api_request_data::<Video>(result).await?,
})
}
}