5 releases

0.2.3 Nov 1, 2024
0.2.2 Aug 9, 2024
0.2.1 Aug 7, 2024
0.2.0 Aug 7, 2024
0.1.0 Aug 7, 2024

#971 in Web programming

Download history 305/week @ 2024-08-06 9/week @ 2024-08-13 13/week @ 2024-09-10 3/week @ 2024-09-17 11/week @ 2024-09-24 1/week @ 2024-10-01 125/week @ 2024-10-29 12/week @ 2024-11-05

137 downloads per month

MIT license

41KB
614 lines

Octoapp

GitHub Crates.io Version Crates.io Downloads (recent) GitHub Stars GitHub Issues Licence

Overview

Octoapp is a Rust library for building GitHub Apps. It provides a simple interface for creating GitHub Apps and handling webhook events.

✨ Features

  • Focus on simplicity and ease of use.
  • Built-in support for handling GitHub webhook events.
  • Uses octocrab for interacting with the GitHub API.
  • Supports rocket web framework for handling incoming webhook events.
    • feature: rocket

🚀 Quick Start

Run the following command to add octoapp to your project:

cargo add octoapp

🏃 Getting Started

use anyhow::Result;
use octoapp::prelude::*;

#[tokio::main]
async fn main() -> Result<()> {
    // [optional] Load .env file if it exists
    // dotenvy::dotenv().ok();

    // Load the configuration (from environment variables)
    // Or, you can set the configuration manually
    let config = OctoAppConfig::init()
        .app_name("My App")
        .app_id(12345)
        .client_id("client_id")
        .client_secret("client_secret")
        .webhook_secret("webhook_secret")
        .build()
        .expect("Failed to build OctoAppConfig");

    println!("{}", config);

    // Create a new Octocrab instance
    let octocrab = config.octocrab();

    if let Ok(client) = octocrab {
        let repos = client.issues("42ByteLabs", "octoapp")
            .list()
            .creator("GeekMasher")
            .send()
            .await?;
    }

    Ok(())
}

📚 Documentation

You can find the documentation for this project on docs.rs.

♥️ Maintainers / Contributors

🦸 Support

Please create GitHub Issues if there are bugs or feature requests.

This project uses Semantic Versioning (v2) and with major releases, breaking changes will occur.

📓 License

This project is licensed under the terms of the MIT open source license. Please refer to MIT for the full terms.

Dependencies

~12–45MB
~735K SLoC