Using web:block.

main
Heretic 7 months ago
parent f618c0d77b
commit 28bfa78d4b

44
Cargo.lock generated

@ -335,9 +335,9 @@ dependencies = [
[[package]]
name = "brotli-decompressor"
version = "2.5.0"
version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448"
checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@ -393,9 +393,9 @@ dependencies = [
[[package]]
name = "cpufeatures"
version = "0.2.10"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fbc60abd742b35f2492f808e1abbb83d45f72db402e14c55057edc9c7b1e9e4"
checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
dependencies = [
"libc",
]
@ -522,27 +522,27 @@ dependencies = [
[[package]]
name = "futures-core"
version = "0.3.28"
version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
[[package]]
name = "futures-sink"
version = "0.3.28"
version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
[[package]]
name = "futures-task"
version = "0.3.28"
version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
[[package]]
name = "futures-util"
version = "0.3.28"
version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
dependencies = [
"futures-core",
"futures-task",
@ -1051,9 +1051,9 @@ dependencies = [
[[package]]
name = "rustix"
version = "0.38.20"
version = "0.38.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0"
checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
dependencies = [
"bitflags 2.4.1",
"errno",
@ -1091,18 +1091,18 @@ checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
[[package]]
name = "serde"
version = "1.0.189"
version = "1.0.190"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537"
checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.189"
version = "1.0.190"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5"
checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3"
dependencies = [
"proc-macro2",
"quote",
@ -1508,18 +1508,18 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "zerocopy"
version = "0.7.15"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81ba595b9f2772fbee2312de30eeb80ec773b4cb2f1e8098db024afadda6c06f"
checksum = "ede7d7c7970ca2215b8c1ccf4d4f354c4733201dfaaba72d44ae5b37472e4901"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.15"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "772666c41fb6dceaf520b564b962d738a8e1a83b41bd48945f50837aed78bb1d"
checksum = "4b27b1bb92570f989aac0ab7e9cbfbacdd65973f7ee920d9f0e71ebac878fd0b"
dependencies = [
"proc-macro2",
"quote",

@ -13,9 +13,9 @@ actix-web = "4.4.0"
actix-files = "0.6.2"
env_logger = "0.10.0"
serde = "1.0.189"
serde = "1.0.190"
serde_json = "1.0.107"
serde_derive = "1.0.189"
serde_derive = "1.0.190"
anyhow = "1.0.75"

@ -17,13 +17,13 @@ use r2d2::{Pool, PooledConnection};
use r2d2_sqlite_pool::SqliteConnectionManager;
use rusqlite::params;
use std::{cmp, env, io, time::Duration};
use tokio::sync::Mutex;
use uuid::Uuid;
const DEFAULT_SIZE: usize = 25;
type Conn = PooledConnection<SqliteConnectionManager>;
#[derive(Clone)]
struct MyAppData {
etag: String,
pool: Pool<SqliteConnectionManager>,
@ -39,17 +39,18 @@ async fn main() -> io::Result<()> {
.connection_timeout(lifetime)
.build(manager)
.unwrap();
let my_app_data = Data::new(Mutex::new(MyAppData {
let my_app_data = MyAppData {
etag: Uuid::new_v4().to_string(),
pool,
}));
};
println!("Access me at {}", endpoint());
std::env::set_var("RUST_LOG", "actix_web=debug");
env_logger::init();
HttpServer::new(move || {
App::new()
.app_data(Data::clone(&my_app_data))
.app_data(Data::new(my_app_data.clone()))
.wrap(middleware::Logger::default())
.route("/service/search", web::get().to(search))
})
@ -75,24 +76,24 @@ struct SearchQuery {
async fn search(
query: web::Query<SearchQuery>,
data: Data<Mutex<MyAppData>>,
data: Data<MyAppData>,
) -> Result<HttpResponse, actix_web::Error> {
let my_app_data = data.lock().await;
let etag = my_app_data.etag.clone();
let conn = my_app_data
.pool
.get()
let etag = data.etag.clone();
let conn = web::block(move || data.pool.get())
.await?
.map_err(actix_web::error::ErrorBadRequest)?;
let res = search_query(query, conn)
.map(|body| {
HttpResponse::Ok()
.append_header(("Access-Control-Allow-Origin", "*"))
.append_header(("Cache-Control", "public, max-age=86400"))
.append_header(("ETag", etag))
.json(body)
})
let body = web::block(move || search_query(query, conn))
.await?
.map_err(actix_web::error::ErrorBadRequest)?;
Ok(res)
Ok(
HttpResponse::Ok()
.append_header(("Access-Control-Allow-Origin", "*"))
.append_header(("Cache-Control", "public, max-age=86400"))
.append_header(("ETag", etag))
.json(body),
)
}
fn search_query(query: web::Query<SearchQuery>, conn: Conn) -> Result<Vec<Torrent>> {

Loading…
Cancel
Save