read teams from a json file
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,3 @@
|
|||||||
/target
|
/target
|
||||||
*~
|
*~
|
||||||
scores.json
|
teams.json
|
||||||
@ -9,6 +9,7 @@ FROM debian:bookworm-slim
|
|||||||
RUN apt-get update && apt-get install -y libssl3 ca-certificates && apt-get clean
|
RUN apt-get update && apt-get install -y libssl3 ca-certificates && apt-get clean
|
||||||
COPY --from=builder /usr/src/app/Neighborhood_Map_Atlas_Neighborhoods.geojson /
|
COPY --from=builder /usr/src/app/Neighborhood_Map_Atlas_Neighborhoods.geojson /
|
||||||
COPY --from=builder /usr/src/app/map.html /
|
COPY --from=builder /usr/src/app/map.html /
|
||||||
|
COPY --from=builder /usr/src/app/teams.json /
|
||||||
COPY --from=builder /usr/src/app/target/release/mapbattle /usr/local/bin/mapbattle
|
COPY --from=builder /usr/src/app/target/release/mapbattle /usr/local/bin/mapbattle
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
CMD ["mapbattle"]
|
CMD ["mapbattle"]
|
||||||
28
src/main.rs
28
src/main.rs
@ -9,8 +9,7 @@ use chrono::NaiveDateTime;
|
|||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use xml::reader::EventReader;
|
use xml::reader::EventReader;
|
||||||
use actix_web::{get, App, HttpResponse, HttpServer, Responder};
|
use actix_web::{get, App, HttpResponse, HttpServer, Responder};
|
||||||
use crate::data::{Team, Player, TeamLegend};
|
use crate::data::{Team, TeamLegend};
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::BufWriter;
|
use std::io::BufWriter;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
@ -22,7 +21,7 @@ const DATE_FORMAT: &str = "%Y-%m-%dT%H:%M:%SZ";
|
|||||||
|
|
||||||
#[get("/legend-data")]
|
#[get("/legend-data")]
|
||||||
async fn legend_data() -> impl Responder {
|
async fn legend_data() -> impl Responder {
|
||||||
let teams = read_scores();
|
let teams = read_teams();
|
||||||
let legends: Vec<TeamLegend> = teams.into_iter()
|
let legends: Vec<TeamLegend> = teams.into_iter()
|
||||||
.map(|t| TeamLegend{name: t.name, color: t.color}).collect();
|
.map(|t| TeamLegend{name: t.name, color: t.color}).collect();
|
||||||
HttpResponse::Ok()
|
HttpResponse::Ok()
|
||||||
@ -33,7 +32,7 @@ async fn legend_data() -> impl Responder {
|
|||||||
#[get("/geojson")]
|
#[get("/geojson")]
|
||||||
async fn geojson_endpoint() -> impl Responder {
|
async fn geojson_endpoint() -> impl Responder {
|
||||||
let utils = geo_utils::GeoUtils::new();
|
let utils = geo_utils::GeoUtils::new();
|
||||||
let teams = read_scores();
|
let teams = read_teams();
|
||||||
let feature_collection = utils.get_colored_collection_copy(teams);
|
let feature_collection = utils.get_colored_collection_copy(teams);
|
||||||
HttpResponse::Ok()
|
HttpResponse::Ok()
|
||||||
.content_type("application/json")
|
.content_type("application/json")
|
||||||
@ -73,20 +72,7 @@ async fn update_scores()-> Result<(), Box<dyn Error>> {
|
|||||||
.user_agent("MapBattle/0.1")
|
.user_agent("MapBattle/0.1")
|
||||||
.build()?;
|
.build()?;
|
||||||
|
|
||||||
// Load players from a database?
|
let mut teams = read_teams();
|
||||||
let mut teams: Vec<Team> = vec![
|
|
||||||
Team{
|
|
||||||
name: String::from("potato"),
|
|
||||||
color: String::from("#df1aeaff"),
|
|
||||||
scores: HashMap::new(),
|
|
||||||
players: vec![
|
|
||||||
Player {
|
|
||||||
username: String::from("ammaratef45")
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
// Configure time range
|
// Configure time range
|
||||||
let start_date = NaiveDateTime::parse_from_str("2025-11-13T11:55:07Z", DATE_FORMAT)?;
|
let start_date = NaiveDateTime::parse_from_str("2025-11-13T11:55:07Z", DATE_FORMAT)?;
|
||||||
let end_date = NaiveDateTime::parse_from_str("2025-11-13T15:55:07Z", DATE_FORMAT)?;
|
let end_date = NaiveDateTime::parse_from_str("2025-11-13T15:55:07Z", DATE_FORMAT)?;
|
||||||
@ -103,7 +89,7 @@ async fn update_scores()-> Result<(), Box<dyn Error>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let file = File::create("scores.json")?;
|
let file = File::create("teams.json")?;
|
||||||
let mut writer = BufWriter::new(file);
|
let mut writer = BufWriter::new(file);
|
||||||
serde_json::to_writer_pretty(&mut writer, &teams)?;
|
serde_json::to_writer_pretty(&mut writer, &teams)?;
|
||||||
writer.flush()?;
|
writer.flush()?;
|
||||||
@ -111,7 +97,7 @@ async fn update_scores()-> Result<(), Box<dyn Error>> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_scores() -> Vec<Team> {
|
fn read_teams() -> Vec<Team> {
|
||||||
let text: String = fs::read_to_string("scores.json").expect("file should be present");
|
let text: String = fs::read_to_string("teams.json").expect("file should be present");
|
||||||
serde_json::from_str(&text).unwrap()
|
serde_json::from_str(&text).unwrap()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user