9 个版本
新版本 0.3.2 | 2024年8月21日 |
---|---|
0.3.1 | 2024年2月14日 |
0.2.2 | 2022年7月1日 |
0.2.1 | 2022年6月10日 |
0.1.2 | 2022年2月28日 |
1327 在 网络编程
134 每月下载量
89KB
2K SLoC
SIP2 Rust 库
Rust SIP2 客户端库
API 文档
https://kcls.github.io/evergreen-universe-rs/sip2/index.html
两种操作模式
连接API
- 支持完整的SIP2规范
- 允许对每个固定字段和字段值进行完全控制。
- 优雅地处理未知/自定义消息字段。
客户端API
- 位于连接API之上,并为常见任务提供预定义操作。
- 客户端方法允许调用者使用最少参数发送消息,而无需手动创建消息。
运行CLI
cargo run --bin sip2-client-cli -- --sip-user sip-user \
--sip-pass sip-pass \
--item-barcode 30000017113634 \
--patron-barcode 394902 \
--message-type item-information \
--message-type patron-status \
--message-type patron-information
连接API示例
连接API规范构建
use sip2::*;
let host = "localhost:6001";
let user = "sip-user";
let pass = "sip-pass";
let con = Connection::new(host).unwrap();
let req = Message::new(
&spec::M_LOGIN,
vec![
FixedField::new(&spec::FF_UID_ALGO, "0").unwrap(),
FixedField::new(&spec::FF_PWD_ALGO, "0").unwrap(),
],
vec![
Field::new(spec::F_LOGIN_UID.code, user),
Field::new(spec::F_LOGIN_PWD.code, pass),
]
).expect("Message Has Valid Content");
let resp = con.sendrecv(&req).unwrap();
println!("Received: {}", resp);
// Verify the response reports a successful login
if resp.spec().code == spec::M_LOGIN_RESP.code
&& resp.fixed_fields().len() == 1
&& resp.fixed_fields()[0].value() == "1" {
println!("Login OK");
} else {
println!("Login Failed");
}
连接API自由文本消息构建
let req = Message::from_values(
&spec::M_LOGIN,
&["0", "0"],
&[("CN", "sip-username"), ("CO", "sip-password")]
).expect("Message Has Valid Content");
客户端API示例
use sip2::*;
let host = "localhost:6001";
let user = "sip-user";
let pass = "sip-pass";
let mut client = Client::new(host).unwrap();
let params = ParamSet::new();
params.set_sip_user(user);
params.set_sip_pass(pass);
let resp = client.login(¶ms).unwrap();
prinln!("Received: {}", resp.msg());
match resp.ok() {
true => println!("Login OK"),
false => eprintln!("Login Failed"),
}
依赖项
~2MB
~23K SLoC