Skip to content

bellackn/steamr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

steamr 🦀

crates.io Documentation Apache-2 licensed CI

steamr is a simple Rust library to help you to interact with Valve's Steam API. It uses the reqwest crate under the hood.

This is a project to gather more hands-on Rust experience. Not all endpoints are implemented and you might find awkward code in here. However, things that are implemented should be quite stable.

Implemented Endpoints

Retrieving data from endpoints works via calling the respective SteamClient method. Check the examples in this README to see how it works.

Requirements

You need a valid API key to make full use of this library. Visit https://steamcommunity.com/dev/apikey to obtain yours.

Example

use steamr::client::SteamClient;
use steamr::errors::SteamError;

fn main() -> Result<(), SteamError> {
    // Create a new client that will be used to communicate with Steam's API.
    let api_key = String::from("your-api-key");
    let steam_client = SteamClient::from(api_key);

    // Get a list of all games from the user with the provided Steam ID (given that they are publicly visible)
    let steam_id = String::from("some-steam-id");
    let steam_lib = steam_client.get_library(&steam_id)?;

    // Print out the games that were played for more than an hour.
    steam_lib.games.iter()
        .filter(|g| g.playtime_forever > 60)
        .for_each(|g| println!("{}", g.name));

    Ok(())
}

There are some endpoints that don't require an API key. If you only need those, you can use SteamClient like so:

use steamr::client::SteamClient;
use steamr::errors::SteamError;

fn main() -> Result<(), SteamError> {
    // Create a new SteamClient without an API key
    let steam_client = SteamClient::new();

    // Get news for a game
    let app_id = "10";
    let news = steam_client.get_game_news(app_id, 5, 100)?;
    news.game_news.iter()
        .for_each(|n| println!("The article '{}' was written by '{}'", n.title, n.author));

    Ok(())
}