ipp.rs
IPP protocol implementation for Rust.
This crate implements IPP protocol as defined in RFC 8010, RFC 8011.
It supports both synchronous and asynchronous operations (requests and responses) which is controlled by the async feature flag.
By default this feature is enabled, it is also required for the IPP client to send the requests to the printer.
Documentation
Usage example:
use ipp::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let uri: Uri = "http://localhost:631/printers/test-printer".parse()?;
let operation = IppOperationBuilder::get_printer_attributes(uri.clone()).build();
let client = IppClient::new(uri);
let resp = client.send(operation).await?;
if resp.header().get_status_code().is_success() {
for (_, v) in resp.attributes().groups_of(DelimiterTag::PrinterAttributes).next().unwrap().attributes() {
println!("{}: {}", v.name(), v.value());
}
}
Ok(())
}
For more usage examples please check the examples folder.
License
Licensed under MIT or Apache license (LICENSE-MIT or LICENSE-APACHE)