aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2022-09-18 03:40:33 +0000
committerGitHub <noreply@github.com>2022-09-18 03:40:33 +0000
commit9b4be68d7ecbf7737ff62c03017b5111f12a4a28 (patch)
treeef648b44467de162cb75e8498554f7954f9601f7 /src/main.rs
parentMerge pull request #905 from svenstaro/dependabot/cargo/sha2-0.10.6 (diff)
parentMerge branch 'master' into qrcode (diff)
downloadminiserve-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.rs37
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!();
-}