Skip to main content

GithubClient

Struct GithubClient 

Source
pub struct GithubClient { /* private fields */ }

Implementations§

Source§

impl GithubClient

Source

pub fn new(token: Option<String>) -> Result<Self, AppError>

Source

pub fn inner(&self) -> &Octocrab

Methods from Deref<Target = Octocrab>§

Source

pub async fn authenticate_as_device<I, S>( &self, client_id: &SecretBox<str>, scope: I, ) -> Result<DeviceCodes, Error>
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

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

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, SecretBox<str>), Error>

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

pub async fn installation_token(&self) -> Result<SecretBox<str>, Error>

Acquire a GitHub App installation access token that does not expire for at least 30 seconds. A cached token will be used if its expiration is far enough in the future. Otherwise, a new token will be acquired and cached.

Source

pub async fn installation_token_with_buffer( &self, buffer: TimeDelta, ) -> Result<SecretBox<str>, Error>

Acquire a GitHub App installation access token that does not expire for at least the duration specified by [buffer]. A cached token will be used if its expiration is far enough in the future. Otherwise, a new token will be acquired and cached.

Source

pub fn user_access_token<S>(&self, token: S) -> Result<Octocrab, Error>
where S: Into<SecretBox<str>>,

Returns a new Octocrab based on the current builder but authorizing via an access token.

See also https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app

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 issues_by_id(&self, id: impl Into<RepositoryId>) -> IssueHandler<'_>

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

Source

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

Creates a code_scannings::CodeScanningHandler for the repo specified at owner/repo, that allows you to access GitHub’s Code scanning API.

Source

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

Creates a code_scannings::CodeScanningHandler for the org specified at owner, that allows you to access GitHub’s Code scanning 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 repos_by_id(&self, id: impl Into<RepositoryId>) -> RepoHandler<'_>

Creates a repos::RepoHandler for the repo specified at repository ID, 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 using the user name

Source

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

Creates a users::UserHandler for the specified user using the user ID

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

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

Creates a hooks::HooksHandler that returns the API hooks

Source

pub fn assignments(&self) -> AssignmentsHandler<'_>

Creates a classroom::AssignmentsHandler providing the GitHub Classroom Assignments API

Source

pub fn classrooms(&self) -> ClassroomHandler<'_>

Creates a classroom::ClassroomHandler providing the GitHub Classroom Classrooms API

Source

pub fn codes_of_conduct(&self) -> CodesOfConductHandler<'_>

Creates a [codes_of_conduct::CodesOfConductHandler] providing the GitHub Codes of Codes of Conduct API

Source

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

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

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

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

Source

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

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, Error>
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>>, 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, Error>

Source

pub async fn get_with_headers<R, A, P>( &self, route: A, parameters: Option<&P>, headers: Option<HeaderMap>, ) -> Result<R, Error>
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>>, 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, Error>
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>( &self, uri: impl TryInto<Uri>, body: Option<&B>, ) -> Result<Response<BoxBody<Bytes, Error>>, Error>
where B: Serialize + ?Sized,

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, Error>
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>( &self, uri: impl TryInto<Uri>, body: Option<&B>, ) -> Result<Response<BoxBody<Bytes, Error>>, Error>
where B: Serialize + ?Sized,

Send a PUT request with no additional post-processing.

Source

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

Source

pub async fn delete<R, A, B>( &self, route: A, body: Option<&B>, ) -> Result<R, Error>
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>( &self, uri: impl TryInto<Uri>, body: Option<&B>, ) -> Result<Response<BoxBody<Bytes, Error>>, Error>
where B: Serialize + ?Sized,

Send a DELETE request with no additional post-processing.

Source

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

Send the given request to the underlying service

Source

pub async fn execute( &self, request: Request<impl Into<OctoBody>>, ) -> Result<Response<BoxBody<Bytes, Error>>, 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>>, Error>

Source

pub async fn download( &self, uri: impl TryInto<Uri>, content_type: impl TryInto<HeaderValue>, ) -> Result<Vec<u8>, Error>

Download a file from the given URL with the given content type

This is a convenience method that sets the Accept header to the given content type and downloads the file into a Vec<u8>.

Source

pub async fn download_zip( &self, uri: impl TryInto<Uri>, ) -> Result<Vec<u8>, Error>

Download a zip file from the given URL into a Vec<u8>.

Source

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

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

Source

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

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

Trait Implementations§

Source§

impl Deref for GithubClient

Source§

type Target = Octocrab

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
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, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
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, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

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

Source§

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>,

Source§

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, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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
Source§

impl<T> ThreadSafetyMarker for T