Trait Provider

Source
pub trait Provider {
    type Project: DeserializeOwned + Project;
    type Error: DeserializeOwned + JsonError;

    // Required methods
    fn new(
        filter: Filter,
        secret_token: AuthToken,
        api_url_override: Option<Url>,
    ) -> Result<Self, Error>
       where Self: Sized;
    fn filter(&self) -> &Filter;
    fn secret_token(&self) -> &AuthToken;
    fn auth_header_key() -> &'static str;
    fn get_user_projects(
        &self,
        user: &User,
    ) -> Result<Vec<Self::Project>, ApiError<Self::Error>>;
    fn get_group_projects(
        &self,
        group: &Group,
    ) -> Result<Vec<Self::Project>, ApiError<Self::Error>>;
    fn get_accessible_projects(
        &self,
    ) -> Result<Vec<Self::Project>, ApiError<Self::Error>>;
    fn get_current_user(&self) -> Result<User, ApiError<Self::Error>>;

    // Provided methods
    fn get_own_projects(
        &self,
    ) -> Result<Vec<Self::Project>, ApiError<Self::Error>> { ... }
    fn call_list(
        &self,
        uri: &Url,
        accept_header: Option<&str>,
    ) -> Result<Vec<Self::Project>, ApiError<Self::Error>> { ... }
    fn get_repos(
        &self,
        worktree_setup: bool,
        force_ssh: bool,
        remote_name: Option<RemoteName>,
    ) -> Result<HashMap<Option<ProjectNamespace>, Vec<Repo>>, Error> { ... }
}

Required Associated Types§

Required Methods§

Source

fn new( filter: Filter, secret_token: AuthToken, api_url_override: Option<Url>, ) -> Result<Self, Error>
where Self: Sized,

Source

fn filter(&self) -> &Filter

Source

fn secret_token(&self) -> &AuthToken

Source

fn auth_header_key() -> &'static str

Source

fn get_user_projects( &self, user: &User, ) -> Result<Vec<Self::Project>, ApiError<Self::Error>>

Source

fn get_group_projects( &self, group: &Group, ) -> Result<Vec<Self::Project>, ApiError<Self::Error>>

Source

fn get_accessible_projects( &self, ) -> Result<Vec<Self::Project>, ApiError<Self::Error>>

Source

fn get_current_user(&self) -> Result<User, ApiError<Self::Error>>

Provided Methods§

Source

fn get_own_projects(&self) -> Result<Vec<Self::Project>, ApiError<Self::Error>>

Source

fn call_list( &self, uri: &Url, accept_header: Option<&str>, ) -> Result<Vec<Self::Project>, ApiError<Self::Error>>

Calls the API at specific uri and expects a successful response of Vec<T> back, or an error response U

Handles paging with “link” HTTP headers properly and reads all pages to the end.

Source

fn get_repos( &self, worktree_setup: bool, force_ssh: bool, remote_name: Option<RemoteName>, ) -> Result<HashMap<Option<ProjectNamespace>, Vec<Repo>>, Error>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§