add error handlers
This commit is contained in:
		
							parent
							
								
									859f9fe9f8
								
							
						
					
					
						commit
						67790fcb2f
					
				
							
								
								
									
										35
									
								
								src/main.rs
								
								
								
								
							
							
						
						
									
										35
									
								
								src/main.rs
								
								
								
								
							| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
use listenbrainz::raw::response::UserPlayingNowResponse;
 | 
			
		||||
use rocket::fs::{relative, FileServer};
 | 
			
		||||
use rocket::http::Status;
 | 
			
		||||
use rocket::response::Responder;
 | 
			
		||||
use rocket::Request;
 | 
			
		||||
use rocket_dyn_templates::{context, Template};
 | 
			
		||||
use serde::{Deserialize, Serialize};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -55,10 +57,6 @@ impl ScrobbleData {
 | 
			
		|||
async fn home() -> Template {
 | 
			
		||||
    let listenbrainz = listenbrainz::raw::Client::new();
 | 
			
		||||
    let playingnow = listenbrainz.user_playing_now("celblossom").unwrap();
 | 
			
		||||
    println!(
 | 
			
		||||
        "{}",
 | 
			
		||||
        playingnow.payload.listens[0].track_metadata.artist_name
 | 
			
		||||
    );
 | 
			
		||||
    let listenbrainz_data = ScrobbleData::new(playingnow);
 | 
			
		||||
    println!("{}", listenbrainz_data.is_scrobbling);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -79,11 +77,40 @@ async fn contact() -> Template {
 | 
			
		|||
//     posts
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
#[catch(404)]
 | 
			
		||||
fn not_found(req: &Request) -> Template {
 | 
			
		||||
    let message = "i either haven't built this page yet or it looks like you're a little lost";
 | 
			
		||||
    Template::render(
 | 
			
		||||
        "error",
 | 
			
		||||
        context! { status: "404", req: req.uri(), message: message },
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[catch(501)]
 | 
			
		||||
fn server_error(req: &Request) -> Template {
 | 
			
		||||
    let message = "it looks like this is not yet here!!!";
 | 
			
		||||
    Template::render(
 | 
			
		||||
        "error",
 | 
			
		||||
        context! { status: "501", req: req.uri(), message: message },
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[catch(default)]
 | 
			
		||||
fn error(status: Status, req: &Request) -> Template {
 | 
			
		||||
    let status = format!("{}", status);
 | 
			
		||||
    let message = "there was an error";
 | 
			
		||||
    Template::render(
 | 
			
		||||
        "error",
 | 
			
		||||
        context! { status: status, req: req.uri(), message: message },
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[tokio::main]
 | 
			
		||||
async fn main() -> Result<(), rocket::Error> {
 | 
			
		||||
    let _rocket = rocket::build()
 | 
			
		||||
        .attach(Template::fairing())
 | 
			
		||||
        .mount("/", routes![home, contact])
 | 
			
		||||
        .register("/", catchers![not_found, server_error, error])
 | 
			
		||||
        .mount("/", FileServer::from(relative!("static")))
 | 
			
		||||
        .launch()
 | 
			
		||||
        .await?;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
{% extends "base" %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
 | 
			
		||||
<div class="content panel">
 | 
			
		||||
  <h2>Error {{ status }}: {{ req }}</h2>
 | 
			
		||||
  <h3>{{ message }}</h3>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
{% endblock %}
 | 
			
		||||
		Loading…
	
		Reference in New Issue