use super::converters::GitLabProject;
use super::GitLabApi;
use crate::network::error;
use crate::network::get::{call, ApiEndpoint};
use crate::network::ForgeApi;
use url::Url;
struct ProjectsSearchEndpoint {
base_url: Url,
}
impl ApiEndpoint<Vec<GitLabProject>> for ProjectsSearchEndpoint {
fn url(&self) -> Url {
let mut url = self.base_url.join("projects").unwrap();
url.set_query(Some("order_by=updated_at&sort=desc&per_page=12"));
return url;
}
}
pub fn get_recent_repos(api: &GitLabApi) -> Result<Vec<GitLabProject>, error::Error> {
let base_url = api.base_url().clone();
let endpoint = ProjectsSearchEndpoint { base_url };
let mut projects = call(&endpoint)?;
projects.sort_by(|a, b| {
return b.updated_at.cmp(&a.updated_at);
});
return Ok(projects);
}