mod error; mod live; mod posts; mod scrobbles; mod skweets; use std::borrow::Cow; use rocket::fs::{relative, FileServer}; use rocket::http::Status; use rocket::{Request, State}; use rocket_dyn_templates::{context, Template}; use error::BlossomError; type Result = std::result::Result; struct Clients { listenbrainz: listenbrainz::raw::Client, skinnyverse: mastodon_async::Mastodon, reqwest: reqwest::Client, } #[macro_use] extern crate rocket; #[get("/")] async fn home(clients: &State) -> Template { let (live, listenbrainz, skweets) = tokio::join!( live::get_live_status(&clients.reqwest), scrobbles::get_now_playing(&clients.listenbrainz), skweets::get_recents(&clients.skinnyverse) ); let is_live = live.unwrap_or_default().online; let listenbrainz = listenbrainz.unwrap_or_default(); let skweets = skweets.unwrap_or_default(); Template::render( "home", context! { is_live, listenbrainz, skweets, }, ) } #[get("/contact")] async fn contact() -> Template { Template::render("contact", context! {}) } #[get("/plants")] async fn plants() -> Result