3 个版本
使用旧 Rust 2015
0.1.2 | 2019年3月30日 |
---|---|
0.1.1 | 2019年3月30日 |
0.1.0 | 2019年3月14日 |
#4 in #pijul
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