Skip to content

Commit df2d12e

Browse files
committed
targeting - input - Change timestamp from u64 to DateTime
1 parent ac2dcf2 commit df2d12e

File tree

4 files changed

+18
-16
lines changed

4 files changed

+18
-16
lines changed

primitives/src/channel.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,18 +348,21 @@ mod test {
348348
let prefixed_value = serde_json::Value::String(prefixed_string.clone());
349349

350350
// Deserialization from JSON
351-
let de_hex_json = serde_json::from_value::<ChannelId>(hex_value.clone())
351+
let de_hex_json =
352+
serde_json::from_value::<ChannelId>(hex_value.clone()).expect("Should deserialize");
353+
let de_prefixed_json = serde_json::from_value::<ChannelId>(prefixed_value.clone())
352354
.expect("Should deserialize");
353-
let de_prefixed_json =
354-
serde_json::from_value::<ChannelId>(prefixed_value.clone()).expect("Should deserialize");
355355

356356
assert_eq!(de_hex_json, expected_id);
357357
assert_eq!(de_prefixed_json, expected_id);
358358

359359
// Serialization to JSON
360360
let actual_serialized = serde_json::to_value(expected_id).expect("Should Serialize");
361361
// we don't expect any capitalization
362-
assert_eq!(actual_serialized, serde_json::Value::String(prefixed_string))
362+
assert_eq!(
363+
actual_serialized,
364+
serde_json::Value::String(prefixed_string)
365+
)
363366
}
364367
}
365368

primitives/src/targeting/eval_test.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use chrono::{TimeZone, Utc};
2+
13
use super::*;
24
use crate::{
35
targeting::input,
@@ -20,7 +22,7 @@ fn get_default_input() -> Input {
2022
publisher_id: IDS["leader"],
2123
country: Some("bg".to_string()),
2224
event_type: "IMPRESSION".to_string(),
23-
seconds_since_epoch: 500,
25+
seconds_since_epoch: Utc.ymd(2020, 11, 06).and_hms(12, 0, 0),
2426
user_agent_os: Some("os".to_string()),
2527
user_agent_browser_family: Some("family".to_string()),
2628
},

primitives/src/targeting/input.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use super::{Error, Value};
22
use crate::{ToETHChecksum, ValidatorId, IPFS};
3+
use chrono::{serde::ts_seconds, DateTime, Utc};
34
use serde::{Deserialize, Serialize};
45

56
use field::{Field, GetField};
@@ -148,7 +149,8 @@ pub struct Global {
148149
pub publisher_id: ValidatorId,
149150
pub country: Option<String>,
150151
pub event_type: String,
151-
pub seconds_since_epoch: u64,
152+
#[serde(with = "ts_seconds")]
153+
pub seconds_since_epoch: DateTime<Utc>,
152154
#[serde(rename = "userAgentOS")]
153155
pub user_agent_os: Option<String>,
154156
pub user_agent_browser_family: Option<String>,
@@ -166,7 +168,8 @@ impl GetField for Global {
166168
field::Global::Country => self.country.clone().map(Value::String),
167169
field::Global::EventType => Some(Value::String(self.event_type.clone())),
168170
field::Global::SecondsSinceEpoch => {
169-
Some(Value::Number(self.seconds_since_epoch.into()))
171+
// no need to convert to u64, this value should always be positive
172+
Some(Value::new_number(self.seconds_since_epoch.timestamp()))
170173
}
171174
field::Global::UserAgentOS => self.user_agent_os.clone().map(Value::String),
172175
field::Global::UserAgentBrowserFamily => {
@@ -480,7 +483,7 @@ mod test {
480483
publisher_id: IDS["publisher"],
481484
country: Some("BG".into()),
482485
event_type: "IMPRESSION".into(),
483-
seconds_since_epoch: actual_date.timestamp() as u64,
486+
seconds_since_epoch: actual_date,
484487
user_agent_os: Some("Ubuntu".into()),
485488
user_agent_browser_family: Some("Firefox".into()),
486489
},

sentry/src/payout.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@ use primitives::{
77
BigNum, Channel, ValidatorId,
88
};
99
use slog::{error, Logger};
10-
use std::{
11-
cmp::{max, min},
12-
convert::TryFrom,
13-
};
10+
use std::cmp::{max, min};
1411

1512
type Result = std::result::Result<Option<(ValidatorId, BigNum)>, Error>;
1613

@@ -59,10 +56,7 @@ pub fn get_payout(logger: &Logger, channel: &Channel, event: &Event, session: &S
5956
publisher_id: *publisher,
6057
country: session.country.clone(),
6158
event_type: event_type.clone(),
62-
// **seconds** means calling `timestamp()`
63-
seconds_since_epoch: u64::try_from(Utc::now().timestamp()).expect(
64-
"The timestamp (i64) should not overflow or underflow the u64!",
65-
),
59+
seconds_since_epoch: Utc::now(),
6660
user_agent_os: session.os.clone(),
6761
user_agent_browser_family: None,
6862
},

0 commit comments

Comments
 (0)