4 个版本

0.2.2 2021 年 11 月 14 日
0.2.1 2021 年 11 月 14 日
0.2.0 2021 年 11 月 14 日
0.1.1 2021 年 11 月 13 日

#646#api-client

AGPL-3.0

89KB
2.5K SLoC

这是什么?

Supernova REST API 的客户端库。

用法

use iron_planet::{Supernova, RequestConfig};

fn main() {
    // Instantiate an unprivileged client
    let sn = Supernova::new();
    let conf = RequestConfig::default();
    // One can use it to query endpoints that require no auth
    let result = sn.get_buildings(&conf); // Will succeed, hopefully
    // But not to query endpoints that require user auth
    let result = sn.get_class_inst(123, &conf); // Will fail, hopefully
    // It is possible to enable authentication in two different ways
    // One can provide authentication credentials in the form of a user-pass
    // A successful login will return a result with the session token
    let token = sn.login("user", "pass").unwrap();
    sn.logout();
    // The second one is to provide an existing token
    sn.set_auth_token(token);
}

重要提示

  • 每个响应都会进行缓存,目前除了实例化一个新的客户端外,没有其他方法可以绕过缓存。
  • 在实例化时,可以通过调用 warmup() 来预先加载建筑物、课程、班级、部门和地点。这可能会以启动时的罚时(5 到 15 秒)为代价,加快后续访问。
  • 如果不希望加载所有这些内容,可以单独调用 get_[collection] 函数。
  • 大多数关系都通过绑定到客户端的特殊类型指针进行延迟加载。这些可以并发加载。
  • 是的,这个库 线程安全的。可能会实现异步端口,但到目前为止还没有。

依赖项

~3–4.5MB
~114K SLoC