diff options
author | Sven-Hendrik Haase <svenstaro@gmail.com> | 2022-09-18 03:40:33 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-18 03:40:33 +0000 |
commit | 9b4be68d7ecbf7737ff62c03017b5111f12a4a28 (patch) | |
tree | ef648b44467de162cb75e8498554f7954f9601f7 /src/main.rs | |
parent | Merge pull request #905 from svenstaro/dependabot/cargo/sha2-0.10.6 (diff) | |
parent | Merge branch 'master' into qrcode (diff) | |
download | miniserve-9b4be68d7ecbf7737ff62c03017b5111f12a4a28.tar.gz miniserve-9b4be68d7ecbf7737ff62c03017b5111f12a4a28.zip |
Merge pull request #848 from cyqsimon/qrcode
Switch to `fast_qr` lib
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 37 |
1 files changed, 5 insertions, 32 deletions
diff --git a/src/main.rs b/src/main.rs index 08c6680..b49089b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,14 +11,15 @@ use actix_web::{middleware, App, HttpRequest, HttpResponse}; use actix_web_httpauth::middleware::HttpAuthentication; use anyhow::Result; use clap::{crate_version, IntoApp, Parser}; +use fast_qr::QRBuilder; use log::{error, warn}; -use qrcodegen::{QrCode, QrCodeEcc}; use yansi::{Color, Paint}; mod archive; mod args; mod auth; mod config; +mod consts; mod errors; mod file_upload; mod listing; @@ -238,13 +239,13 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> { .iter() .filter(|url| !url.contains("//127.0.0.1:") && !url.contains("//[::1]:")) { - match QrCode::encode_text(url, QrCodeEcc::Low) { + match QRBuilder::new(url.clone()).ecl(consts::QR_EC_LEVEL).build() { Ok(qr) => { println!("QR code for {}:", Color::Green.paint(url).bold()); - print_qr(&qr); + qr.print(); } Err(e) => { - error!("Failed to render QR to terminal: {}", e); + error!("Failed to render QR to terminal: {:?}", e); } }; } @@ -350,31 +351,3 @@ async fn css() -> impl Responder { .insert_header(ContentType(mime::TEXT_CSS)) .body(css) } - -// Prints to the console two inverted QrCodes side by side. -fn print_qr(qr: &QrCode) { - let border = 4; - let size = qr.size() + 2 * border; - - for y in (0..size).step_by(2) { - for x in 0..2 * size { - let inverted = x >= size; - let (x, y) = (x % size - border, y - border); - - //each char represents two vertical modules - let (mod1, mod2) = match inverted { - false => (qr.get_module(x, y), qr.get_module(x, y + 1)), - true => (!qr.get_module(x, y), !qr.get_module(x, y + 1)), - }; - let c = match (mod1, mod2) { - (false, false) => ' ', - (true, false) => '▀', - (false, true) => '▄', - (true, true) => '█', - }; - print!("{0}", c); - } - println!(); - } - println!(); -} |