traq-bot-http-rs

Rust codecov Release docs.rs

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

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

example

Cargo.toml

```toml

...

[dependencies] axum = "0.6" tokio = { version = "1.0", features = ["full"] } traq-bot-http = "0.6" ```

main.rs

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

use axum::{ body::Bytes, extract::State, http::{HeaderMap, StatusCode}, routing::post, Router, };

use traqbothttp::{Event, RequestParser};

[tokio::main]

async fn main() { let verificationtoken = env::var("VERIFICATIONTOKEN").unwrap(); let parser = RequestParser::new(&verificationtoken); let app = Router::new().route("/", post(handler)).withstate(parser); let addr = SocketAddr::from(([127, 0, 0, 1], 8080)); axum::Server::bind(&addr) .serve(app.intomakeservice()) .await .unwrap(); }

async fn handler( State(parser): State, headers: HeaderMap, body: Bytes, ) -> StatusCode { match parser.parse(headers, &body) { Ok(Event::MessageCreated(payload)) => { print!( "{}さんがメッセージを投稿しました。\n内容: {}\n", payload.message.user.displayname, payload.message.text ); StatusCode::NOCONTENT } Ok() => StatusCode::NOCONTENT, Err(err) => { eprintln!("ERROR: {err}"); StatusCode::INTERNALSERVERERROR } } } ```

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から

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

Contributing

Issue, Pull Requestは大歓迎です。