This library provides a Rust-y wrapper around the bodhi REST API.
bodhi is the web service for managing updates for fedora-based linux distributions. It provides a REST API for querying its database, and for creating new updates, comments, etc.
The library is structured like this:
BodhiService, which contains all information related to connecting to a remote bodhi instance
- a set of
*Querystructs and implementations, which wrap the REST API with a Rust-y API
- data type definitions, used for deserializing JSON responses with serde
The data type definitions used for deserializing the server JSON responses
are contained in the
data module. Some definitions are used only
internally (for example, for deserializing paginated results), and are not
publicly exported. They are located next to the
Query they are used for.
For convenience, some enumerated types that are just strings in the actual
REST API are wrapped as proper
enum types, and queries that return
paginated results are not exposed to users of this library, but handled
completely internally to return a union of all result pages.
Query modifiers can be called multiple times (methods
marked with plural names), and other filters are mutually exclusive and
should only be called once on a query (methods marked with singular name).
If a filter that only allows one argument is called more than once, the last
supplied argument will override arguments that were supplied to previous
To query a remote bodhi instance, first construct a
with the desired properties (server URL, request timeout, retry limit).
Then, construct the required queries, and run the query against the
BodhiService instance. In theory, this would let you run the same query
multiple times, possibly against different server instances or with
different connection settings:
let bodhi = bodhi::BodhiService::new(bodhi::FEDORA_BODHI_URL.to_string()); let package_query = bodhi::PackageQuery::new().name("rust".to_string()); let packages = package_query.query(&bodhi).unwrap();
This module contains the data types that are needed to deserialize bodhi server responses which are also public outside this crate. Some internal data types for queries are implemented in the corresponding query module.
This module contains all the REST API query wrappers that attempt to map the REST-y API to an idiomatic Rust API, using builder patterns to construct complex queries.
This module contains the structures and methods to interact with a (remote) bodhi server instance.