11 个版本

使用旧 Rust 2015

0.4.12 2018年5月18日
0.4.11 2018年5月18日
0.4.9 2017年11月24日
0.4.7 2017年10月28日
0.4.1 2017年3月30日

#1369 in Web programming

33 每月下载次数

MIT 许可证

130KB
3K SLoC

Rat

RAT - Rest Api 工具

Rat 是一个简单的命令行工具,帮助我自动化我喜欢的提供 REST API 的 Web 服务和软件产品的重复性任务。Rat 支持的所有命令的一般指南是它们应该只做一件事,最好只通过一个 HTTP 请求。这个指南遵循 UNIX 原则,即工具应该只做一件事,通过管道来实现复杂的行为。

Linux & OS X Build Status Windows Build status MIT licensed

目录

可用客户端

CenterDevice

rat centerdevice auth
rat centerdevice collections
rat centerdevice delete
rat centerdevice download
rat centerdevice refresh_token
rat centerdevice search
rat centerdevice status
rat centerdevice upload

Pocket

rat pocket auth
rat pocket list
rat pocket archive
rat pocket readd
rat pocket favorite
rat pocket unfavorite
rat pocket delete

Slack

rat slack auth

股票

rat stocks

安装

macOS

请使用 Homebrew 在您的系统上安装 rat。

brew install lukaspustina/os/rat

Ubuntu

请添加我的 [PackageCloud] 开源存储库,并通过 apt 安装 rat。

curl -s https://packagecloud.io/install/repositories/lukaspustina/opensource/script.deb.sh | sudo bash
sudo apt-get install rat

Windows

rat 通过 AppVeyor 在 Windows 上自动构建,以确保编译和运行良好,但当前不提供二进制文件。请从源代码编译。

从源代码

请通过 rustup 安装 Rust,然后运行

cargo install rat

用法

通用

有两种响应输出模式,即 JSON 和 HUMAN,以及三种消息级别,即 QUIET、NORMAL 和 VERBOSE。

在 HUMAN 输出模式下,尝试给出接收信息的简洁表示。在 json 输出模式下,rat 尝试将整个 json 响应传递给用户(如果有)。输出模式可以通过参数 --output <humen|json> 选择,例如 rat --output json ...

消息输出级别配置了在执行期间老鼠的嘈杂程度。静音级别仅将输出减少到实际响应,而正常级别则试图在请求的开始和结束时给用户一些反馈。详细级别更进一步,试图通知用户每个处理的步骤。可以通过参数--quiet--verbose选择消息级别。如果没有激活这些开关中的任何一个,则消息级别设置为正常。例如,rat --verbose ...选择详细消息级别。

CenterDevice

认证 rat

rat centerdevice auth并遵循指示。

刷新访问令牌

rat centerdevice refresh_token

搜索集合

  • 显示我的收藏夹:rat centerdevice collections

  • 显示我的以及公共收藏夹:rat centerdevice collections --public-collections

  • 搜索收藏夹:rat centerdevice collections <搜索过滤器>

  • 为其他命令缓存收藏夹名称:rat centerdevice collections --cache

下载文档

  • 使用原始文件名将文档下载到当前目录:rat centerdevice download excbd68a-c397-id46-9350-a4fd4022fe8c

  • 使用新文件名下载文档:rat centerdevice download excbd68a-c397-id46-9350-a4fd4022fe8c -f new_filename

搜索文档

  • 搜索具有文件名README.md、标记为文档以及一些全文的文档:rat centerdevice search -f README.md -t documentation -t rat "the Rest Api Tool"

  • 再次搜索,但现在使用jq后处理JSON响应:rat --output json --quiet centerdevice search -f README.md -t documentation "the Rest Api Tool" | jq .

  • 将搜索扩展到公共收藏夹:... --public-collections

上传文档

  • 使用标签上传文档:rat centerdevice upload README.md --t documentation --t rat

  • 将文档上传到收藏夹:rat centerdevice upload README.md --collection <收藏夹 ID>

  • 使用收藏夹缓存上传文档到收藏夹:rat centerdevice upload README.md --Collection <缓存收藏夹名称>

删除文档

rat centerdevice delete excbd68a-c397-id46-9350-a4fd4022fe8c

Pocket

认证

创建消费者密钥

创建一个新的应用,并将新创建的消费者密钥添加到您的rat配置文件中的[pocket]部分,格式如下:consumer_key = '<消费者密钥'

认证 rat

rat pocket auth,并按照指示操作。

存档 | 重新添加 | 收藏 | 取消收藏 | 删除

