share/src/lib.rs

61 lines
1.8 KiB
Rust
Raw Normal View History

2022-10-21 12:12:53 +02:00
use rand::{distributions::Alphanumeric, Rng}; // 0.8
2022-10-24 10:23:47 +02:00
use std::env;
2022-10-21 12:12:53 +02:00
pub fn randstr() -> String {
rand::thread_rng()
.sample_iter(&Alphanumeric)
.take(7)
.map(char::from)
.collect()
}
2022-10-24 10:23:47 +02:00
// le a variable de entorno UPLOADS para configurar o directorio de almacenamento
// por defecto: dir_actual/uploads/
pub fn env_uploads_dir() -> String {
match env::var_os("UPLOADS") {
Some(val) => val.into_string().unwrap(),
None => "uploads/".to_string(),
}
}
// le a variable de entorno PORT para configurar o porto de escoita
// por defecto o 3000
pub fn env_listen_port() -> u16 {
match env::var_os("PORT") {
Some(val) => val.into_string().unwrap().parse::<u16>().unwrap(),
None => 3000,
}
}
2022-10-24 17:00:07 +02:00
2022-10-25 09:23:45 +02:00
// le a variable de entorno RPROXY para indicar si está detráis dun "reverse proxy"
// e así mostrar na páxina principal o porto ou non
// por defecto: false
pub fn env_rproxy() -> bool {
match env::var_os("RPROXY") {
Some(_) => true,
None => false,
}
}
// le a variable de entorno BASE_URL para configurar a url a mostrar nos enlaces
// dependendo de si está detráis dun "reverse proxy" ou non
2022-10-24 17:00:07 +02:00
// por defecto: http://localhost:3000
pub fn env_base_url() -> String {
let port = env_listen_port();
match env::var_os("BASE_URL") {
2022-10-25 09:23:45 +02:00
Some(val) => {
if env_rproxy() {
format!("{}", val.into_string().unwrap())
} else {
format!("{}:{}", val.into_string().unwrap(), port)
}
},
None => {
// si non se especifica unha BASE_URL enténdese que se está levantando
// en local e non influe a variable RPROXY
format!("{}:{}", "http://localhost", port)
},
2022-10-24 17:00:07 +02:00
}
}