From ab4d77e36e2d8bf9743dd79fdfe9eb31fc883e7d Mon Sep 17 00:00:00 2001 From: Frank Lyaruu Date: Thu, 21 Nov 2024 09:41:28 +0100 Subject: [PATCH 1/2] create configurable endpoint --- src/amplitude_payload.rs | 8 ++++++++ src/lib.rs | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/amplitude_payload.rs b/src/amplitude_payload.rs index 7032029..11883c7 100644 --- a/src/amplitude_payload.rs +++ b/src/amplitude_payload.rs @@ -6,6 +6,8 @@ use std::collections::HashMap; #[derive(Serialize, Debug, Default)] pub(crate) struct AmplitudePayload { api_key: String, + #[serde(skip)] + pub endpoint: String, pub(crate) events: Vec, options: AmplitudeOptions, } @@ -23,8 +25,14 @@ impl AmplitudePayload { } .to_string(); + let endpoint = cred + .get("endpoint") + .cloned() + .unwrap_or(crate::DEFAULT_ENDPOINT.to_owned()); + Ok(Self { api_key, + endpoint, options: AmplitudeOptions { min_id_length: Option::from(1), }, diff --git a/src/lib.rs b/src/lib.rs index 1137f41..6931b1a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,8 @@ use std::vec; wit_bindgen::generate!({world: "data-collection"}); export!(AmplitudeComponent); +const DEFAULT_ENDPOINT: &str = "https://api2.amplitude.com/2/httpapi"; + struct AmplitudeComponent; impl Guest for AmplitudeComponent { @@ -277,7 +279,7 @@ fn build_edgee_request(amplitude_payload: AmplitudePayload) -> EdgeeRequest { EdgeeRequest { method: exports::provider::HttpMethod::Post, - url: String::from("https://api2.amplitude.com/2/httpapi"), + url: amplitude_payload.endpoint.clone(), headers, body: serde_json::to_string(&litude_payload).unwrap(), } From 46dd20a7fd59177840440609798e14a3672f511a Mon Sep 17 00:00:00 2001 From: Frank Lyaruu Date: Thu, 21 Nov 2024 09:42:29 +0100 Subject: [PATCH 2/2] clippy fix --- src/amplitude_payload.rs | 2 +- src/lib.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/amplitude_payload.rs b/src/amplitude_payload.rs index 11883c7..5f24268 100644 --- a/src/amplitude_payload.rs +++ b/src/amplitude_payload.rs @@ -306,7 +306,7 @@ pub fn parse_value(value: &str) -> serde_json::Value { serde_json::Value::from(true) } else if value == "false" { serde_json::Value::from(false) - } else if let Some(_v) = value.parse::().ok() { + } else if let Ok(_v) = value.parse::() { serde_json::Value::Number(value.parse().unwrap()) } else { serde_json::Value::String(value.to_string()) diff --git a/src/lib.rs b/src/lib.rs index 6931b1a..29d8bb8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -195,7 +195,7 @@ impl Guest for AmplitudeComponent { properties.insert(key.clone(), parse_value(value)); } } - if properties.len() > 0 { + if !properties.is_empty() { event.event_properties = Some(serde_json::to_value(properties).unwrap()); } @@ -256,7 +256,7 @@ impl Guest for AmplitudeComponent { } } - if properties.len() > 0 { + if !properties.is_empty() { event.user_properties = Some(serde_json::to_value(properties).unwrap()); }