Skip to content
master
Go to file
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
ipp
 
 
 
 
 
 
 
 
 
 
 
 

README.md

ipp.rs

Asynchronous IPP protocol implementation for Rust

Documentation

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):

use ipp::prelude::*;

pub fn main() -> Result<(), Box<dyn std::error::Error>> {
    let args: Vec<_> = std::env::args().collect();

    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(())
}

License

Licensed under MIT or Apache license (LICENSE-MIT or LICENSE-APACHE)

About

IPP protocol implementation for Rust

Topics

Resources

Packages

No packages published

Languages

You can’t perform that action at this time.