#[allow(unused_imports)]
use log::{debug, error, info, trace, warn};
use rocket::error::{LaunchError, LaunchErrorKind};
pub fn handle_launch_errors(error: LaunchError) {
match error.kind() {
LaunchErrorKind::Bind(err) => {
error!("{}", err);
panic!("Address/Port binding error.");
}
LaunchErrorKind::Io(err) => {
error!("{}", err);
let issue = df_st_core::GitIssue::<bool> {
title: format!("API IO error: {}", err),
message: "While launching the API we encountered an IO error.".to_owned(),
labels: vec!["Panic".to_owned()],
debug_info_string: Some(format!("Error message: `{}`", err,)),
debug_info_json: None,
add_steps: true,
ask_add_files: false,
include_backtrace: false,
};
error!("{}", issue.create_message());
panic!("API IO error.");
}
LaunchErrorKind::Collision(routes) => {
let first_route_pair = routes.get(0).unwrap();
let routes_collision_messages = routes
.iter()
.map(|(route1, route2)| {
format!("Collision between: \n{}\nand\n{}\n", route1, route2)
})
.collect::<Vec<String>>()
.join("\n");
error!("Colliding routes: {}", routes_collision_messages);
let issue = df_st_core::GitIssue::<bool> {
title: format!(
"API Collision error: {} and {}",
first_route_pair.0, first_route_pair.1
),
message: "While launching the API we encountered an Collision error.\n\n\
This is an error made by the developers, we are sorry."
.to_owned(),
labels: vec!["Panic".to_owned()],
debug_info_string: Some(routes_collision_messages),
debug_info_json: None,
add_steps: false,
ask_add_files: false,
include_backtrace: false,
};
error!("{}", issue.create_message());
panic!("API Collision error.");
}
LaunchErrorKind::FailedFairings(errors) => {
error!("Fairing error: {}", errors.join("\n"));
let issue = df_st_core::GitIssue {
title: format!("Fairing error: {}", errors.get(0).unwrap_or(&"")),
message: "While launching the API one of our fairings failed.".to_owned(),
labels: vec!["Panic".to_owned()],
debug_info_string: Some(errors.join("\n")),
debug_info_json: Some(errors),
add_steps: false,
ask_add_files: false,
include_backtrace: false,
};
error!("{}", issue.create_message());
panic!("API Fairing error.");
}
LaunchErrorKind::Unknown(err) => {
error!("{}", err);
let issue = df_st_core::GitIssue::<bool> {
title: format!("API Unknown error: {}", err),
message: "While launching the API we encountered an Unknown error.".to_owned(),
labels: vec!["Panic".to_owned()],
debug_info_string: None,
debug_info_json: None,
add_steps: false,
ask_add_files: false,
include_backtrace: false,
};
error!("{}", issue.create_message());
panic!("API Unknown error.");
}
};
}