modio provides a set of building blocks for interacting with the mod.io API.
The client uses asynchronous I/O, backed by the futures and tokio crates, and requires both to be used alongside.
mod.io
mod.io is a drop-in modding solution from the founders of ModDB.com, that facilitates the upload, search, browsing, downloading and trading of mods in-game.
Usage
To use modio, execute cargo add modio.
Basic Setup
use env;
use Client;
async
Authentication
// Request a security code be sent to the email address.
client.request_code.await?;
// Wait for the 5-digit security code
let response = client.request_token.await?;
let token = response.data.await?;
// Create an endpoint with the new token
let client = client.with_token;
See full example.
Games
use *;
// List games with filter `name_id = "0ad"`
let response = client.get_games.filter.await?;
let list = response.data.await?;
Mods
use *;
// List all mods for 0 A.D.
let response = client.get_mods.await?;
let mods = response.data.await?;
// Get the details of the `balancing-mod` mod
let response = client.get_mod.await?;
let balancing_mod = response.data.await?;
Download
use ;
// Download the primary file of a mod.
let action = Primary ;
modio
.download
.save_to_file
.await?;
// Download the specific file of a mod.
let action = File ;
modio
.download
.save_to_file
.await?;
// Download the specific version of a mod.
// if multiple files are found then the latest file is downloaded.
// Set policy to `ResolvePolicy::Fail` to return with `modio::util::download::ErrorKind::MultipleFilesFound`
// as error kind.
let action = Version ;
let mut chunked = client.download.chunked.await?;
while let Some = chunked.data.await
Examples
See examples directory for some getting started examples.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.