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<String>,
    ) -> Result<Self, String>
       where Self: Sized;
    fn filter(&self) -> &Filter;
    fn secret_token(&self) -> &AuthToken;
    fn auth_header_key() -> &'static str;
    fn get_user_projects(
        &self,
        user: &str,
    ) -> Result<Vec<Self::Project>, ApiErrorResponse<Self::Error>>;
    fn get_group_projects(
        &self,
        group: &str,
    ) -> Result<Vec<Self::Project>, ApiErrorResponse<Self::Error>>;
    fn get_accessible_projects(
        &self,
    ) -> Result<Vec<Self::Project>, ApiErrorResponse<Self::Error>>;
    fn get_current_user(&self) -> Result<String, ApiErrorResponse<Self::Error>>;

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

Required Associated Types§

Required Methods§

Source

fn new( filter: Filter, secret_token: AuthToken, api_url_override: Option<String>, ) -> Result<Self, String>
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: &str, ) -> Result<Vec<Self::Project>, ApiErrorResponse<Self::Error>>

Source

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

Source

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

Source

fn get_current_user(&self) -> Result<String, ApiErrorResponse<Self::Error>>

Provided Methods§

Source

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

Source

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

Calls the API at specific uri and expects a successful response of Vec 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<String>, ) -> Result<HashMap<Option<String>, Vec<Repo>>, String>

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§