Reduce deps

This commit is contained in:
Aode (lion) 2021-09-06 15:44:01 -05:00
parent dbfdd010a6
commit a61d812d85
6 changed files with 196 additions and 384 deletions

498
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
[package] [package]
name = "pict-rs-aggregator" name = "pict-rs-aggregator"
version = "0.1.8" version = "0.1.9"
authors = ["asonix <asonix@asonix.dog>"] authors = ["asonix <asonix@asonix.dog>"]
edition = "2018" edition = "2018"
build = "src/build.rs" build = "src/build.rs"
@ -8,23 +8,22 @@ build = "src/build.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
actix-web = { version = "4.0.0-beta.8", default-features = false, features = ["compress-brotli", "compress-gzip"] } actix-rt = "2.2"
anyhow = "1.0" actix-web = { version = "4.0.0-beta.8", default-features = false }
awc = { version = "3.0.0-beta.7", default-features = false, features = ["rustls", "compress-brotli", "compress-gzip"] } awc = { version = "3.0.0-beta.7", default-features = false }
bcrypt = "0.10" bcrypt = "0.10"
env_logger = "0.8.2" env_logger = "0.9.0"
futures = "0.3"
mime = "0.3" mime = "0.3"
minify-html = "0.4.0" minify-html = "0.6.0"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"
sled = { version = "0.34.6", features = ["zstd"] } sled = { version = "0.34.6", features = ["zstd"] }
structopt = "0.3.21" structopt = "0.3.21"
tokio = { version = "1", default-features = false, features = ["sync"] }
thiserror = "1.0" thiserror = "1.0"
url = { version = "2.2", features = ["serde"] } url = { version = "2.2", features = ["serde"] }
uuid = { version = "0.8.1", features = ["serde", "v4"] } uuid = { version = "0.8.1", features = ["serde", "v4"] }
[build-dependencies] [build-dependencies]
anyhow = "1.0"
dotenv = "0.15.0" dotenv = "0.15.0"
ructe = { version = "0.13.0", features = ["sass", "mime03"] } ructe = { version = "0.13.0", features = ["sass", "mime03"] }

View file

@ -1,6 +1,6 @@
use ructe::Ructe; use ructe::Ructe;
fn main() -> Result<(), anyhow::Error> { fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenv::dotenv().ok(); dotenv::dotenv().ok();
let mut ructe = Ructe::from_env()?; let mut ructe = Ructe::from_env()?;
let mut statics = ructe.statics()?; let mut statics = ructe.statics()?;

View file

@ -322,15 +322,6 @@ enum Error {
#[error("{0}")] #[error("{0}")]
UploadString(String), UploadString(String),
#[error("Failed to minify html, {0}")]
Minify(String),
}
impl From<minify_html::Error> for Error {
fn from(e: minify_html::Error) -> Self {
Error::Minify(format!("{:?}", e))
}
} }
#[derive(serde::Deserialize, serde::Serialize)] #[derive(serde::Deserialize, serde::Serialize)]
@ -339,7 +330,7 @@ pub struct Collection {
description: String, description: String,
} }
#[derive(serde::Deserialize, serde::Serialize)] #[derive(Clone, serde::Deserialize, serde::Serialize)]
pub struct Entry { pub struct Entry {
title: String, title: String,
description: String, description: String,
@ -703,10 +694,25 @@ async fn delete_collection(
let future_vec = entries let future_vec = entries
.iter() .iter()
.map(|(_, entry)| conn.delete(&entry.filename, &entry.delete_token)) .map(|(_, entry)| {
let (tx, rx) = tokio::sync::oneshot::channel();
let entry: Entry = entry.clone();
let conn = conn.clone();
actix_rt::spawn(async move {
let _ = tx.send(conn.delete(&entry.filename, &entry.delete_token).await);
});
rx
})
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let results = futures::future::join_all(future_vec).await; let mut results = Vec::new();
for rx in future_vec {
results.push(
rx.await
.map_err(|_| Error::UploadString("Canceled".to_string()))
.stateful(&state)?,
);
}
// Only bail before deleting collection if all images failed deletion // Only bail before deleting collection if all images failed deletion
// It is possible that some images were already deleted // It is possible that some images were already deleted
@ -732,17 +738,11 @@ fn rendered(
) -> Result<HttpResponse, Error> { ) -> Result<HttpResponse, Error> {
let mut cursor = Cursor::new(vec![]); let mut cursor = Cursor::new(vec![]);
(f)(&mut cursor)?; (f)(&mut cursor)?;
let mut html = cursor.into_inner(); let html = cursor.into_inner();
let len = minify_html::in_place( let output = minify_html::minify(&html, &minify_html::Cfg::spec_compliant());
&mut html, drop(html);
&minify_html::Cfg {
minify_js: true,
minify_css: true,
},
)?;
html.truncate(len);
Ok(builder Ok(builder
.content_type(mime::TEXT_HTML.essence_str()) .content_type(mime::TEXT_HTML.essence_str())
.body(html)) .body(output))
} }

View file

@ -1,13 +1,10 @@
use actix_web::{ use actix_web::{middleware::Logger, App, HttpServer};
middleware::{Compress, Logger},
App, HttpServer,
};
use awc::Client; use awc::Client;
use std::time::Duration; use std::time::Duration;
use structopt::StructOpt; use structopt::StructOpt;
#[actix_web::main] #[actix_web::main]
async fn main() -> Result<(), anyhow::Error> { async fn main() -> Result<(), Box<dyn std::error::Error>> {
if std::env::var("RUST_LOG").is_err() { if std::env::var("RUST_LOG").is_err() {
std::env::set_var("RUST_LOG", "info,pict_rs_aggregator=info,actix_web=info"); std::env::set_var("RUST_LOG", "info,pict_rs_aggregator=info,actix_web=info");
} }
@ -26,7 +23,6 @@ async fn main() -> Result<(), anyhow::Error> {
.finish(); .finish();
App::new() App::new()
.wrap(Compress::default())
.wrap(Logger::default()) .wrap(Logger::default())
.service(pict_rs_aggregator::service(client, state.clone())) .service(pict_rs_aggregator::service(client, state.clone()))
}) })

View file

@ -3,13 +3,16 @@ use actix_web::{
http::StatusCode, http::StatusCode,
web, FromRequest, HttpMessage, HttpRequest, HttpResponse, ResponseError, web, FromRequest, HttpMessage, HttpRequest, HttpResponse, ResponseError,
}; };
use futures::{ use std::{
channel::oneshot, future::{ready, Future, Ready},
future::{ok, LocalBoxFuture, Ready}, pin::Pin,
task::{Context, Poll},
}; };
use std::task::{Context, Poll}; use tokio::sync::oneshot;
use uuid::Uuid; use uuid::Uuid;
type LocalBoxFuture<'a, T> = Pin<Box<dyn Future<Output = T> + 'a>>;
pub(crate) struct Verify; pub(crate) struct Verify;
pub(crate) struct VerifyMiddleware<S>(S); pub(crate) struct VerifyMiddleware<S>(S);
@ -76,7 +79,7 @@ where
type Future = Ready<Result<Self::Transform, Self::InitError>>; type Future = Ready<Result<Self::Transform, Self::InitError>>;
fn new_transform(&self, service: S) -> Self::Future { fn new_transform(&self, service: S) -> Self::Future {
ok(VerifyMiddleware(service)) ready(Ok(VerifyMiddleware(service)))
} }
} }