Crate ipp[−][src]
IPP print protocol implementation for Rust. This crate can be used in several ways:
- using the low-level request/response API and building the requests manually.
- using the higher-level operations API with builders. Currently only a subset of all IPP operations is supported.
- using the built-in IPP client based on
reqwest
crate. Requiresasync
feature. - using any third-party HTTP client and send the serialized request manually.
This crate supports both synchronous and asynchronous operations. Asynchronous API is selected
via async
feature and is enabled by default.
Implementation notes:
- all RFC IPP values are supported including arrays and collections, for both de- and serialization.
- this crate is also suitable for building IPP servers, however the example is not provided yet.
- some operations (e.g. CUPS-specific) require authorization which can be supplied in the printer URI.
Usage examples:
// using low-level API 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 req = IppRequestResponse::new( IppVersion::v1_1(), Operation::GetPrinterAttributes, Some(uri.clone()) ); let client = IppClient::new(uri); let resp = client.send(req).await?; if resp.header().status_code().is_success() { println!("{:?}", resp.attributes()); } Ok(()) }
// using operations API 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().status_code().is_success() { println!("{:?}", resp.attributes()); } Ok(()) }
Modules
attribute | Attribute-related structs |
builder | IPP operation builders |
client | IPP client |
model | Base IPP definitions and tags |
operation | High-level IPP operation abstractions |
parser | IPP stream parser |
payload | IPP payload |
prelude | Common imports |
reader | IPP reader |
request | IPP request |
util | IPP helper functions |
value | IPP value |
Structs
IppHeader | IPP request and response header |