6 个版本

使用旧的 Rust 2015

0.3.0 2017年4月26日
0.2.2 2016年10月21日
0.1.1 2016年2月19日

#37 in #slack

MIT 许可证

27KB
669

commodore

Build Status Coverage Status Software License

调用等级并掌握 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