6 个版本
使用旧的 Rust 2015
0.3.0 | 2017年4月26日 |
---|---|
0.2.2 | 2016年10月21日 |
0.1.1 | 2016年2月19日 |
#37 in #slack
27KB
669 行
commodore
调用等级并掌握 Rust 领导下的 Slack
Commodore 允许您通过 Slack 的 命令 API,使用 Rust 方便地扩展您的 Slack 体验。
安装
注意:此包依赖于 hyper 处理 http。您需要在您的
Cargo.toml
文件中包含以下内容。
[dependencies]
commodore = "0.3"
hyper = "0.10"
用法
extern crate commodore;
extern crate hyper;
use commodore::{Captures, Command, Mux, Responder, Response};
use hyper::Server;
use std::thread;
use std::time::Duration;
pub fn main() {
let mut mux = Mux::new();
mux.command("/commodore", "secrettoken", |c: &Command,
_: &Option<Captures>,
responder: Box<Responder>|
-> Option<Response> {
println!("handler recv cmd {:#?}", c);
thread::spawn(move || {
// simulate doing something important
thread::sleep(Duration::from_secs(3));
responder.respond(Response::ephemeral("some time later"));
});
Some(Response::ephemeral("got it"))
});
let svc = Server::http("0.0.0.0:4567")
.unwrap()
.handle(mux)
.unwrap();
println!("listening on {}", svc.socket);
}
响应
commodore 支持 Slack 响应结构的类型表示。为了方便创建这些实例,提供了构建器实例。
extern crate commodore;
use commodore::{Attachment, Field, Response};
fn main() {
let response = Response::builder()
.text("hallo")
.in_channel()
.attach(
Attachment::builder()
.text("attached")
.color("red")
.field(
Field {
title: "foo".to_owned(),
value: "value".to_owned(),
short: false
}
)
.build()
).build();
println!("{:#?}", response);
}
Doug Tangren (softprops) 2016-2017
依赖关系
~12–22MB
~370K SLoC