use super::ForgejoApi;
use crate::network::get::{call, ApiEndpoint};
use crate::network::ForgeApi;
use crate::network::{error, responses::User, responses::UsersSearch};
use url::Url;
struct UsersSearchEndpoint {
base_url: Url,
}
impl ApiEndpoint<UsersSearch> for UsersSearchEndpoint {
fn url(&self) -> Url {
return self.base_url.join("users/search").unwrap();
}
}
pub fn get_users(api: &ForgejoApi) -> Result<Vec<User>, error::Error> {
let base_url = api.base_url().clone();
let endpoint = UsersSearchEndpoint { base_url };
let users_json = call(&endpoint)?;
let mut users: Vec<User> = users_json.data;
users.sort_by(|a, b| {
return a.login.to_lowercase().cmp(&b.login.to_lowercase());
});
return Ok(users);
}