Octocrate (Octocat + Crate)

A Github API library based on Rust

octocrate MIT

Install

Install Octocrate with cargo:

bash cargo install octocrate

Or modify your Cargo.toml to include octocrate as a dependency:

toml [dependencies] octocrate = "0.1.1"

Usage

Github API

```rust use octocrate::{GithubPersonalAccessToken, GithubAPI};

[tokio::main]

async fn main() { let token = GithubPersonalAccessToken::new("YOURPERSONALACCESS_TOKEN");

let api = GithubAPI::with_token(token);

let repositories = api
    .repositories
    .list_user_repositories("panghu-huang")
    .send()
    .await
    .unwrap();

println!("Repositories: {:#?}", repositories);

} ```

Github App

```rust use octocrate::{GithubApp};

[tokio::main]

async fn main() { let app = GithubApp::builder() .appid("GITHUBAPPID") .privatekey("GITHUBAPPPRIVATE_KEY") .build() .unwrap();

let installation = app .getrepositoryinstallation("panghu-huang", "octocrate") .await .unwrap();

let api = app.get_api(installation.id).await.unwrap();

let repository = api .repositories .get_repository("panghu-huang", "octocrate") .send() .await .unwrap();

println!("Repository: {:?}", repository); } ```

Github Webhook Server

Here's a simple example showing how to create a Github webhook server and handle the issue comment event. The webhook-server feature needs to be enabled

```rust use octocrate::{GithubApp, GithubWebhookEvent, WebhookServer};

[tokio::main]

async fn main() { let mut server = WebhookServer::builder() .appid("GITHUBAPPID") .privatekey("GITHUBAPPPRIVATE_KEY") .build() .unwrap();

server .onwebhookevent(|event, api| { match event { GithubWebhookEvent::IssueComment(evt) => { // ... handle issue comment event } _ => {} };

  Ok(())
})
.start()
.await
.unwrap();

} ```

The github_app.start() method opens a web server to listen for webhook requests from Github, the default path is /github/webhook

Examples

For more examples, please refer to: examples