diff --git a/validation/Cargo.lock b/validation/Cargo.lock index 9d0c502..1cd6cde 100644 --- a/validation/Cargo.lock +++ b/validation/Cargo.lock @@ -41,12 +41,6 @@ dependencies = [ "libc", ] -[[package]] -name = "anyhow" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" - [[package]] name = "api" version = "0.1.0" @@ -105,39 +99,6 @@ dependencies = [ "url", ] -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "atomic-waker" version = "1.1.2" @@ -150,53 +111,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -[[package]] -name = "axum" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower 0.5.2", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", -] - [[package]] name = "backtrace" version = "0.3.74" @@ -477,12 +391,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - [[package]] name = "encoding_rs" version = "0.8.35" @@ -688,19 +596,13 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.7.0", + "indexmap", "slab", "tokio", "tokio-util", "tracing", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.15.2" @@ -747,12 +649,6 @@ version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "hyper" version = "1.5.1" @@ -766,7 +662,6 @@ dependencies = [ "http", "http-body", "httparse", - "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -791,19 +686,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "hyper-timeout" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" -dependencies = [ - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - [[package]] name = "hyper-tls" version = "0.6.0" @@ -1001,16 +883,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.7.0" @@ -1018,7 +890,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown", ] [[package]] @@ -1027,15 +899,6 @@ version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.14" @@ -1113,20 +976,12 @@ dependencies = [ "rbx_dom_weak", "rbx_reflection_database", "rbx_xml", - "rust-grpc", "serde", "serde_json", "siphasher", "tokio", - "tonic", ] -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "memchr" version = "2.7.4" @@ -1402,40 +1257,6 @@ dependencies = [ "syn", ] -[[package]] -name = "prost" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-derive" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "prost-types" -version = "0.13.3-serde1" -source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/" -checksum = "8819b8aaed4d56560ff473ee45247539098b6fba5c8748a429903c499d5bc4a9" -dependencies = [ - "prost", - "serde", - "serde_json", -] - [[package]] name = "quote" version = "1.0.37" @@ -1676,18 +1497,6 @@ dependencies = [ "serde", ] -[[package]] -name = "rust-grpc" -version = "1.0.3" -source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/" -checksum = "9d241d8d3ce1f24ce54ead69478676d138526bc0d44bb51bea2d87e5d8e3af22" -dependencies = [ - "prost", - "prost-types", - "serde", - "tonic", -] - [[package]] name = "rustc-demangle" version = "0.1.24" @@ -1781,12 +1590,6 @@ dependencies = [ "untrusted", ] -[[package]] -name = "rustversion" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" - [[package]] name = "ryu" version = "1.0.18" @@ -2189,17 +1992,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-stream" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-util" version = "0.7.13" @@ -2234,76 +2026,6 @@ dependencies = [ "tokio-util", ] -[[package]] -name = "tonic" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" -dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.22.1", - "bytes", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-timeout", - "hyper-util", - "percent-encoding", - "pin-project", - "prost", - "socket2", - "tokio", - "tokio-stream", - "tower 0.4.13", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - [[package]] name = "tower-service" version = "0.3.3" diff --git a/validation/Cargo.toml b/validation/Cargo.toml index d3cbcc8..14f0c61 100644 --- a/validation/Cargo.toml +++ b/validation/Cargo.toml @@ -12,9 +12,7 @@ rbx_binary = { version = "0.7.4", registry = "strafesnet"} rbx_dom_weak = { version = "2.9.0", registry = "strafesnet"} rbx_reflection_database = { version = "0.2.12", registry = "strafesnet"} rbx_xml = { version = "0.13.3", registry = "strafesnet"} -rust-grpc = { version = "1.0.3", registry = "strafesnet" } serde = { version = "1.0.215", features = ["derive"] } serde_json = "1.0.133" siphasher = "1.0.1" tokio = { version = "1.41.1", features = ["macros", "rt-multi-thread", "signal"] } -tonic = "0.12.3" diff --git a/validation/src/main.rs b/validation/src/main.rs index 54a1cdd..0e9ab1b 100644 --- a/validation/src/main.rs +++ b/validation/src/main.rs @@ -14,7 +14,6 @@ pub enum StartupError{ NatsGetStream(async_nats::jetstream::context::GetStreamError), NatsConsumer(async_nats::jetstream::stream::ConsumerError), NatsStream(async_nats::jetstream::consumer::StreamError), - GRPCConnect(tonic::transport::Error), } impl std::fmt::Display for StartupError{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -23,9 +22,6 @@ impl std::fmt::Display for StartupError{ } impl std::error::Error for StartupError{} -// annoying mile-long type -pub type MapsServiceClient=rust_grpc::maps::maps_service_client::MapsServiceClient; - pub const GROUP_STRAFESNET:u64=6980477; pub const PARALLEL_REQUESTS:usize=16; @@ -56,18 +52,13 @@ async fn main()->Result<(),StartupError>{ .messages().await.map_err(StartupError::NatsStream) }; - // data-service grpc for creating map entries - let data_host=std::env::var("DATA_HOST").expect("DATA_HOST env required"); - let message_handler_fut=async{ - let maps_grpc=crate::MapsServiceClient::connect(data_host).await.map_err(StartupError::GRPCConnect)?; - Ok(message_handler::MessageHandler::new(cookie_context,api,maps_grpc)) - }; + let message_handler=message_handler::MessageHandler::new(cookie_context,api); // Create a signal listener for SIGTERM let mut sig_term=tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate()).expect("Failed to create SIGTERM signal listener"); // run futures - let (mut messages,message_handler)=tokio::try_join!(nats_fut,message_handler_fut)?; + let mut messages=nats_fut.await?; // process up to PARALLEL_REQUESTS in parallel let main_loop=async move{ diff --git a/validation/src/message_handler.rs b/validation/src/message_handler.rs index a15162e..db8b02d 100644 --- a/validation/src/message_handler.rs +++ b/validation/src/message_handler.rs @@ -27,10 +27,9 @@ impl MessageHandler{ pub fn new( cookie_context:rbx_asset::cookie::CookieContext, api:api::Context, - maps_grpc:crate::MapsServiceClient, )->Self{ Self{ - publish_new:crate::publish_new::Publisher::new(cookie_context.clone(),api.clone(),maps_grpc), + publish_new:crate::publish_new::Publisher::new(cookie_context.clone(),api.clone()), publish_fix:crate::publish_fix::Publisher::new(cookie_context.clone(),api.clone()), validator:crate::validator::Validator::new(cookie_context,api), } diff --git a/validation/src/publish_new.rs b/validation/src/publish_new.rs index 6778aad..9dbc2d4 100644 --- a/validation/src/publish_new.rs +++ b/validation/src/publish_new.rs @@ -7,7 +7,6 @@ pub enum PublishError{ Json(serde_json::Error), Create(rbx_asset::cookie::CreateError), SystemTime(std::time::SystemTimeError), - MapCreate(tonic::Status), ApiActionSubmissionPublish(api::Error), } impl std::fmt::Display for PublishError{ @@ -20,18 +19,15 @@ impl std::error::Error for PublishError{} pub struct Publisher{ roblox_cookie:rbx_asset::cookie::CookieContext, api:api::Context, - maps_grpc:crate::MapsServiceClient, } impl Publisher{ pub const fn new( roblox_cookie:rbx_asset::cookie::CookieContext, api:api::Context, - maps_grpc:crate::MapsServiceClient, )->Self{ Self{ roblox_cookie, api, - maps_grpc, } } pub async fn publish(&self,message:async_nats::jetstream::Message)->Result<(),PublishError>{ @@ -54,25 +50,6 @@ impl Publisher{ groupId:Some(crate::GROUP_STRAFESNET), },model_data).await.map_err(PublishError::Create)?; - // create the map entry in the game database, including release date - self.maps_grpc.clone().create(rust_grpc::maps::MapRequest{ - id:upload_response.AssetId as i64, - display_name:Some(publish_info.DisplayName), - creator:Some(publish_info.Creator), - game_id:Some(publish_info.GameID as i32), - // TODO: scheduling algorithm - date:Some( - // Publish one week from now - ( - std::time::SystemTime::now() - +std::time::Duration::from_secs(7*24*60*60) - ) - .duration_since(std::time::SystemTime::UNIX_EPOCH) - .map_err(PublishError::SystemTime)? - .as_secs() as i64 - ), - }).await.map_err(PublishError::MapCreate)?; - // mark submission as published self.api.action_submission_publish( api::SubmissionID(publish_info.SubmissionID)