aboutsummaryrefslogtreecommitdiffstats
path: root/src/listing.rs
diff options
context:
space:
mode:
authorcyqsimon <28627918+cyqsimon@users.noreply.github.com>2022-09-01 11:37:39 +0000
committercyqsimon <28627918+cyqsimon@users.noreply.github.com>2022-09-01 11:37:39 +0000
commit9f7d5a8aeaf252fb51d88b965b3a324e8e815f37 (patch)
tree2334fbbca617bab73156644a50f4e9aa84c07d90 /src/listing.rs
parentFix rustfmt complaints (diff)
downloadminiserve-9f7d5a8aeaf252fb51d88b965b3a324e8e815f37.tar.gz
miniserve-9f7d5a8aeaf252fb51d88b965b3a324e8e815f37.zip
Fix drop-down QR code
Diffstat (limited to '')
-rw-r--r--src/listing.rs26
1 files changed, 9 insertions, 17 deletions
diff --git a/src/listing.rs b/src/listing.rs
index bc8dcfb..b000649 100644
--- a/src/listing.rs
+++ b/src/listing.rs
@@ -9,14 +9,13 @@ use actix_web::{HttpMessage, HttpRequest, HttpResponse};
use bytesize::ByteSize;
use comrak::{markdown_to_html, ComrakOptions};
use percent_encoding::{percent_decode_str, utf8_percent_encode};
-use qrcode::QrCode;
use serde::Deserialize;
use strum_macros::{Display, EnumString};
use crate::archive::ArchiveMethod;
use crate::auth::CurrentUser;
use crate::errors::{self, ContextualError};
-use crate::{consts, renderer};
+use crate::renderer;
use self::percent_encode_sets::PATH_SEGMENT;
@@ -38,7 +37,6 @@ pub struct QueryParameters {
pub order: Option<SortingOrder>,
pub raw: Option<bool>,
pub mkdir_name: Option<String>,
- qrcode: Option<String>,
download: Option<ArchiveMethod>,
}
@@ -166,6 +164,13 @@ pub fn directory_listing(
let base = Path::new(serve_path);
let random_route_abs = format!("/{}", conf.route_prefix);
+ let abs_url = format!(
+ "{}://{}{}",
+ req.connection_info().scheme(),
+ req.connection_info().host(),
+ req.uri()
+ );
+ dbg!(&abs_url);
let is_root = base.parent().is_none() || Path::new(&req.path()) == Path::new(&random_route_abs);
let encoded_dir = match base.strip_prefix(random_route_abs) {
@@ -218,20 +223,6 @@ pub fn directory_listing(
let query_params = extract_query_parameters(req);
- // If the `qrcode` parameter is included in the url, then should respond to the QR code
- if let Some(url) = query_params.qrcode {
- let res = match QrCode::with_error_correction_level(url, consts::QR_EC_LEVEL) {
- Ok(qr) => HttpResponse::Ok()
- .content_type(mime::TEXT_HTML_UTF_8)
- .body(renderer::qr_code_page(&breadcrumbs, &qr, conf).into_string()),
- Err(err) => {
- log::error!("URL is invalid (too long?): {:?}", err);
- HttpResponse::UriTooLong().finish()
- }
- };
- return Ok(ServiceResponse::new(req.clone(), res));
- }
-
let mut entries: Vec<Entry> = Vec::new();
let mut readme: Option<(String, String)> = None;
@@ -384,6 +375,7 @@ pub fn directory_listing(
renderer::page(
entries,
readme,
+ abs_url,
is_root,
query_params,
&breadcrumbs,