rat pocket archive|readd|favorite|unfavorite|delete<文章ID>...

在所有文章的标题和URL中搜索...

  • 关键词rust: rat pocket list rust

列出所有...

  • 未读文章: rat pocket list

  • 存档文章: rat pocket list --state archived

  • 文章: rat pocket list --state all

  • 带有Rust标签的未读文章: rat pocket list --tag Rust

  • 2周至1周内添加的未读文章: rat pocket list --since 2w --until 1w

  • 列出所有2周或更早前添加的未读文章ID,创建一个逗号分隔的列表:rat pocket list --until 2w --output id | paste -s -d . -

高级列表

  • 列出所有包含视频的未读文章:rat --output json --quiet pocket list | jq '.list | .[] | select(.has_video | test("1") ) | { id: .item_id, title: .resolved_title }'

  • 筛选标题和URL中包含Rust的文章,并创建以逗号分隔的id列表: rat -o json --quiet pocket list | jq -r '.list | .[] | { title: .given_title, id: .item_id, url: .given_url } | select((.title | test("Rust")) or (.url | test("Rust"))) | .id' | paste -s -d , -

Slack

认证

创建客户端 ID 和客户端密钥

创建一个新的应用,并将新创建的Client IDClient Secret添加到您的rat配置文件中[slack]部分,分别作为client_id = '<client id>'client_secret = '<client secret'

认证 rat

rat slack auth并遵循指示。

股票

从 comdirect 网页抓取当前股票价格

  • 按公司名称: rat stocks "Comdirect"

  • 按WKN: rat stocks 542800"


即将推出的客户端

rat feedly

rat elasticsearch browse
rat elasticsearch status -- curl -s http://<host>:9200/_cluster/health?level=shards
rat elasticsearch health -- curl -s http://<host>:9200/_cluster/health

rat slack channel list
rat slack user list
rat slack send <channel|user> <message>

rat bosun browse
rat bosun incidents show --open
rat bosun incidents ack|close --ids  <id>,<id> --message "Just because ..."
rat bosun show-silences
rat bosun silence show
rat bosun silence set

待办事项

  • 鼓掌

    • bash和zsh自动完成
  • 填写Cargo.toml

  • 错误链

  • 分发

    • Brew

    • Debian

  • 完成Pocket

  • 输出

    • 通用选项

    • 颜色:常规(黑色)、信息(蓝色)、警告(黄色)、错误(红色)

    • 向模块添加信息消息

    • 静音选项

    • 添加输出格式参数

    • 将输出格式应用于所有输出

  • Slack认证

  • CenterDevice认证

  • CenterDevice上传

    • 使用流
  • 使用包含我的补丁的checkout mime_multipart 0.5

  • 将centerdevice browse-status移动到status --browse

  • 通过--browser增强认证,该选项会打开浏览器窗口

  • 增强Pocket

    • 为搜索添加--since和--until参数

    • 选择人类输出字段:id、标题、url

    • 更新文档

  • 重构认证模块 - 参见分支

  • Slack:将HTTP调用移动到客户端模块

  • 用hyper替换curl

  • Pocket:将HTTP调用移动到客户端模块

  • 用可选搜索词的搜索替换Pocket列表和搜索

  • Travis

    • packagecloud.io

    • 在Cargo.toml和Readme中添加Travis徽章

  • 等待新的select版本发布,然后让Travis发布到crates.io

  • CenterDevice

    • 重构客户端库

    • 搜索集合

    • 上传到集合

    • 命名集合

    • 上传到命名集合

    • 删除文档

    • 令牌刷新/令牌过期时的错误消息

  • 在适当的位置使用弹性制表符输出

    • 使用pocket list -- 但不是在所有地方
  • 测试

  • 通过使用Foreign errors更好地使用error_chain

    • 通过使用Foreign errors

    • 通过使用 ensure!

  • Dockerize 运行,以获得更好的回溯

    docker run -v $PWD:/volume -w /volume -t clux/muslrust:nightly sh -c "cargo run"
    
  • 在 cargo nightly 工作正常后运行 Clippy 一次 -- cf. http://asquera.de/blog/2017-03-03/setting-up-a-rust-devenv/

  • 迁移到基于未来的客户端 -- cf. http://asquera.de/blog/2017-03-01/the-future-with-futures/

– 在第一个 1.0 版本发布之前

  • 文档

    • 将文档生成添加到 .travis
  • 清理 Readme;尤其是待办事项


参考资料

Pocket

Rust

Crates

致谢

依赖关系

~22–32MB
~524K SLoC