Skip to content

Commit

Permalink
Don't bail out on possible xbox problems
Browse files Browse the repository at this point in the history
  • Loading branch information
randomairborne committed Jul 2, 2024
1 parent 050a2f1 commit f42a8e4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 15 deletions.
25 changes: 14 additions & 11 deletions src/services.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,31 +75,32 @@ async fn get_xbox(client: Client) -> Status {
return Status::PossibleProblems;
}
};
let mut status = Status::Operational;
if result.status.overall.state != XblStatusName::None {
warn!("overall status was not None");
return Status::PossibleProblems;
status.make_at_least(Status::PossibleProblems);
}
let minecraft_adjacent_services = [13, 16, 20, 22, 23, 24, 25];
for service in result.core_services.iter().chain(result.titles.iter()) {
if !minecraft_adjacent_services.contains(&service.id) {
continue;
}
match &service.status.name {
XblStatusName::Impacted => return Status::DefiniteProblems,
XblStatusName::Impacted => status.make_at_least(Status::DefiniteProblems),
XblStatusName::None => {}
XblStatusName::Unknown(status) => {
warn!(status, "Unknown XBL status returned");
return Status::PossibleProblems;
XblStatusName::Unknown(q_status) => {
warn!(status = q_status, "Unknown XBL status returned");
status.make_at_least(Status::PossibleProblems);
}
}
for scenario in &service.possible_scenarios {
if scenario.id == service.status.id {
warn!(id = scenario.id, "Got report of XBL problem from XBL api");
return Status::DefiniteProblems;
status.make_at_least(Status::DefiniteProblems);
}
}
}
Status::Operational
status
}

async fn get_session(client: Client) -> Status {
Expand All @@ -118,9 +119,10 @@ async fn get_session(client: Client) -> Status {
}
};
if result.name != "mcping_me" || result.id != "bbb47773bb48438e806b7731b2724e84" {
return Status::DefiniteProblems;
Status::DefiniteProblems
} else {
Status::Operational
}
Status::Operational
}

async fn get_mojang(client: Client) -> Status {
Expand All @@ -139,9 +141,10 @@ async fn get_mojang(client: Client) -> Status {
}
};
if result.name != "mcping_me" || result.id != "bbb47773bb48438e806b7731b2724e84" {
return Status::DefiniteProblems;
Status::DefiniteProblems
} else {
Status::Operational
}
Status::Operational
}

async fn get_minecraft(client: Client) -> Status {
Expand Down
14 changes: 10 additions & 4 deletions src/structures.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,17 @@ pub struct PlayerSample {
pub name: String,
}

#[derive(Clone, Copy, Debug)]
#[derive(Clone, Copy, Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum Status {
Operational,
PossibleProblems,
DefiniteProblems,
Operational = 0,
PossibleProblems = 1,
DefiniteProblems = 2,
}

impl Status {
pub fn make_at_least(&mut self, other: Self) {
*self = std::cmp::max(*self, other);
}
}

impl Serialize for Status {
Expand Down

0 comments on commit f42a8e4

Please sign in to comment.