pub mod error;
mod get;
pub mod responses;
use std::fmt::Debug;
use strum_macros::{Display, EnumIter, EnumString};
use url::Url;
pub mod forgejo;
pub mod gitlab;
#[derive(Clone, Copy, Debug, Display, EnumIter, EnumString, PartialEq)]
#[strum(ascii_case_insensitive)] pub enum ForgeApiKind {
Forgejo,
Gitea,
GitLab,
}
pub trait ForgeApi
where
Self: Sync + Send,
{
fn kind(&self) -> ForgeApiKind;
fn base_url(&self) -> &Url;
fn get_branches(
&self,
username: &str,
repo_name: &str,
) -> Result<Vec<responses::Branch>, error::Error>;
fn get_file_tree(
&self,
username: &str,
repo_name: &str,
) -> Result<Vec<responses::RepoContents>, error::Error>;
fn get_recent_repos(&self) -> Result<Vec<responses::Repo>, error::Error>;
fn get_repo(&self, username: &str, repo_name: &str) -> Result<responses::Repo, error::Error>;
fn get_user_repos(&self, username: &str) -> Result<Vec<responses::Repo>, error::Error>;
fn get_users(&self) -> Result<Vec<responses::User>, error::Error>;
fn get_version(&self) -> Result<responses::ServerVersion, error::Error>;
}