[][src]Crate ipp

IPP print protocol implementation for Rust

Usage examples:

 // using raw API
 use ipp::prelude::*;

 fn main() -> Result<(), Box<dyn std::error::Error>> {
     let uri = "http://localhost:631/printers/test-printer";
     let req = IppRequestResponse::new(
         IppVersion::Ipp11,
         Operation::GetPrinterAttributes,
         Some(uri)
     );
     let client = IppClientBuilder::new(&uri).build();
     let resp = futures::executor::block_on(client.send_request(req))?;
     if resp.header().operation_status <= 2 {
         println!("result: {:?}", resp.attributes());
     }
     Ok(())
 }
 // using operations API
 use ipp::prelude::*;

 fn main() -> Result<(), Box<dyn std::error::Error>> {
     let operation = IppOperationBuilder::get_printer_attributes().build();
     let client = IppClientBuilder::new("http://localhost:631/printers/test-printer").build();
     let attrs = futures::executor::block_on(client.send(operation))?;
     for (_, v) in attrs.groups_of(DelimiterTag::PrinterAttributes)[0].attributes() {
         println!("{}: {}", v.name(), v.value());
     }
     Ok(())
 }

Modules

client
prelude
proto