cargo updates

This commit is contained in:
Robin Appelman 2026-03-29 16:20:40 +02:00
commit bd689f3141
4 changed files with 580 additions and 471 deletions

1023
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
[package] [package]
name = "steam-resolve-vanity" name = "steam-resolve-vanity"
version = "0.4.0" version = "0.5.0"
authors = ["Robin Appelman <robin@icewind.nl>"] authors = ["Robin Appelman <robin@icewind.nl>"]
edition = "2018" edition = "2018"
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
@ -9,16 +9,11 @@ description = "Resolve steam vanity urls"
rust-version = "1.82.0" rust-version = "1.82.0"
[dependencies] [dependencies]
steamid-ng = "1.0.0" steamid-ng = "3.0.0"
reqwest = { version = "0.12.18", default-features = false, features = ["json"] } reqwest = { version = "0.13.2", features = ["json", "query"] }
serde = { version = "1.0.219", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] }
thiserror = "2.0.12" thiserror = "2.0.18"
[features]
default = ["default-tls"]
default-tls = ["reqwest/default-tls"]
rustls-tls = ["reqwest/rustls-tls"]
[dev-dependencies] [dev-dependencies]
dotenvy = "0.15.7" dotenvy = "0.15.7"
tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.50", features = ["macros", "rt-multi-thread"] }

View file

@ -1,5 +1,5 @@
use std::convert::TryFrom;
use std::env::args; use std::env::args;
use std::str::FromStr;
use steam_resolve_vanity::get_vanity_url; use steam_resolve_vanity::get_vanity_url;
use steamid_ng::SteamID; use steamid_ng::SteamID;
@ -9,7 +9,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let binary = args.next().unwrap(); // first argument is binary let binary = args.next().unwrap(); // first argument is binary
if let Some(steam_id) = args.next() { if let Some(steam_id) = args.next() {
if let Some(vanity) = get_vanity_url(SteamID::try_from(steam_id.as_str())?).await? { if let Some(vanity) = get_vanity_url(SteamID::from_str(steam_id.as_str())?).await? {
println!("{}", vanity); println!("{}", vanity);
} else { } else {
println!("No vanity found for steamid"); println!("No vanity found for steamid");

View file

@ -1,7 +1,9 @@
use reqwest::header::LOCATION; use reqwest::header::LOCATION;
use reqwest::redirect::Policy; use reqwest::redirect::Policy;
use reqwest::{Client, ClientBuilder, StatusCode}; use reqwest::{Client, ClientBuilder, StatusCode};
use serde::Deserialize; use serde::{Deserialize, Deserializer, de::Error as _};
use std::borrow::Cow;
use std::str::FromStr;
pub use steamid_ng::SteamID; pub use steamid_ng::SteamID;
use thiserror::Error; use thiserror::Error;
@ -12,11 +14,20 @@ struct SteamApiResponse {
#[derive(Deserialize)] #[derive(Deserialize)]
struct VanityUrlResponse { struct VanityUrlResponse {
#[serde(default)] #[serde(default, deserialize_with = "des_steam_id")]
steamid: Option<SteamID>, steamid: Option<SteamID>,
success: u8, success: u8,
} }
fn des_steam_id<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Option<SteamID>, D::Error> {
let opt_str = <Option<Cow<str>>>::deserialize(deserializer)?;
opt_str
.as_deref()
.map(SteamID::from_str)
.transpose()
.map_err(D::Error::custom)
}
#[derive(Debug, Error)] #[derive(Debug, Error)]
pub enum Error { pub enum Error {
#[error("Invalid api key")] #[error("Invalid api key")]
@ -24,7 +35,7 @@ pub enum Error {
#[error("Error while making request to steam api")] #[error("Error while making request to steam api")]
Request(#[from] reqwest::Error), Request(#[from] reqwest::Error),
#[error("Received malformed steam id")] #[error("Received malformed steam id")]
SteamId(#[from] steamid_ng::SteamIDError), SteamId(#[from] steamid_ng::SteamIDParseError),
} }
/// Resolve a steam vanity url to a steam id /// Resolve a steam vanity url to a steam id
@ -76,7 +87,7 @@ pub async fn get_vanity_url(steam_id: SteamID) -> Result<Option<String>, Error>
async fn test_valid() { async fn test_valid() {
let key = dotenvy::var("STEAM_API_KEY").unwrap(); let key = dotenvy::var("STEAM_API_KEY").unwrap();
assert_eq!( assert_eq!(
Some(SteamID::from(76561198024494988)), Some(SteamID::from_steam64(76561198024494988).unwrap()),
resolve_vanity_url("icewind1991", &key).await.unwrap() resolve_vanity_url("icewind1991", &key).await.unwrap()
) )
} }
@ -107,7 +118,7 @@ async fn test_not_found() {
async fn test_get_vanity() { async fn test_get_vanity() {
assert_eq!( assert_eq!(
Some("icewind1991".to_string()), Some("icewind1991".to_string()),
get_vanity_url(SteamID::from(76561198024494988)) get_vanity_url(SteamID::from_steam64(76561198024494988).unwrap())
.await .await
.unwrap() .unwrap()
) )
@ -118,7 +129,7 @@ async fn test_get_vanity() {
async fn test_get_vanity_not_found() { async fn test_get_vanity_not_found() {
assert_eq!( assert_eq!(
None, None,
get_vanity_url(SteamID::from(76561198024494987)) get_vanity_url(SteamID::from_steam64(76561198024494987).unwrap())
.await .await
.unwrap() .unwrap()
) )