diff --git a/rc_chat_room/src/operations/mod.rs b/rc_chat_room/src/operations/mod.rs index a4bb3ad..7446e7c 100644 --- a/rc_chat_room/src/operations/mod.rs +++ b/rc_chat_room/src/operations/mod.rs @@ -11,6 +11,7 @@ use polariton_server::operations::OperationsHandler; pub fn handler(chat_system: crate::state::chat::ChatImpl, data_root: impl AsRef, conf: &rc_core::persist::config::ConfigImpl) -> OperationsHandler { OperationsHandler::new() + .modify(rc_core::polariton::OpIdCopy) .add(more_auth::MoreLobbyAuth::new(chat_system.clone(), data_root)) .add(chat_ignores::ignores_provider()) .add(pending_sanctions::pending_sanctions_checker()) diff --git a/rc_core/src/lib.rs b/rc_core/src/lib.rs index 12707cc..8e15c36 100644 --- a/rc_core/src/lib.rs +++ b/rc_core/src/lib.rs @@ -7,3 +7,5 @@ pub use state::UserState; pub mod persist; pub use persist::user::{UserImpl, UserProvider, UserAuthenticator}; pub use persist::config::{ConfigImpl, ConfigProvider}; + +pub mod polariton; diff --git a/rc_core/src/polariton/mod.rs b/rc_core/src/polariton/mod.rs new file mode 100644 index 0000000..4147b30 --- /dev/null +++ b/rc_core/src/polariton/mod.rs @@ -0,0 +1,2 @@ +mod svelto_uuid_copy; +pub use svelto_uuid_copy::OpIdCopy; diff --git a/rc_core/src/polariton/svelto_uuid_copy.rs b/rc_core/src/polariton/svelto_uuid_copy.rs new file mode 100644 index 0000000..7a5e199 --- /dev/null +++ b/rc_core/src/polariton/svelto_uuid_copy.rs @@ -0,0 +1,15 @@ +use polariton_server::operations::OperationModifier; + +pub struct OpIdCopy; + +impl OpIdCopy { + const SERVICE_MAPPING_KEY: u8 = 0; +} + +impl OperationModifier for OpIdCopy { + fn after(&self, req: &mut polariton::operation::OperationRequest, resp: &mut polariton::operation::OperationResponse) { + if let Some(svelto_service_id) = req.params.get(&Self::SERVICE_MAPPING_KEY) { + resp.params.insert(Self::SERVICE_MAPPING_KEY, svelto_service_id.to_owned()); + } + } +} diff --git a/rc_services_room/src/operations/mod.rs b/rc_services_room/src/operations/mod.rs index 5918d80..ed6eb08 100644 --- a/rc_services_room/src/operations/mod.rs +++ b/rc_services_room/src/operations/mod.rs @@ -85,6 +85,7 @@ use polariton_server::operations::OperationsHandler; pub fn handler(init_ctx: &crate::InitConfig) -> OperationsHandler { OperationsHandler::new() + .modify(rc_core::polariton::OpIdCopy) .add(eac::EacChallengeIgnorer) .add(more_auth::MoreLobbyAuth) .add(versioner::VersionTeller) diff --git a/rc_singleplayer_room/src/operations/mod.rs b/rc_singleplayer_room/src/operations/mod.rs index fe2eec2..92fefa0 100644 --- a/rc_singleplayer_room/src/operations/mod.rs +++ b/rc_singleplayer_room/src/operations/mod.rs @@ -6,6 +6,7 @@ use polariton_server::operations::OperationsHandler; pub fn handler() -> OperationsHandler { OperationsHandler::::new() + .modify(rc_core::polariton::OpIdCopy) .add(more_auth::MoreLobbyAuth) .add(eac::EacChallengeIgnorer) .add(load_ai_robots::tdm_machines_provider()) diff --git a/rc_social_room/src/operations/mod.rs b/rc_social_room/src/operations/mod.rs index 860ee71..bac5a8d 100644 --- a/rc_social_room/src/operations/mod.rs +++ b/rc_social_room/src/operations/mod.rs @@ -12,6 +12,7 @@ use polariton_server::operations::OperationsHandler; pub fn handler() -> OperationsHandler { OperationsHandler::::new() + .modify(rc_core::polariton::OpIdCopy) .add(more_auth::MoreLobbyAuth) //.add(polariton_server::operations::Ack::<33, _>::default()) // get user clan info (this is equivalent to not being in a clan) .add(friend_list::friends_provider()) // TODO friend object parsing Token: 0x0200169C RID: 5788