#http-request #http-post #post-requests #web #http-parser #http

traq-bot-http

Library to parse POST requests of traQ BOT event

22 unstable releases (7 breaking)

0.11.2 Dec 24, 2024
0.10.2 Dec 7, 2024
0.10.1 Nov 9, 2024
0.9.0 Jul 9, 2024
0.4.0 Mar 11, 2023

#320 in HTTP server

Download history 122/week @ 2024-10-07 50/week @ 2024-10-14 12/week @ 2024-10-21 24/week @ 2024-10-28 91/week @ 2024-11-04 33/week @ 2024-11-11 13/week @ 2024-11-18 9/week @ 2024-11-25 236/week @ 2024-12-02 291/week @ 2024-12-09 23/week @ 2024-12-16 126/week @ 2024-12-23 12/week @ 2024-12-30 18/week @ 2025-01-06 3/week @ 2025-01-13 65/week @ 2025-01-20

104 downloads per month

MIT license

170KB
3K SLoC

traq-bot-http-rs

Rust codecov Release docs.rs

GitHub Crates.io GitHub release (with filter) Crates.io

traQ BOTのPOSTリクエストをパースするライブラリです。

example

Cargo.toml

# ...

[dependencies]
http = "1"
tower = "0.4"
axum = "0.7"
tokio = { version = "1", features = ["full"] }
traq-bot-http = { version = "0.11.2", features = ["tower"] }

main.rs

use std::{env, net::SocketAddr};

use axum::{routing::post_service, Router};
use http::StatusCode;
use tokio::net::TcpListener;
use tower::service_fn;

use traq_bot_http::{payloads, RequestParser};

#[tokio::main]
async fn main() {
    let verification_token = env::var("VERIFICATION_TOKEN").unwrap();
    let parser = RequestParser::new(&verification_token);
    let handler = parser
        .into_handler()
        .on_message_created(service_fn(on_message_created));
    let app = Router::new().route(
        "/",
        post_service(handler).handle_error(|_| async { StatusCode::INTERNAL_SERVER_ERROR }),
    );
    let addr = SocketAddr::from(([127, 0, 0, 1], 8080));
    let server = TcpListener::bind(addr).await.unwrap();
    axum::serve(server, app).await.unwrap();
}

async fn on_message_created(
    payload: payloads::MessageCreatedPayload,
) -> Result<(), std::convert::Infallible> {
    print!(
        "{}さんがメッセージを投稿しました。\n内容: {}\n",
        payload.message.user.display_name, payload.message.text
    );
    Ok(())
}

Features

feature 機能 バージョン
uuid ペイロードのUUID値がuuid::Uuid型に v0.4.0から
time ペイロードのタイムスタンプ値(RFC3339 format)がtime::OffsetDateTime型に v0.5.0から
chrono ペイロードのタイムスタンプ値がchrono::DateTime<chrono::Utc>型に v0.6.0から
http http::Request型のサポート v0.10.0から
tower Handler構造体 v0.10.1から

timeよりもchronoの方が優先されます

Supported Rust Version

現行の MSRV(Minimum Supported Rust Version) は 1.76.0 です。

将来的にMSRVは変更される可能性がありますが、minorバージョンの更新で導入されます。

Contributing

Issue, Pull Requestは大歓迎です。

Dependencies

~0.7–2.4MB
~48K SLoC