This project contains work-in-progress rust bindings for the pagure API as documented at https://pagure.io/api/0/.
Every query implements the common Query
trait, which can be treated like a
generic template. Add the missing return type definitions for serde
and
implement the trait methods, and you're done - everything else is handled by the
default method implementations in the Query
trait or in the PagureClient
that wraps a reqwest::blocking::Client
with the necessary settings.
API query URLs contain both a "path" element and optional query strings - the
path element is simply filled in as a string, and the query string is
deserialized to x-www-form-urlencoded
format from the query struct with
serde_url_params
.
The returned JSON responses are deserialized into native data types with
serde_json
(if necessary, with internal wrapper types if the API returns extra
information alongside the result, i.e. pagination or request metadata).
For now, there are only some basic tests for the implemented queries, which
all require an internet connection. Once there are both "offline" and "online"
tests, they will be split into two groups with features, and only offline tests
will be enabled by default (similar to how this is handled in the bodhi-rs
project).