#webhook #hook #com #pijul #nest #hyper #handle

pijul-hooks

处理来自 nest.pijul.com 的 webhooks 的工具

3 个版本

使用旧 Rust 2015

0.1.2 2019年3月30日
0.1.1 2019年3月30日
0.1.0 2019年3月14日

#4 in #pijul

MIT/Apache

8KB
117

Pijul Nest 的 Hooks

此包可用于编写能够接收来自 nest.pijul.com 请求的 Web 服务器。它负责所有必要的认证和解析。

以下是一个客户端和服务器示例

extern crate futures;
use futures::Future;
use pijul_hooks::*;
tokio::run(futures::lazy(move || {
    let secret = "ce sera notre petit secret";
    let port = 9812;
    let addr = ([127, 0, 0, 1], port).into();
    let make_service = move || {
        hyper::service::service_fn(move |req| {
            parse_request(req, &secret).map(|hook| {
                hook.unwrap();
                let ok = hyper::Body::from("Ok");
                hyper::Response::new(ok)
            })
        })
    };
    let (tx, rx) = futures::sync::oneshot::channel::<()>();
    let server = hyper::Server::bind(&addr).serve(make_service);
    hyper::rt::spawn(server.with_graceful_shutdown(rx).map_err(|e| {
        eprintln!("server error: {}", e);
    }));
    (Hook {
        url: format!("http://!127.0.0.1:{}/", port).parse().unwrap(),
        secret: secret.to_string(),
    })
    .run(&HookContent::Discussion {
        repository_owner: "owner".to_string(),
        repository_name: "name".to_string(),
        discussion_number: 1234,
        title: "title".to_string(),
        author: "author".to_string(),
    })
    .map_err(|e| eprintln!("error: {:?}", e))
    .map(|_| tx.send(()).unwrap())
}))

依赖项

~21MB
~463K SLoC