ipp - Rust (original) (raw)

Expand description

IPP print protocol implementation for Rust. This crate can be used in several ways:

This crate supports both synchronous and asynchronous operations. The following feature flags are supported:

By default, the following feature is enabled: async-client-tls.

Implementation notes:

Usage examples:

 // using low-level async 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 = AsyncIppClient::new(uri);
     let resp = client.send(req).await?;
     if resp.header().status_code().is_success() {
         println!("{:?}", resp.attributes());
     }
     Ok(())
 }
 // using blocking operations API
 use ipp::prelude::*;

 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)?;
     if resp.header().status_code().is_success() {
         println!("{:?}", resp.attributes());
     }
     Ok(())
 }

attribute

Attribute-related structs

client

IPP client

error

IPP error

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

IppHeader

IPP request and response header