Crate ipp[−][src]
Expand description
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-related structs
IPP operation builders
IPP client
Base IPP definitions and tags
High-level IPP operation abstractions
IPP stream parser
IPP payload
Common imports
IPP reader
IPP request
IPP helper functions
IPP value
Structs
IPP request and response header