| # libipp | |
| ## What is this? | |
| General C++ library for building and parsing IPP frames. IPP stands for Internet | |
| Printing Protocol and is defined in several documents. This implementation | |
| is based mainly on the following sources: | |
| * [RFC 8010](https://tools.ietf.org/html/rfc8010) | |
| * [RFC 8011](https://tools.ietf.org/html/rfc8011) | |
| * [IANA IPP registry](https://www.pwg.org/ipp/ipp-registrations.xml) | |
| * [CUPS Implementation of IPP](https://www.cups.org/doc/spec-ipp.html) | |
| ## How to use it? | |
| All required C++ classes, types and functions are declared in `ipp` namespace. | |
| IPP frames are sent/received as a payload of HTTP POST requests/responses. | |
| This library helps to build and parse raw IPP frames, | |
| but does not support the HTTP protocol. | |
| You have to use some other library to process HTTP packages, | |
| like *libbrillo* or *libcurl*. | |
| You can also dump a raw IPP frame to a file and send it from the command line | |
| with *curl*, e.g.: | |
| ```shell | |
| curl -X POST "http://my.server:631/mypath" --header "Content-Type: application/ipp" --data-binary @ipp.frame | |
| ``` | |
| Then obtained response can be read from the file and parsed by *libipp*. | |
| ## Documentation conventions | |
| In this documentation, the following typographical conventions are used: | |
| * **boldface** denotes entities defined in the IPP specifications (see the | |
| links mentioned above); | |
| * *italics* indicates a name of a library or a (shell) command; | |
| * `monospace` is used to mark entities from the source code. | |
| ## Link to documentation | |
| * [API specification](docs/api.md) |