[web] [WIP] Restore static asset serving

This commit is contained in:
Emi Simpson 2021-11-01 18:15:06 -04:00
parent dd5b4c5238
commit 5d47635ce8
Signed by: Emi
GPG Key ID: A12F2C2FFDC3D847
2 changed files with 11 additions and 11 deletions

View File

@ -3,6 +3,7 @@ pub mod contrast;
pub mod statics;
pub mod configuration;
use crate::statics::StaticAsset;
use smol::io::AsyncWriteExt;
use smol::stream::StreamExt;
use std::borrow::Cow;
@ -195,7 +196,11 @@ fn route_request(req: &ScgiRequest) -> Route {
#[cfg(feature = "embed_static_assets")]
// If the route is /static/, check to see if it matches an asset first
if segments.get(0).map(Deref::deref) == Some("static") {
// TODO try serve static files
for asset in statics::STATIC_ASSETS {
if Some(asset.filename) == segments.get(1).map(Deref::deref) {
return Route::SendStatic(asset);
}
}
}
// Determines if we need to respond with a thumbnail or a web page
@ -258,7 +263,7 @@ enum Route {
/// Respond to the request with one of the static files embeded in the application
///
/// The wrapped pointer is a pointer to those bytes in memory.
SendStatic(&'static [u8]),
SendStatic(&'static StaticAsset),
/// Respond with an HTML pronoun page.
///
@ -301,12 +306,7 @@ impl Route {
/// Actually perform the action that each route entails
fn generate_response(self, settings: &InstanceSettings) -> Response {
let result = match self {
Route::SendStatic(data) => Ok(Response {
status: 200,
headers: Cow::Borrowed(&[
]),
body: data.into(),
}),
Route::SendStatic(data) => Ok(data.generate_response()),
Route::SendPronounPage(name, prefs) =>
Route::send_pronoun_page(name, prefs, settings),
Route::SendThumbnail(name, prefs) =>

View File

@ -28,7 +28,7 @@ impl StaticAsset {
/// Generate the HTTP response for sending this asset to the client
// I wrote all this code to make this a const fn, and then don't even use it in
// compile-time :(
const fn generate_response(&self) -> Response {
pub const fn generate_response(&self) -> Response {
Response {
status: 200,
headers: Cow::Borrowed(StaticAsset::STATIC_HEADERS),
@ -54,7 +54,7 @@ macro_rules! static_asset {
pub const FONT: StaticAsset = static_asset!("font.otf");
/// A list of static assets which should be served by the server
pub const STATIC_ASSETS: &[StaticAsset] = &[
pub const STATIC_ASSETS: &[&StaticAsset] = &[
#[cfg(any(feature = "embed_static_assets"))]
FONT,
&FONT,
];