Properly parse the data
This commit is contained in:
parent
576df264f9
commit
e37add37df
|
@ -49,6 +49,9 @@ name = "challenge"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"reqwest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_yaml",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
|
@ -721,6 +724,19 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_yaml"
|
||||
version = "0.9.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6d232d893b10de3eb7258ff01974d6ee20663d8e833263c99409d4b13a0209da"
|
||||
dependencies = [
|
||||
"indexmap",
|
||||
"itoa",
|
||||
"ryu",
|
||||
"serde",
|
||||
"unsafe-libyaml",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.0"
|
||||
|
@ -930,6 +946,12 @@ dependencies = [
|
|||
"tinyvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unsafe-libyaml"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1e5fa573d8ac5f1a856f8d7be41d390ee973daf97c806b2c1a465e4e1406e68"
|
||||
|
||||
[[package]]
|
||||
name = "url"
|
||||
version = "2.3.1"
|
||||
|
|
|
@ -6,5 +6,8 @@ edition = "2021"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
reqwest = { version = "0.11", features = [ "cookies" ] }
|
||||
reqwest = { version = "0.11", features = [ "cookies", "json" ] }
|
||||
tokio = { version = "1.22", features = [ "full" ] }
|
||||
serde = { version = "1.0" }
|
||||
serde_json = { version = "1.0" }
|
||||
serde_yaml = { version = "0.9" }
|
||||
|
|
|
@ -1,20 +1,32 @@
|
|||
use reqwest;
|
||||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let session_cookie = std::env::vars()
|
||||
.find_map(|(key, value)| {
|
||||
if key == "SESSION_COOKIE" {
|
||||
Some(value)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.unwrap();
|
||||
const INPUT_DATA: &str = include_str!("../680754.json");
|
||||
const TEAMS: &str = include_str!("../teams.yaml");
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
struct Board {
|
||||
members: HashMap<String, Member>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
struct Member {
|
||||
local_score: u32,
|
||||
name: String,
|
||||
stars: u32,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
struct Team {
|
||||
name: String,
|
||||
members: Vec<String>,
|
||||
}
|
||||
|
||||
async fn request_board(session_token: &str, year: &str, board_id: &str) -> Board {
|
||||
let jar = reqwest::cookie::Jar::default();
|
||||
let url = "https://adventofcode.com/".parse::<reqwest::Url>().unwrap();
|
||||
jar.add_cookie_str(&format!("session={}", session_cookie), &url);
|
||||
jar.add_cookie_str(&format!("session={}", session_token), &url);
|
||||
|
||||
let client = reqwest::ClientBuilder::new()
|
||||
.cookie_store(true)
|
||||
|
@ -22,13 +34,37 @@ async fn main() {
|
|||
.build()
|
||||
.unwrap();
|
||||
|
||||
let board = client
|
||||
.get("https://adventofcode.com/2021/leaderboard/private/view/680754.json")
|
||||
client
|
||||
.get(format!(
|
||||
"https://adventofcode.com/{}/leaderboard/private/view/{}.json",
|
||||
year, board_id
|
||||
))
|
||||
.send()
|
||||
.await
|
||||
.unwrap()
|
||||
.text()
|
||||
.await;
|
||||
.json()
|
||||
.await
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
/*
|
||||
let session_token = std::env::vars()
|
||||
.find_map(|(key, value)| {
|
||||
if key == "AOC_SESSION_TOKEN" {
|
||||
Some(value)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
let board = request_board(&session_token, "2022", "680754");
|
||||
*/
|
||||
|
||||
let teams: Vec<Team> = serde_yaml::from_str(TEAMS).unwrap();
|
||||
let board: Board = serde_json::from_str(INPUT_DATA).unwrap();
|
||||
println!("resulting text: {:?}", teams);
|
||||
println!("resulting text: {:?}", board);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue