use crate::http::HttpClient;
use crate::ideascale::models::de::{Fund, Funnel, Proposal, Stage};
use color_eyre::Report;
use reqwest::StatusCode;
use std::collections::HashMap;
pub type Scores = HashMap<u32, f32>;
pub type Sponsors = HashMap<String, String>;
pub fn get_funds_data(client: &impl HttpClient) -> Result<Vec<Fund>, Report> {
info!("getting funds");
client.get("campaigns/groups")?.json()
}
pub fn get_stages(client: &impl HttpClient) -> Result<Vec<Stage>, Report> {
client.get("stages")?.json()
}
pub fn is_token_valid(client: &impl HttpClient) -> Result<bool, Report> {
Ok(client.get::<()>("profile/avatars")?.status() == StatusCode::OK)
}
pub fn get_proposals_data(
client: &impl HttpClient,
challenge_id: u32,
) -> Result<Vec<Proposal>, Report> {
info!("getting proposal data");
let path = &format!("campaigns/{}/ideas/0/100000", challenge_id);
client.get(path)?.json()
}
pub fn get_funnels_data_for_fund(client: &impl HttpClient) -> Result<Vec<Funnel>, Report> {
info!("getting funnels");
client.get("funnels")?.json()
}