diff --git a/src/utils.rs b/src/utils.rs index 5b76586..3df7e6a 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -237,8 +237,8 @@ pub fn parse_alias(msg:&Alias)-> Ruddermessage{ // modify batch payload to rudder format pub fn parse_batch(msg:&Batch)-> Ruddermessage{ - let mut modified_context = get_default_context(); - merge(&mut modified_context, msg.context.clone().unwrap_or(json!({}))); + let default_context = get_default_context(); + let batch_context = msg.context.clone().unwrap_or(json!({})); let original_timestamp; let sent_at = Utc::now(); @@ -253,8 +253,10 @@ pub fn parse_batch(msg:&Batch)-> Ruddermessage{ for i in &msg.batch { match i { BatchMessage::Identify(a_) =>{ - let mut final_context: Value = a_.context.clone().unwrap_or(json!({})); - merge(&mut final_context, modified_context.clone() ); + let mut event_context: Value = a_.context.clone().unwrap_or(json!({})); + let mut final_context: Value = batch_context.clone(); + merge(&mut final_context, event_context.clone()); + merge(&mut final_context, default_context.clone()); batch.push(Rudderbatchmessage::Identify(Rudderidentify { @@ -270,8 +272,10 @@ pub fn parse_batch(msg:&Batch)-> Ruddermessage{ })); }, BatchMessage::Track(a_) =>{ - let mut final_context: Value = a_.context.clone().unwrap_or(json!({})); - merge(&mut final_context, modified_context.clone()); + let mut event_context: Value = a_.context.clone().unwrap_or(json!({})); + let mut final_context: Value = batch_context.clone(); + merge(&mut final_context, event_context.clone()); + merge(&mut final_context, default_context.clone()); batch.push(Rudderbatchmessage::Track( Ruddertrack { @@ -289,8 +293,10 @@ pub fn parse_batch(msg:&Batch)-> Ruddermessage{ )); }, BatchMessage::Page(a_) =>{ - let mut final_context: Value = a_.context.clone().unwrap_or(json!({})); - merge(&mut final_context, modified_context.clone()); + let mut event_context: Value = a_.context.clone().unwrap_or(json!({})); + let mut final_context: Value = batch_context.clone(); + merge(&mut final_context, event_context.clone()); + merge(&mut final_context, default_context.clone()); batch.push(Rudderbatchmessage::Page( Rudderpage { @@ -308,8 +314,10 @@ pub fn parse_batch(msg:&Batch)-> Ruddermessage{ )); }, BatchMessage::Screen(a_) =>{ - let mut final_context: Value = a_.context.clone().unwrap_or(json!({})); - merge(&mut final_context, modified_context.clone()); + let mut event_context: Value = a_.context.clone().unwrap_or(json!({})); + let mut final_context: Value = batch_context.clone(); + merge(&mut final_context, event_context.clone()); + merge(&mut final_context, default_context.clone()); batch.push(Rudderbatchmessage::Screen( Rudderscreen { @@ -327,8 +335,10 @@ pub fn parse_batch(msg:&Batch)-> Ruddermessage{ )); }, BatchMessage::Group(a_) =>{ - let mut final_context: Value = a_.context.clone().unwrap_or(json!({})); - merge(&mut final_context, modified_context.clone()); + let mut event_context: Value = a_.context.clone().unwrap_or(json!({})); + let mut final_context: Value = batch_context.clone(); + merge(&mut final_context, event_context.clone()); + merge(&mut final_context, default_context.clone()); batch.push(Rudderbatchmessage::Group( Ruddergroup { @@ -346,8 +356,10 @@ pub fn parse_batch(msg:&Batch)-> Ruddermessage{ )); }, BatchMessage::Alias(a_) =>{ - let mut final_context: Value = a_.context.clone().unwrap_or(json!({})); - merge(&mut final_context, modified_context.clone()); + let mut event_context: Value = a_.context.clone().unwrap_or(json!({})); + let mut final_context: Value = batch_context.clone(); + merge(&mut final_context, event_context.clone()); + merge(&mut final_context, default_context.clone()); batch.push(Rudderbatchmessage::Alias( Rudderalias { @@ -370,7 +382,7 @@ pub fn parse_batch(msg:&Batch)-> Ruddermessage{ Rudderbatch { batch: batch, integrations: msg.integrations.clone(), - context: Some(modified_context), + context: Some(batch_context), r#type: String::from("batch"), original_timestamp: original_timestamp, sent_at: Some(sent_at),