pub struct Octocrab { /* private fields */ }
Expand description
The GitHub API client.
Implementations§
Source§impl Octocrab
impl Octocrab
Sourcepub async fn authenticate_as_device<I, S>(
&self,
client_id: &SecretString,
scope: I,
) -> Result<DeviceCodes>
pub async fn authenticate_as_device<I, S>( &self, client_id: &SecretString, scope: I, ) -> Result<DeviceCodes>
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
impl Octocrab
§Constructors
Sourcepub fn builder() -> OctocrabBuilder<NoSvc, DefaultOctocrabBuilderConfig, NoAuth, NotLayerReady>
pub fn builder() -> OctocrabBuilder<NoSvc, DefaultOctocrabBuilderConfig, NoAuth, NotLayerReady>
Returns a new OctocrabBuilder
.
Sourcepub fn installation(&self, id: InstallationId) -> Result<Octocrab>
pub fn installation(&self, id: InstallationId) -> Result<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.
Sourcepub async fn installation_and_token(
&self,
id: InstallationId,
) -> Result<(Octocrab, SecretString)>
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
Sourcepub fn user_access_token<S: Into<SecretString>>(&self, token: S) -> Result<Self>
pub fn user_access_token<S: Into<SecretString>>(&self, token: S) -> Result<Self>
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§impl Octocrab
§GitHub API Methods
impl Octocrab
§GitHub API Methods
Sourcepub fn actions(&self) -> ActionsHandler<'_>
pub fn actions(&self) -> ActionsHandler<'_>
Creates a new actions::ActionsHandler
for accessing information from
GitHub Actions.
Sourcepub fn current(&self) -> CurrentAuthHandler<'_>
pub fn current(&self) -> CurrentAuthHandler<'_>
Creates a current::CurrentAuthHandler
that allows you to access
information about the current authenticated user.
Sourcepub fn activity(&self) -> ActivityHandler<'_>
pub fn activity(&self) -> ActivityHandler<'_>
Creates a activity::ActivityHandler
for the current authenticated user.
Sourcepub fn apps(&self) -> AppsRequestHandler<'_>
pub fn apps(&self) -> AppsRequestHandler<'_>
Creates a new apps::AppsRequestHandler
for the currently authenticated app.
Sourcepub fn gitignore(&self) -> GitignoreHandler<'_>
pub fn gitignore(&self) -> GitignoreHandler<'_>
Creates a gitignore::GitignoreHandler
for accessing information
about gitignore
.
Sourcepub fn issues(
&self,
owner: impl Into<String>,
repo: impl Into<String>,
) -> IssueHandler<'_>
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.
Sourcepub fn issues_by_id(&self, id: impl Into<RepositoryId>) -> IssueHandler<'_>
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.
Sourcepub fn code_scannings(
&self,
owner: impl Into<String>,
repo: impl Into<String>,
) -> CodeScanningHandler<'_>
pub fn code_scannings( &self, owner: impl Into<String>, repo: impl Into<String>, ) -> CodeScanningHandler<'_>
Creates a [code_scanning::CodeSCanningHandler
] for the repo specified at owner/repo
,
that allows you to access GitHub’s Code scanning API.
Sourcepub fn code_scannings_organisation(
&self,
owner: impl Into<String>,
) -> CodeScanningHandler<'_>
pub fn code_scannings_organisation( &self, owner: impl Into<String>, ) -> CodeScanningHandler<'_>
Creates a [code_scanning::CodeSCanningHandler
] for the org specified at owner
,
that allows you to access GitHub’s Code scanning API.
Sourcepub fn commits(
&self,
owner: impl Into<String>,
repo: impl Into<String>,
) -> CommitHandler<'_>
pub fn commits( &self, owner: impl Into<String>, repo: impl Into<String>, ) -> CommitHandler<'_>
Creates a commits::CommitHandler
for the repo specified at owner/repo
,
Sourcepub fn licenses(&self) -> LicenseHandler<'_>
pub fn licenses(&self) -> LicenseHandler<'_>
Creates a licenses::LicenseHandler
.
Sourcepub fn markdown(&self) -> MarkdownHandler<'_>
pub fn markdown(&self) -> MarkdownHandler<'_>
Creates a markdown::MarkdownHandler
.
Sourcepub fn orgs(&self, owner: impl Into<String>) -> OrgHandler<'_>
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.
Sourcepub fn pulls(
&self,
owner: impl Into<String>,
repo: impl Into<String>,
) -> PullRequestHandler<'_>
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.
Sourcepub fn repos(
&self,
owner: impl Into<String>,
repo: impl Into<String>,
) -> RepoHandler<'_>
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.
Sourcepub fn repos_by_id(&self, id: impl Into<RepositoryId>) -> RepoHandler<'_>
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.
Sourcepub fn projects(&self) -> ProjectHandler<'_>
pub fn projects(&self) -> ProjectHandler<'_>
Creates a projects::ProjectHandler
that allows you to access GitHub’s
projects API (classic).
Sourcepub fn search(&self) -> SearchHandler<'_>
pub fn search(&self) -> SearchHandler<'_>
Creates a search::SearchHandler
that allows you to construct general queries
to GitHub’s API.
Sourcepub fn teams(&self, owner: impl Into<String>) -> TeamHandler<'_>
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.
Sourcepub fn users(&self, user: impl Into<String>) -> UserHandler<'_>
pub fn users(&self, user: impl Into<String>) -> UserHandler<'_>
Creates a [users::UserHandler
] for the specified user using the user name
Sourcepub fn users_by_id(&self, user: impl Into<UserId>) -> UserHandler<'_>
pub fn users_by_id(&self, user: impl Into<UserId>) -> UserHandler<'_>
Creates a [users::UserHandler
] for the specified user using the user ID
Sourcepub fn workflows(
&self,
owner: impl Into<String>,
repo: impl Into<String>,
) -> WorkflowsHandler<'_>
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.
Sourcepub fn events(&self) -> EventsBuilder<'_>
pub fn events(&self) -> EventsBuilder<'_>
Creates an events::EventsBuilder
that allows you to access
GitHub’s events API.
Sourcepub fn gists(&self) -> GistsHandler<'_>
pub fn gists(&self) -> GistsHandler<'_>
Creates a gists::GistsHandler
that allows you to access
GitHub’s Gists API.
Sourcepub fn checks(
&self,
owner: impl Into<String>,
repo: impl Into<String>,
) -> ChecksHandler<'_>
pub fn checks( &self, owner: impl Into<String>, repo: impl Into<String>, ) -> ChecksHandler<'_>
Creates a checks::ChecksHandler
that allows to access the Checks API.
Sourcepub fn ratelimit(&self) -> RateLimitHandler<'_>
pub fn ratelimit(&self) -> RateLimitHandler<'_>
Creates a ratelimit::RateLimitHandler
that returns the API rate limit.
Sourcepub fn hooks(&self, owner: impl Into<String>) -> HooksHandler<'_>
pub fn hooks(&self, owner: impl Into<String>) -> HooksHandler<'_>
Creates a hooks::HooksHandler
that returns the API hooks
Source§impl Octocrab
§GraphQL API.
impl Octocrab
§GraphQL API.
Sourcepub async fn graphql<R: FromResponse>(
&self,
payload: &(impl Serialize + ?Sized),
) -> Result<R>
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.
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.
Sourcepub async fn post<P: Serialize + ?Sized, R: FromResponse>(
&self,
route: impl AsRef<str>,
body: Option<&P>,
) -> Result<R>
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.
Sourcepub async fn _post<P: Serialize + ?Sized>(
&self,
uri: impl TryInto<Uri>,
body: Option<&P>,
) -> Result<Response<BoxBody<Bytes, Error>>>
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.
Sourcepub async fn get<R, A, P>(&self, route: A, parameters: Option<&P>) -> Result<R>
pub async fn get<R, A, P>(&self, route: A, parameters: Option<&P>) -> Result<R>
Send a GET
request to route
with optional query parameters, returning
the body of the response.
Sourcepub async fn _get(
&self,
uri: impl TryInto<Uri>,
) -> Result<Response<BoxBody<Bytes, Error>>>
pub async fn _get( &self, uri: impl TryInto<Uri>, ) -> Result<Response<BoxBody<Bytes, Error>>>
Send a GET
request with no additional post-processing.
pub async fn body_to_string( &self, res: Response<BoxBody<Bytes, Error>>, ) -> Result<String>
Sourcepub async fn get_with_headers<R, A, P>(
&self,
route: A,
parameters: Option<&P>,
headers: Option<HeaderMap>,
) -> Result<R>
pub async fn get_with_headers<R, A, P>( &self, route: A, parameters: Option<&P>, headers: Option<HeaderMap>, ) -> Result<R>
Send a GET
request to route
with optional query parameters and headers, returning
the body of the response.
Sourcepub async fn _get_with_headers(
&self,
uri: impl TryInto<Uri>,
headers: Option<HeaderMap>,
) -> Result<Response<BoxBody<Bytes, Error>>>
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.
Sourcepub async fn patch<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
pub async fn patch<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
Send a PATCH
request to route
with optional query parameters,
returning the body of the response.
Sourcepub async fn _patch<B: Serialize + ?Sized>(
&self,
uri: impl TryInto<Uri>,
body: Option<&B>,
) -> Result<Response<BoxBody<Bytes, Error>>>
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.
Sourcepub async fn put<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
pub async fn put<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
Send a PUT
request to route
with optional query parameters,
returning the body of the response.
Sourcepub async fn _put<B: Serialize + ?Sized>(
&self,
uri: impl TryInto<Uri>,
body: Option<&B>,
) -> Result<Response<BoxBody<Bytes, Error>>>
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.
pub fn build_request<B: Serialize + ?Sized>( &self, builder: Builder, body: Option<&B>, ) -> Result<Request<OctoBody>>
Sourcepub async fn delete<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
pub async fn delete<R, A, B>(&self, route: A, body: Option<&B>) -> Result<R>
Send a DELETE
request to route
with optional query body,
returning the body of the response.
Sourcepub async fn _delete<B: Serialize + ?Sized>(
&self,
uri: impl TryInto<Uri>,
body: Option<&B>,
) -> Result<Response<BoxBody<Bytes, Error>>>
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.
Sourcepub async fn send(
&self,
request: Request<OctoBody>,
) -> Result<Response<BoxBody<Bytes, Error>>>
pub async fn send( &self, request: Request<OctoBody>, ) -> Result<Response<BoxBody<Bytes, Error>>>
Send the given request to the underlying service
Sourcepub async fn execute(
&self,
request: Request<impl Into<OctoBody>>,
) -> Result<Response<BoxBody<Bytes, Error>>>
pub async fn execute( &self, request: Request<impl Into<OctoBody>>, ) -> Result<Response<BoxBody<Bytes, Error>>>
Execute the given request
using octocrab’s Client.
pub async fn follow_location_to_data( &self, response: Response<BoxBody<Bytes, Error>>, ) -> Result<Response<BoxBody<Bytes, Error>>>
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Octocrab
impl !RefUnwindSafe for Octocrab
impl Send for Octocrab
impl Sync for Octocrab
impl Unpin for Octocrab
impl !UnwindSafe for Octocrab
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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