| Crates.io | sip2 |
| lib.rs | sip2 |
| version | 0.3.4 |
| created_at | 2022-02-25 15:33:36.743161+00 |
| updated_at | 2025-02-20 15:39:56.277202+00 |
| description | SIP2 Library |
| homepage | |
| repository | https://github.com/kcls/evergreen-universe-rs |
| max_upload_size | |
| id | 539488 |
| size | 104,655 |
Rust SIP2 Communication Library
use sip2::{Connection, Message};
fn main() {
// Connect to our SIP server
let mut con = Connection::new("127.0.0.1:6001").expect("should connect");
// Manually create a login message with SIP username and password fields.
let req = Message::from_values(
"93",
&["0", "0"],
&[("CN", "sip-user"), ("CO", "sip-pass")]
).expect("should be valid message content");
// Send the message and wait for a response.
let resp = con.sendrecv(&req).expect("should receive a response");
println!("resp: {resp:?}");
// A successful login returns a first fixed field value of "1".
if let Some(ff) = resp.fixed_fields().first() {
if ff.value() == "1" {
println!("Login succeeded");
}
}
}
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
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");
}
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"),
}