Struct octocrab::Octocrab

source ·
pub struct Octocrab { /* private fields */ }
Expand description

The GitHub API client.

Implementations§

source§

impl Octocrab

source

pub async fn authenticate_as_device<I, S>( &self, client_id: &SecretString, scope: I ) -> Result<DeviceCodes>
where I: IntoIterator<Item = S>, S: AsRef<str>,

Authenticate with Github’s device flow. This starts the process to obtain a new OAuth.

See https://docs.github.com/en/developers/apps/building-oauth-apps/authorizing-oauth-apps#device-flow for details.

Note: To authenticate against public Github, the Octocrab that calls this method must be constructed with base_uri: "https://github.com" and extra header “ACCEPT: application/json”. For example:

let crab = octocrab::Octocrab::builder()
.base_uri("https://github.com")?
.add_header(ACCEPT, "application/json".to_string())
.build()?;
source§

impl Octocrab

§Constructors

source

pub fn builder( ) -> OctocrabBuilder<NoSvc, DefaultOctocrabBuilderConfig, NoAuth, NotLayerReady>

Returns a new OctocrabBuilder.

source

pub fn installation(&self, id: InstallationId) -> Octocrab

Returns a new Octocrab based on the current builder but authorizing via a specific installation ID. Typically you will first construct an Octocrab using OctocrabBuilder::app to authenticate as your Github App, then obtain an installation ID, and then pass that here to obtain a new Octocrab with which you can make API calls with the permissions of that installation.

source

pub async fn installation_and_token( &self, id: InstallationId ) -> Result<(Octocrab, SecretString)>

Similar to installation, but also eagerly caches the installation token and returns the token. The returned token can be used to make https git requests to e.g. clone repositories that the installation has access to.

See also https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#http-based-git-access-by-an-installation

source§

impl Octocrab

§GitHub API Methods

source

pub fn actions(&self) -> ActionsHandler<'_>

Creates a new actions::ActionsHandler for accessing information from GitHub Actions.

source

pub fn current(&self) -> CurrentAuthHandler<'_>

Creates a current::CurrentAuthHandler that allows you to access information about the current authenticated user.

source

pub fn activity(&self) -> ActivityHandler<'_>

Creates a activity::ActivityHandler for the current authenticated user.

source

pub fn apps(&self) -> AppsRequestHandler<'_>

Creates a new apps::AppsRequestHandler for the currently authenticated app.

source

pub fn gitignore(&self) -> GitignoreHandler<'_>

Creates a gitignore::GitignoreHandler for accessing information about gitignore.

source

pub fn issues( &self, owner: impl Into<String>, repo: impl Into<String> ) -> IssueHandler<'_>

Creates a issues::IssueHandler for the repo specified at owner/repo, that allows you to access GitHub’s issues API.

source

pub fn commits( &self, owner: impl Into<String>, repo: impl Into<String> ) -> CommitHandler<'_>

Creates a commits::CommitHandler for the repo specified at owner/repo,

source

pub fn licenses(&self) -> LicenseHandler<'_>

source

pub fn markdown(&self) -> MarkdownHandler<'_>

source

pub fn orgs(&self, owner: impl Into<String>) -> OrgHandler<'_>

Creates an orgs::OrgHandler for the specified organization, that allows you to access GitHub’s organization API.

source

pub fn pulls( &self, owner: impl Into<String>, repo: impl Into<String> ) -> PullRequestHandler<'_>

Creates a pulls::PullRequestHandler for the repo specified at owner/repo, that allows you to access GitHub’s pull request API.

source

pub fn repos( &self, owner: impl Into<String>, repo: impl Into<String> ) -> RepoHandler<'_>

Creates a repos::RepoHandler for the repo specified at owner/repo, that allows you to access GitHub’s repository API.

source

pub fn projects(&self) -> ProjectHandler<'_>

Creates a projects::ProjectHandler that allows you to access GitHub’s projects API (classic).

source

pub fn search(&self) -> SearchHandler<'_>

Creates a search::SearchHandler that allows you to construct general queries to GitHub’s API.

source

pub fn teams(&self, owner: impl Into<String>) -> TeamHandler<'_>

Creates a teams::TeamHandler for the specified organization that allows you to access GitHub’s teams API.

source

pub fn users(&self, user: impl Into<String>) -> UserHandler<'_>

Creates a [users::UserHandler] for the specified user

source

pub fn workflows( &self, owner: impl Into<String>, repo: impl Into<String> ) -> WorkflowsHandler<'_>

Creates a workflows::WorkflowsHandler for the specified repository that allows you to access GitHub’s workflows API.

source

pub fn events(&self) -> EventsBuilder<'_>

Creates an events::EventsBuilder that allows you to access GitHub’s events API.

source

pub fn gists(&self) -> GistsHandler<'_>

Creates a gists::GistsHandler that allows you to access GitHub’s Gists API.

source

pub fn checks( &self, owner: impl Into<String>, repo: impl Into<String> ) -> ChecksHandler<'_>

Creates a checks::ChecksHandler that allows to access the Checks API.

source

pub fn ratelimit(&self) -> RateLimitHandler<'_>

