use serde_derive::Deserialize;
use std::collections::HashMap;
use std::io::Read;
pub fn list_boards() {
const URL: &str = "https://2ch.hk/makaba/mobile.fcgi?task=get_boards";
let response = reqwest::get(URL).expect("Cannot get boards");
let boards = parse_boards(response).expect("Cannot parse boards");
for board in boards {
println!("{:>10} {:20} {}", board.id, board.category, board.name);
}
}
fn parse_boards(reader: impl Read) -> serde_json::Result<Vec<Board>> {
let wrapper: HashMap<String, Vec<Board>> = serde_json::from_reader(reader)?;
Ok(wrapper
.into_iter()
.map(|(_, boards)| boards)
.flatten()
.collect())
}
#[derive(Deserialize, Debug)]
struct Board {
id: String,
category: String,
name: String,
}