2 releases
0.1.1 | Aug 31, 2023 |
---|---|
0.1.0 | Apr 11, 2023 |
#10 in #github-webhook
248 downloads per month
11KB
269 lines
Octocrate (Octocat + Crate)
A Github API library based on Rust
Install
Install Octocrate
with cargo
:
cargo add octocrate
Or modify your Cargo.toml
to include octocrate
as a dependency:
[dependencies]
octocrate = "0.1.2"
Usage
Github API
use octocrate::{GithubPersonalAccessToken, GithubAPI};
#[tokio::main]
async fn main() {
let token = GithubPersonalAccessToken::new("YOUR_PERSONAL_ACCESS_TOKEN");
let api = GithubAPI::with_token(token);
let repositories = api
.repositories
.list_user_repositories("panghu-huang")
.send()
.await
.unwrap();
println!("Repositories: {:#?}", repositories);
}
Github App
use octocrate::{GithubApp};
#[tokio::main]
async fn main() {
let app = GithubApp::builder()
.app_id("GITHUB_APP_ID")
.private_key("GITHUB_APP_PRIVATE_KEY")
.build()
.unwrap();
let installation = app
.get_repository_installation("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
use octocrate::{GithubApp, GithubWebhookEvent, WebhookServer};
#[tokio::main]
async fn main() {
let mut server = WebhookServer::builder()
.app_id("GITHUB_APP_ID")
.private_key("GITHUB_APP_PRIVATE_KEY")
.build()
.unwrap();
server
.on_webhook_event(|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
Dependencies
~11–25MB
~468K SLoC