Creates a ratelimit::RateLimitHandler that returns the API rate limit.

source§

impl Octocrab

§GraphQL API.

source

pub async fn graphql<R: FromResponse>( &self, payload: &(impl Serialize + ?Sized) ) -> Result<R>

Sends a graphql query to GitHub, and deserialises the response from JSON.

let response: serde_json::Value = octocrab::instance()
    .graphql(&serde_json::json!({ "query": "{ viewer { login }}" }))
    .await?;
source§

impl Octocrab

§HTTP Methods

A collection of different of HTTP methods to use with Octocrab’s configuration (Authenication, etc.). All of the HTTP methods (get, post, etc.) perform some amount of pre-processing such as making relative urls absolute, and post processing such as mapping any potential GitHub errors into Err() variants, and deserializing the response body.

This isn’t always ideal when working with GitHub’s API and as such there are additional methods available prefixed with _ (e.g. _get, _post, etc.) that perform no pre or post processing and directly return the http::Response struct.

source

pub async fn post<P: Serialize + ?Sized, R: FromResponse>( &self, route: impl AsRef<str>, body: Option<&P> ) -> Result<R>

Send a POST request to route with an optional body, returning the body of the response.

source

pub async fn _post<P: Serialize + ?Sized>( &self, uri: impl TryInto<Uri>, body: Option<&P> ) -> Result<Response<BoxBody<Bytes, Error>>>

Send a POST request with no additional pre/post-processing.

source

pub async fn get<R, A, P>(&self, route: A, parameters: Option<&P>) -> Result<R>
where A: AsRef<str>, P: Serialize + ?Sized, R: FromResponse,

Send a GET request to route with optional query parameters, returning the body of the response.

source

pub async fn _get( &self, uri: impl TryInto<Uri> ) -> Result<Response<BoxBody<Bytes, Error>>>

Send a GET request with no additional post-processing.

source

pub async fn body_to_string( &self, res: Response<BoxBody<Bytes, Error>> ) -> Result<String>

source

pub async fn get_with_headers<R, A, P>( &self, route: A, parameters: Option<&P>, headers: Option<HeaderMap> ) -> Result<R>
where A: AsRef<str>, P: Serialize + ?Sized, R: FromResponse,

Send a GET request to route with optional query parameters and headers, returning the body of the response.

source

pub async fn _get_with_headers( &self, uri: impl TryInto<Uri>, headers: Option<HeaderMap> ) -> Result<Response<BoxBody<Bytes, Error>>>

Send a GET request including option to set headers, with no additional post-processing.

source

pub async fn patch<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
where A: AsRef<str>, B: Serialize + ?Sized, R: FromResponse,

Send a PATCH request to route with optional query parameters, returning the body of the response.

source

pub async fn _patch<B: Serialize + ?Sized>( &self, uri: impl TryInto<Uri>, body: Option<&B> ) -> Result<Response<BoxBody<Bytes, Error>>>

Send a PATCH request with no additional post-processing.

source

pub async fn put<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
where A: AsRef<str>, B: Serialize + ?Sized, R: FromResponse,

Send a PUT request to route with optional query parameters, returning the body of the response.

source

pub async fn _put<B: Serialize + ?Sized>( &self, uri: impl TryInto<Uri>, body: Option<&B> ) -> Result<Response<BoxBody<Bytes, Error>>>

Send a PATCH request with no additional post-processing.

source

pub fn build_request<B: Serialize + ?Sized>( &self, builder: Builder, body: Option<&B> ) -> Result<Request<String>>

source

pub async fn delete<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
where A: AsRef<str>, B: Serialize + ?Sized, R: FromResponse,

Send a DELETE request to route with optional query body, returning the body of the response.

source

pub async fn _delete<B: Serialize + ?Sized>( &self, uri: impl TryInto<Uri>, body: Option<&B> ) -> Result<Response<BoxBody<Bytes, Error>>>

Send a DELETE request with no additional post-processing.

source

pub async fn send( &self, request: Request<String> ) -> Result<Response<BoxBody<Bytes, Error>>>

Send the given request to the underlying service

source

pub async fn execute( &self, request: Request<String> ) -> Result<Response<BoxBody<Bytes, Error>>>

Execute the given request using octocrab’s Client.

source

pub async fn follow_location_to_data( &self, response: Response<BoxBody<Bytes, Error>> ) -> Result<Response<BoxBody<Bytes, Error>>>

source§

impl Octocrab

§Utility Methods

source

pub async fn get_page<R: DeserializeOwned>( &self, uri: &Option<Uri> ) -> Result<Option<Page<R>>>

A convenience method to get a page of results (if present).

source

pub async fn all_pages<R: DeserializeOwned>( &self, page: Page<R> ) -> Result<Vec<R>>

A convenience method to get all the results starting at a given page.

Trait Implementations§

source§

impl Clone for Octocrab

source§

fn clone(&self) -> Octocrab

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Octocrab

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Octocrab

Defaults for Octocrab:

  • base_uri: https://api.github.com
  • auth: None
  • client: http client with the octocrab user agent.
source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> PolicyExt for T
where T: ?Sized,

source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more