Asynchronous IPP protocol implementation for Rust
This crate implements IPP protocol as defined in RFC 8010, RFC 8011.
Transport support can be selected by feature options: client-isahc
or client-reqwest
.
The default client is isahc
.
Note: for the reqwest
client a runtime is needed such as tokio
and default-features = false
flag.
Usage example (no runtime, simple future blocking):
```rust use ipp::prelude::*;
pub fn main() -> Result<(), Box
if args.len() < 2 {
println!("Usage: {} uri [attrs]", args[0]);
} else {
let uri: Uri = args[1].parse()?;
let client = IppClient::new(uri.clone());
let operation = IppOperationBuilder::get_printer_attributes(uri)
.attributes(&args[2..])
.build();
let attrs = futures::executor::block_on(client.send(operation))?;
for v in attrs.groups_of(DelimiterTag::PrinterAttributes)
.next()
.unwrap()
.attributes()
.values()
{
println!("{}: {}", v.name(), v.value());
}
}
Ok(())
} ```
Licensed under MIT or Apache license (LICENSE-MIT or LICENSE-APACHE)