eversal-esi 0.1.0

Eve Online's ESI API library for Rust and Eversal projects
Documentation
use std::collections::HashMap;

use crate::{
  get_authenticated, get_public, get_public_paged,
  model::market::{MarketHistory, MarketOrder, MarketOrderType},
  EsiResult, Paged,
};

pub async fn get_market_structure(
  access_token: &str,
  structure_id: i64,
) -> Result<Vec<MarketOrder>, reqwest::Error> {
  get_authenticated::<Vec<MarketOrder>>(
    access_token,
    &format!("markets/structures/{}", structure_id),
    None,
  )
  .await
}

pub async fn get_market_orders(
  region_id: i32,
  order_type: &MarketOrderType,
  page: Option<i32>,
  type_id: Option<i32>,
) -> EsiResult<Paged<Vec<MarketOrder>>> {
  let mut params: HashMap<&str, String> = vec![("order_type", order_type.to_string())]
    .into_iter()
    .collect();
  let page = page.unwrap_or(1);
  params.insert("page", page.to_string());
  if let Some(type_id) = type_id {
    let type_id = type_id.to_string();
    params.insert("type_id", type_id);
  }
  let result =
    get_public_paged::<Vec<MarketOrder>>(&format!("markets/{}/orders", region_id), Some(params))
      .await?;
  Ok(result)
}

pub async fn get_market_history(
  region_id: i32,
  type_id: i32,
) -> Result<Vec<MarketHistory>, reqwest::Error> {
  get_public::<Vec<MarketHistory>>(
    &format!("markets/{}/history", region_id),
    Some(vec![("type_id", type_id.to_string())].into_iter().collect()),
  )
  .await
}