valorant_api_official 0.0.9

A library for interacting with the Official Valorant API.
Documentation
use serde::de::Error;
use serde::{Deserialize, Deserializer, Serializer};
use std::fmt::Display;
use time::OffsetDateTime;
use url::Url;

pub(crate) fn set_query_args<K: Display, V: Display>(
    url: &mut Url,
    query_args: impl Iterator<Item = (K, V)>,
) {
    //! Set the query arguments of a url
    //! # Arguments
    //! * `url` - The url
    //! * `query_args` - The query arguments
    //! # Example
    //! ```rust no_run
    //! let mut url = Url::parse("https://example.com").expect("Error while parsing url");
    //! let mut queries = HashMap::new();
    //! queries.insert(QueryArg::StartIndex, "0".to_string());
    //! queries.insert(QueryArg::EndIndex, "20".to_string());
    //! valorant_api_official::set_query_args(&mut url, queries);
    //! ```

    let mut args = url.query_pairs_mut();
    query_args.into_iter().for_each(|(key, value)| {
        args.append_pair(format!("{}", key).as_str(), format!("{}", value).as_str());
    });
}

pub(crate) fn de_milliseconds<'de, D>(deserializer: D) -> Result<OffsetDateTime, D::Error>
where
    D: Deserializer<'de>,
{
    let millis: i64 = Deserialize::deserialize(deserializer)?;
    OffsetDateTime::from_unix_timestamp(millis / 1000).map_err(Error::custom)
}

pub(crate) fn se_milliseconds<S>(x: &OffsetDateTime, s: S) -> Result<S::Ok, S::Error>
where
    S: Serializer,
{
    s.serialize_i64(x.unix_timestamp())
}