diff --git a/src/args.rs b/src/args.rs index 25b24a6..4eeb9a2 100644 --- a/src/args.rs +++ b/src/args.rs @@ -133,6 +133,18 @@ pub struct Args { /// Enable the use of Hash IDs for shorter URLs instead of animal names. #[clap(long, env = "MICROBIN_HASH_IDS")] pub hash_ids: bool, + + /// Endpoint for /url/ + #[clap(long, env = "MICROBIN_URL_EP", default_value = "url" )] + pub url_endpoint: String, + + /// Endpoint for /pasta/ + #[clap(long, env = "MICROBIN_PASTA_EP", default_value = "pasta" )] + pub pasta_endpoint: String, + + /// Endpoint for /raw/ + #[clap(long, env = "MICROBIN_RAW_EP", default_value = "raw" )] + pub raw_endpoint: String, } #[derive(Debug, Clone)] diff --git a/src/endpoints/create.rs b/src/endpoints/create.rs index d5fb8c6..d3b618f 100644 --- a/src/endpoints/create.rs +++ b/src/endpoints/create.rs @@ -197,6 +197,6 @@ pub async fn create( CONVERTER.to_names(id) }; Ok(HttpResponse::Found() - .append_header(("Location", format!("{}/pasta/{}", ARGS.public_path, slug))) + .append_header(("Location", format!("{}/{}/{}", ARGS.public_path, ARGS.pasta_endpoint, slug))) .finish()) } diff --git a/src/endpoints/pasta.rs b/src/endpoints/pasta.rs index 2b1651f..67a7677 100644 --- a/src/endpoints/pasta.rs +++ b/src/endpoints/pasta.rs @@ -19,7 +19,6 @@ struct PastaTemplate<'a> { } /// Endpoint to view a pasta. -#[get("/pasta/{id}")] pub async fn getpasta(data: web::Data, id: web::Path) -> HttpResponse { // get access to the pasta collection let mut pastas = data.pastas.lock().await; @@ -84,7 +83,6 @@ pub async fn getpasta(data: web::Data, id: web::Path) -> HttpR } /// Endpoint for redirection. -#[get("/url/{id}")] pub async fn redirecturl(data: web::Data, id: web::Path) -> HttpResponse { // get access to the pasta collection let mut pastas = data.pastas.lock().await; @@ -152,7 +150,6 @@ pub async fn redirecturl(data: web::Data, id: web::Path) -> Ht } /// Endpoint to request pasta as raw file. -#[get("/raw/{id}")] pub async fn getrawpasta(data: web::Data, id: web::Path) -> String { // get access to the pasta collection let mut pastas = data.pastas.lock().await; diff --git a/src/main.rs b/src/main.rs index 958e768..fd4f412 100644 --- a/src/main.rs +++ b/src/main.rs @@ -83,9 +83,21 @@ async fn main() -> std::io::Result<()> { .wrap(middleware::NormalizePath::trim()) .service(create::index) .service(info::info) - .service(pasta_endpoint::getpasta) - .service(pasta_endpoint::getrawpasta) - .service(pasta_endpoint::redirecturl) + .route( + &format!("/{}/{{id}}", ARGS.pasta_endpoint), + web::get().to(pasta_endpoint::getpasta) + ) + .route( + &format!("/{}/{{id}}", ARGS.raw_endpoint), + web::get().to(pasta_endpoint::getrawpasta) + ) + .route( + &format!("/{}/{{id}}", ARGS.url_endpoint), + web::get().to(pasta_endpoint::redirecturl) + ) + //.service(pasta_endpoint::getpasta) + //.service(pasta_endpoint::getrawpasta) + //.service(pasta_endpoint::redirecturl) .service(edit::get_edit) .service(edit::post_edit) .service(static_resources::static_resources) diff --git a/templates/pasta.html b/templates/pasta.html index 76694d6..5a32196 100644 --- a/templates/pasta.html +++ b/templates/pasta.html @@ -9,7 +9,7 @@ Copy Redirect {%- endif %} - Raw Text + Raw Text Content {%- endif %} {% if args.qr && args.public_path.to_string() != "" %} @@ -66,8 +66,8 @@ const copyTextBtn = document.getElementById("copy-text-button") const copyRedirectBtn = document.getElementById("copy-redirect-button") const content = `{{ pasta.content_escaped() }}` - const url = `{{ args.public_path }}/pasta/{{pasta.id_as_animals()}}` - const redirect_url = `{{ args.public_path }}/url/{{pasta.id_as_animals()}}` + const url = `{{ args.public_path }}/{{ args.pasta_endpoint }}/{{pasta.id_as_animals()}}` + const redirect_url = `{{ args.public_path }}/{{ args.url_endpoint }}/{{pasta.id_as_animals()}}` copyURLBtn.addEventListener("click", () => { navigator.clipboard.writeText(url)