diff --git a/.forgejo/workflows/check.yaml b/.forgejo/workflows/check.yaml deleted file mode 100644 index 5f2176a..0000000 --- a/.forgejo/workflows/check.yaml +++ /dev/null @@ -1,27 +0,0 @@ -name: check - -on: - push: - branches: [master] - pull_request_target: - -jobs: - build: - runs-on: docker - steps: - - uses: https://code.forgejo.org/actions/checkout@v4 - - uses: https://github.com/actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 - - name: Build - run: cargo build - - check: - runs-on: docker - steps: - - uses: https://code.forgejo.org/actions/checkout@v4 - - uses: https://github.com/actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 - with: - components: clippy, rustfmt - - name: Run clippy - run: cargo clippy -- -D warnings - - name: Run rustfmt - run: cargo fmt --all -- --check diff --git a/.renovaterc b/.renovaterc index 9918a21..b36f3b4 100644 --- a/.renovaterc +++ b/.renovaterc @@ -3,7 +3,8 @@ "extends": [ "config:recommended", ":combinePatchMinorReleases", - ":enableVulnerabilityAlerts" + ":enableVulnerabilityAlerts", + ":rebaseStalePrs" ], "prConcurrentLimit": 10, "branchPrefix": "renovate/" diff --git a/Cargo.lock b/Cargo.lock index 5a4eaac..dba4f3b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,17 +26,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "async-trait" -version = "0.1.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "autocfg" version = "1.3.0" @@ -45,13 +34,13 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" -version = "0.7.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ - "async-trait", "axum-core", "bytes", + "form_urlencoded", "futures-util", "http", "http-body", @@ -69,9 +58,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", - "tower 0.4.13", + "tower", "tower-layer", "tower-service", "tracing", @@ -79,20 +68,19 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" dependencies = [ - "async-trait", "bytes", - "futures-util", + "futures-core", "http", "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -170,27 +158,27 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "color-eyre" -version = "0.6.5" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" +checksum = "e6e1761c0e16f8883bbbb8ce5990867f4f06bf11a0253da6495a04ce4b6ef0ec" dependencies = [ "backtrace", "color-spantrace", "eyre", "indenter", "once_cell", - "owo-colors", + "owo-colors 4.2.0", "tracing-error", ] [[package]] name = "color-spantrace" -version = "0.3.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" dependencies = [ "once_cell", - "owo-colors", + "owo-colors 3.5.0", "tracing-core", "tracing-error", ] @@ -539,9 +527,9 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "memchr" @@ -689,6 +677,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + [[package]] name = "owo-colors" version = "4.2.0" @@ -724,26 +718,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "pin-project-lite" version = "0.2.14" @@ -944,9 +918,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" -version = "0.12.20" +version = "0.12.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +checksum = "e98ff6b0dbbe4d5a37318f433d4fc82babd21631f194d370409ceb2e40b2f0b5" dependencies = [ "base64", "bytes", @@ -957,8 +931,11 @@ dependencies = [ "hyper", "hyper-rustls", "hyper-util", + "ipnet", "js-sys", "log", + "mime", + "once_cell", "percent-encoding", "pin-project-lite", "quinn", @@ -967,10 +944,10 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tokio-rustls", - "tower 0.5.2", + "tower", "tower-http", "tower-service", "url", @@ -1210,12 +1187,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.1" @@ -1308,22 +1279,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "tower" version = "0.5.2" @@ -1333,17 +1288,18 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tower-layer", "tower-service", + "tracing", ] [[package]] name = "tower-http" -version = "0.6.5" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc2d9e086a412a451384326f521c8123a99a466b329941a9403696bff9b0da2" +checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e" dependencies = [ "bitflags", "bytes", @@ -1352,7 +1308,7 @@ dependencies = [ "http-body", "iri-string", "pin-project-lite", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", ] diff --git a/Cargo.toml b/Cargo.toml index 60d6aff..8bd6e7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" license = "EUPL-1.2" [dependencies] -axum = "0.7.5" +axum = "0.8.0" color-eyre = "0.6.3" mlua = { version = "0.10.0", features = ["luajit", "macros", "serialize", "vendored"] } reqwest = { version = "0.12.7", default-features = false, features = ["json", "rustls-tls"] } diff --git a/src/types.rs b/src/types.rs index 2d52ab0..82002f0 100644 --- a/src/types.rs +++ b/src/types.rs @@ -4,14 +4,14 @@ use mlua::IntoLua; use serde::{Deserialize, Serialize}; /// Converts a `serde_json::Value` to a `mlua::Value`. -fn json_to_lua(value: serde_json::Value, lua: &mlua::Lua) -> mlua::Result { +fn json_to_lua(value: serde_json::Value, lua: &mlua::Lua) -> mlua::Result> { match value { serde_json::Value::Null => Ok(mlua::Value::Nil), serde_json::Value::Bool(value) => Ok(mlua::Value::Boolean(value)), serde_json::Value::Number(value) => match value.as_f64() { Some(number) => Ok(mlua::Value::Number(number)), None => Err(mlua::Error::ToLuaConversionError { - from: String::from("serde_json::Value::Number"), + from: "serde_json::Value::Number", to: "Number", message: Some("Number cannot be represented by a floating-point type".into()), }), @@ -52,8 +52,8 @@ pub(crate) struct ApiEvent { pub status: u16, } -impl IntoLua for ApiEvent { - fn into_lua(self, lua: &mlua::Lua) -> mlua::Result { +impl<'lua> IntoLua<'lua> for ApiEvent { + fn into_lua(self, lua: &'lua mlua::Lua) -> mlua::Result> { let headers = lua.create_table_with_capacity(0, self.headers.len())?; for (k, v) in self.headers { let k = lua.create_string(k)?; diff --git a/src/worker/lua.rs b/src/worker/lua.rs index 669c4ee..6ef1ad7 100644 --- a/src/worker/lua.rs +++ b/src/worker/lua.rs @@ -1,6 +1,6 @@ use std::sync::mpsc::Receiver; -use color_eyre::{eyre, Result}; +use color_eyre::Result; use mlua::{Function, IntoLua as _, Lua, LuaSerdeExt}; use tokio::sync::mpsc::UnboundedSender; @@ -96,23 +96,23 @@ pub fn worker( Event::Webhook(data) => { tracing::trace!(id = data.topic, "Received webhook event"); let data = lua.to_value(&data)?; - event_fn.call(("webhook", data))? + event_fn.call::<_, ()>(("webhook", data))? } Event::Api(data) => { tracing::trace!(id = data.id, status = data.status, "Received api event"); let data = data.into_lua(&lua)?; - event_fn.call(("api", data))? + event_fn.call::<_, ()>(("api", data))? } Event::Error(data) => { tracing::trace!(id = data.id, message = data.message, "Received error event"); let data = lua.to_value(&data)?; - event_fn.call(("error", data))? + event_fn.call::<_, ()>(("error", data))? } } } Ok(()) - }).map_err(|e| eyre::eyre!("{:?}", e))?; + })?; Ok(()) }