improve error handling
This commit is contained in:
parent
059cf500e7
commit
675081e9d2
18
src/error.rs
18
src/error.rs
|
@ -1,29 +1,27 @@
|
|||
use rocket::Responder;
|
||||
use rocket::{http::Status, Responder};
|
||||
|
||||
#[derive(Responder, Debug)]
|
||||
pub enum BlossomError {
|
||||
#[response(status = 500)]
|
||||
Reqwest(&'static str, #[response(ignore)] reqwest::Error),
|
||||
#[response(status = 500)]
|
||||
ListenBrainz(&'static str, #[response(ignore)] listenbrainz::Error),
|
||||
#[response(status = 500)]
|
||||
Skinnyverse(&'static str, #[response(ignore)] mastodon_async::Error),
|
||||
Reqwest(Status, #[response(ignore)] reqwest::Error),
|
||||
ListenBrainz(Status, #[response(ignore)] listenbrainz::Error),
|
||||
Skinnyverse(Status, #[response(ignore)] mastodon_async::Error),
|
||||
Unimplemented(Status),
|
||||
}
|
||||
|
||||
impl From<reqwest::Error> for BlossomError {
|
||||
fn from(e: reqwest::Error) -> Self {
|
||||
BlossomError::Reqwest("reqwest error", e)
|
||||
BlossomError::Reqwest(Status::new(500), e)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<listenbrainz::Error> for BlossomError {
|
||||
fn from(e: listenbrainz::Error) -> Self {
|
||||
BlossomError::ListenBrainz("listenbrainz error", e)
|
||||
BlossomError::ListenBrainz(Status::new(500), e)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<mastodon_async::Error> for BlossomError {
|
||||
fn from(e: mastodon_async::Error) -> Self {
|
||||
BlossomError::Skinnyverse("skinnyverse error", e)
|
||||
BlossomError::Skinnyverse(Status::new(500), e)
|
||||
}
|
||||
}
|
||||
|
|
11
src/main.rs
11
src/main.rs
|
@ -20,7 +20,10 @@ extern crate rocket;
|
|||
async fn home(clients: &State<Clients>) -> Result<Template, BlossomError> {
|
||||
Ok(Template::render(
|
||||
"home",
|
||||
context! { is_live: false, listenbrainz: scrobbles::get_now_playing(&clients.listenbrainz).await?, skweets: skweets::get_recents(&clients.skinnyverse).await? },
|
||||
context! {
|
||||
is_live: false,
|
||||
listenbrainz: scrobbles::get_now_playing(&clients.listenbrainz).await.unwrap_or_default(),
|
||||
skweets: skweets::get_recents(&clients.skinnyverse).await.unwrap_or_default() },
|
||||
))
|
||||
}
|
||||
|
||||
|
@ -31,7 +34,7 @@ async fn contact() -> Template {
|
|||
|
||||
#[get("/plants")]
|
||||
async fn plants() -> Result<Template, BlossomError> {
|
||||
todo!()
|
||||
Err(BlossomError::Unimplemented(Status::NotImplemented))
|
||||
}
|
||||
|
||||
#[catch(default)]
|
||||
|
@ -44,7 +47,7 @@ fn catcher(status: Status, req: &Request) -> Template {
|
|||
} else if status.code == 501 {
|
||||
message = "it looks like this is not yet here!!!";
|
||||
} else {
|
||||
message = "there was an error";
|
||||
message = "idk i got bored";
|
||||
}
|
||||
let status = format!("{}", status);
|
||||
Template::render(
|
||||
|
@ -66,7 +69,7 @@ async fn main() -> Result<(), rocket::Error> {
|
|||
.attach(Template::custom(|engines| {
|
||||
engines.tera.autoescape_on(vec![]);
|
||||
}))
|
||||
.mount("/", routes![home, contact])
|
||||
.mount("/", routes![home, contact, plants])
|
||||
.register("/", catchers![catcher])
|
||||
.mount("/", FileServer::from(relative!("static")))
|
||||
.launch()
|
||||
|
|
|
@ -10,7 +10,7 @@ pub async fn get_now_playing(
|
|||
Ok(NowPlayingData::new(playingnow))
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
#[derive(Serialize, Deserialize, Default)]
|
||||
pub struct NowPlayingData {
|
||||
pub is_scrobbling: bool,
|
||||
pub song: Option<String>,
|
||||
|
|
Loading…
Reference in New Issue