Compare commits

...

3 Commits

Author SHA1 Message Date
blek 2cbcd06c1a
fix the api path compile error 2023-10-07 19:29:56 +10:00
blek bea8e707a2
fix a few compile errors 2023-10-07 19:29:27 +10:00
blek a6b669a007
add uploads path env variable 2023-10-07 19:29:11 +10:00
6 changed files with 42 additions and 6 deletions

View File

@ -9,3 +9,4 @@ REDIS_PREFIX=bfile-
USERCONTENT_DIR=/opt/user_uploads USERCONTENT_DIR=/opt/user_uploads
INSTANCE_URL=http://localhost INSTANCE_URL=http://localhost
UPLOADS_PATH=file # can be only one alphanumeric word

View File

@ -19,7 +19,8 @@ pub struct Env {
pub listen: SocketAddr, pub listen: SocketAddr,
pub redis: Redis, pub redis: Redis,
pub filedir: String, pub filedir: String,
pub instanceurl: String pub instanceurl: String,
pub uploadspath: String
} }
fn get_var<T: Into<String>, O: From<String>>(name: T) -> Result<O, String> { fn get_var<T: Into<String>, O: From<String>>(name: T) -> Result<O, String> {
@ -53,7 +54,8 @@ pub fn loadenv() -> Result<Env, Box<dyn std::error::Error>> {
} }
spath spath
}, },
instanceurl: get_var("INSTANCE_URL")? instanceurl: get_var("INSTANCE_URL")?,
uploadspath: get_var("UPLOADS_PATH")?
} }
) )
} }

18
filed/src/web/api.rs Normal file
View File

@ -0,0 +1,18 @@
use warp::{reply::Reply, reject::Rejection, Filter};
use super::state::SharedState;
mod get_all;
pub fn api_root() -> Box<dyn Reply> {
Box::new(warp::reply::json(&String::from("{ error: \"You have called the API root of a blek! File instance. Refer to https://git.blek.codes/blek/bfile.git for documentation.\" }")))
}
pub fn get_routes(state: SharedState) -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone {
let api = warp::path!("api");
let api = api
.and(warp::path::end())
.map(api_root)
.or(get_all::get_all_f(state));
api
}

View File

@ -0,0 +1,13 @@
use warp::{reply::Reply, reject::Rejection, Filter};
use crate::web::state::SharedState;
pub async fn get_all(_state: SharedState) -> Result<Box<dyn Reply>, Rejection> {
Ok(Box::new(warp::reply::json(&String::from("aaaaa"))))
}
pub fn get_all_f(state: SharedState) -> impl Filter<Extract = impl Reply, Error = Rejection> + Clone {
warp::path!("get_all")
.map(move || state.clone())
.and_then(get_all)
}

View File

@ -12,6 +12,7 @@ mod pages;
mod forms; mod forms;
mod state; mod state;
mod rejection; mod rejection;
mod api;
use state::SharedState; use state::SharedState;
@ -20,7 +21,8 @@ pub fn routes(state: SharedState) -> impl Filter<Extract = impl Reply, Error = R
let staticpath = staticpath.to_str().unwrap().to_string() + "/static"; let staticpath = staticpath.to_str().unwrap().to_string() + "/static";
pages::get_routes(state.clone()) pages::get_routes(state.clone())
.or(forms::get_routes(state)) .or(forms::get_routes(state.clone()))
.or(api::get_routes(state))
.or(warp::fs::dir(staticpath.to_string())) .or(warp::fs::dir(staticpath.to_string()))
} }

View File

@ -2,9 +2,9 @@
pages.rs - All the HTML pages pages.rs - All the HTML pages
*/ */
use std::{collections::HashMap, convert::Infallible}; use std::collections::HashMap;
use warp::{reply::{Reply, Html}, Filter, reject::{Rejection, Reject}}; use warp::{reply::{Reply, Html}, Filter, reject::Rejection};
use askama::Template; use askama::Template;
use crate::env::Env; use crate::env::Env;