From a57122e2c418af38dd0c288b7b03292d088b7a69 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Tue, 20 Aug 2024 16:34:39 +0200 Subject: [PATCH] refactor: split assertions Signed-off-by: David Dal Busco --- src/orbiter/src/assert/config.rs | 25 ++++++++++++++++++ .../src/{assert.rs => assert/constraints.rs} | 26 ++----------------- src/orbiter/src/assert/mod.rs | 2 ++ src/orbiter/src/lib.rs | 2 +- src/orbiter/src/store.rs | 2 +- 5 files changed, 31 insertions(+), 26 deletions(-) create mode 100644 src/orbiter/src/assert/config.rs rename src/orbiter/src/{assert.rs => assert/constraints.rs} (87%) create mode 100644 src/orbiter/src/assert/mod.rs diff --git a/src/orbiter/src/assert/config.rs b/src/orbiter/src/assert/config.rs new file mode 100644 index 000000000..01a0484f3 --- /dev/null +++ b/src/orbiter/src/assert/config.rs @@ -0,0 +1,25 @@ +use crate::memory::STATE; +use crate::msg::ERROR_FEATURE_NOT_ENABLED; +use crate::types::state::SatelliteConfig; +use junobuild_shared::types::state::SatelliteId; + +pub fn assert_enabled(satellite_id: &SatelliteId) -> Result<(), String> { + let config: Option = STATE.with(|state| { + let binding = state.borrow(); + let config = binding.heap.config.get(satellite_id); + + config.cloned() + }); + + // Enabling the analytics for a satellite is an opt-in feature + match config { + None => {} + Some(config) => { + if config.enabled { + return Ok(()); + } + } + } + + Err(ERROR_FEATURE_NOT_ENABLED.to_string()) +} diff --git a/src/orbiter/src/assert.rs b/src/orbiter/src/assert/constraints.rs similarity index 87% rename from src/orbiter/src/assert.rs rename to src/orbiter/src/assert/constraints.rs index cab36db0c..a2e2c5581 100644 --- a/src/orbiter/src/assert.rs +++ b/src/orbiter/src/assert/constraints.rs @@ -2,35 +2,13 @@ use crate::constants::{ KEY_MAX_LENGTH, LONG_STRING_MAX_LENGTH, METADATA_MAX_ELEMENTS, SHORT_STRING_MAX_LENGTH, STRING_MAX_LENGTH, }; -use crate::memory::STATE; -use crate::msg::{ERROR_BOT_CALL, ERROR_FEATURE_NOT_ENABLED}; +use crate::msg::ERROR_BOT_CALL; use crate::types::interface::{SetPageView, SetTrackEvent}; -use crate::types::state::{AnalyticKey, SatelliteConfig}; +use crate::types::state::AnalyticKey; use isbot::Bots; use junobuild_shared::types::state::SatelliteId; use junobuild_shared::utils::principal_not_equal; -pub fn assert_enabled(satellite_id: &SatelliteId) -> Result<(), String> { - let config: Option = STATE.with(|state| { - let binding = state.borrow(); - let config = binding.heap.config.get(satellite_id); - - config.cloned() - }); - - // Enabling the analytics for a satellite is an opt-in feature - match config { - None => {} - Some(config) => { - if config.enabled { - return Ok(()); - } - } - } - - Err(ERROR_FEATURE_NOT_ENABLED.to_string()) -} - pub fn assert_analytic_key_length(key: &AnalyticKey) -> Result<(), String> { if key.key.len() > KEY_MAX_LENGTH { return Err(format!( diff --git a/src/orbiter/src/assert/mod.rs b/src/orbiter/src/assert/mod.rs new file mode 100644 index 000000000..3134c2fab --- /dev/null +++ b/src/orbiter/src/assert/mod.rs @@ -0,0 +1,2 @@ +pub mod config; +pub mod constraints; diff --git a/src/orbiter/src/lib.rs b/src/orbiter/src/lib.rs index f9845cd18..1086dd7cf 100644 --- a/src/orbiter/src/lib.rs +++ b/src/orbiter/src/lib.rs @@ -16,7 +16,6 @@ use crate::analytics::{ analytics_page_views_clients, analytics_page_views_metrics, analytics_page_views_top_10, analytics_track_events, }; -use crate::assert::assert_enabled; use crate::config::store::{ del_satellite_config as del_satellite_config_store, get_satellite_configs, set_satellite_config as set_satellite_config_store, @@ -37,6 +36,7 @@ use crate::types::interface::{ SetTrackEvent, }; use crate::types::state::{AnalyticKey, HeapState, PageView, SatelliteConfigs, State, TrackEvent}; +use assert::config::assert_enabled; use ciborium::{from_reader, into_writer}; use ic_cdk::api::call::{arg_data, ArgDecoderConfig}; use ic_cdk::trap; diff --git a/src/orbiter/src/store.rs b/src/orbiter/src/store.rs index de898fe5a..18b89dc65 100644 --- a/src/orbiter/src/store.rs +++ b/src/orbiter/src/store.rs @@ -1,4 +1,4 @@ -use crate::assert::{ +use crate::assert::constraints::{ assert_analytic_key_length, assert_bot, assert_page_view_length, assert_satellite_id, assert_session_id, assert_track_event_length, };