diff --git a/adview-manager/src/lib.rs b/adview-manager/src/lib.rs index 9a6b89085..4f816e465 100644 --- a/adview-manager/src/lib.rs +++ b/adview-manager/src/lib.rs @@ -3,6 +3,7 @@ use adex_primitives::{ campaign::Validators, + sentry::Event, supermarket::units_for_slot, supermarket::units_for_slot::response::{AdUnit, Campaign}, targeting::{self, input}, @@ -72,18 +73,6 @@ pub struct HistoryEntry { slot_id: IPFS, } -#[derive(Serialize)] -#[serde(rename_all = "camelCase")] -struct Event { - #[serde(rename = "type")] - event_type: String, - publisher: Address, - ad_unit: IPFS, - ad_slot: IPFS, - #[serde(rename = "ref")] - referrer: String, -} - #[derive(Serialize)] struct EventBody { events: Vec, @@ -211,19 +200,26 @@ pub fn get_unit_html_with_events( validators: &Validators, no_impression: impl Into, ) -> String { - let get_body = |event_type: &str| EventBody { - events: vec![Event { - event_type: event_type.to_string(), - publisher: options.publisher_addr, - ad_unit: ad_unit.id, - ad_slot: options.market_slot, - referrer: "document.referrer".to_string(), - }], - }; - let get_fetch_code = |event_type: &str| -> String { - let body = serde_json::to_string(&get_body(event_type)) - .expect("It should always serialize EventBody"); + let event = match event_type { + "CLICK" => Event::Click { + publisher: options.publisher_addr, + ad_unit: Some(ad_unit.id), + ad_slot: Some(options.market_slot), + referrer: Some("document.referrer".to_string()), + }, + _ => Event::Impression { + publisher: options.publisher_addr, + ad_unit: Some(ad_unit.id), + ad_slot: Some(options.market_slot), + referrer: Some("document.referrer".to_string()), + }, + }; + let event_body = EventBody { + events: vec![event], + }; + let body = + serde_json::to_string(&event_body).expect("It should always serialize EventBody"); let fetch_opts = format!("var fetchOpts = {{ method: 'POST', headers: {{ 'content-type': 'application/json' }}, body: {} }};", body); @@ -231,7 +227,7 @@ pub fn get_unit_html_with_events( .iter() .map(|validator| { let fetch_url = format!( - "{}/channel/{}/events?pubAddr={}", + "{}/campaign/{}/events?pubAddr={}", validator.url, campaign_id, options.publisher_addr );