Skip to content

Commit 7d11d65

Browse files
committed
clean up, rustfmt & clippy
1 parent ae9f2fd commit 7d11d65

File tree

2 files changed

+31
-41
lines changed

2 files changed

+31
-41
lines changed

primitives/src/targeting.rs

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,11 @@
11
use crate::BigNum;
22
use serde::{Deserialize, Serialize};
3-
use std::{collections::HashMap, convert::TryFrom};
3+
use std::collections::HashMap;
44

55
pub use eval::*;
66

77
mod eval;
88

9-
pub trait TryGet: Serialize {
10-
const PATTERN: &'static str = ".";
11-
12-
fn try_get(&self, key: &str) -> Result<Value, Error> {
13-
let serde_value = serde_json::json!(self);
14-
let pointer = format!("/{pointer}", pointer = key.replace(Self::PATTERN, "/"));
15-
16-
match serde_value.pointer(&pointer) {
17-
Some(serde_value) => Value::try_from(serde_value.clone()),
18-
None => Err(Error::UnknownVariable),
19-
}
20-
}
21-
}
22-
239
#[derive(Debug, Serialize, Deserialize)]
2410
#[cfg_attr(test, derive(Default))]
2511
#[serde(rename_all = "camelCase")]
@@ -71,7 +57,9 @@ impl Input {
7157
)),
7258
"secondsSinceEpoch" => Ok(Value::Number(self.global.seconds_since_epoch.into())),
7359
"userAgentOS" => Ok(Value::String(self.global.user_agent_os.clone())),
74-
"userAgentBrowserFamily" => Ok(Value::String(self.global.user_agent_browser_family.clone())),
60+
"userAgentBrowserFamily" => {
61+
Ok(Value::String(self.global.user_agent_browser_family.clone()))
62+
}
7563
"adSlot.categories" => self
7664
.ad_slot
7765
.as_ref()
@@ -93,8 +81,8 @@ impl Input {
9381
let ad_slot = self.ad_slot.as_ref().ok_or(Error::UnknownVariable)?;
9482

9583
match serde_json::Number::from_f64(ad_slot.alexa_rank) {
96-
Some(number) => Ok(Value::Number(number)),
97-
None => Err(Error::TypeError)
84+
Some(number) => Ok(Value::Number(number)),
85+
None => Err(Error::TypeError),
9886
}
9987
}
10088
_unknown_field => Err(Error::UnknownVariable),

primitives/src/targeting/eval.rs

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
use crate::BigNum;
22
use serde::{Deserialize, Serialize};
33
use serde_json::{value::Value as SerdeValue, Number};
4-
use std::convert::TryFrom;
5-
use std::{fmt, str::FromStr};
4+
use std::{convert::TryFrom, fmt, str::FromStr};
65

76
pub type Map = serde_json::value::Map<String, SerdeValue>;
87

9-
use super::{Input, Output, TryGet};
8+
use super::{Input, Output};
109

1110
#[derive(Debug, Eq, PartialEq)]
1211
pub enum Error {
@@ -52,6 +51,28 @@ impl Value {
5251
}
5352
}
5453

54+
impl TryFrom<SerdeValue> for Value {
55+
type Error = Error;
56+
57+
fn try_from(serde_value: SerdeValue) -> Result<Self, Self::Error> {
58+
match serde_value {
59+
SerdeValue::Bool(bool) => Ok(Self::Bool(bool)),
60+
SerdeValue::Number(number) => Ok(Self::Number(number)),
61+
// String can be either a String or a BigNum
62+
// but we handle this case by using Type casting with the Function::Bn
63+
SerdeValue::String(string) => Ok(Value::String(string)),
64+
SerdeValue::Array(serde_array) => {
65+
let array = serde_array
66+
.into_iter()
67+
.map(Value::try_from)
68+
.collect::<Result<_, _>>()?;
69+
Ok(Self::Array(array))
70+
}
71+
SerdeValue::Object(_) | SerdeValue::Null => Err(Error::TypeError),
72+
}
73+
}
74+
}
75+
5576
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
5677
#[serde(rename_all = "camelCase")]
5778
// TODO: https://github.com/AdExNetwork/adex-validator-stack-rust/issues/296
@@ -94,26 +115,6 @@ impl Function {
94115
}
95116
}
96117

97-
impl TryFrom<SerdeValue> for Value {
98-
type Error = Error;
99-
100-
fn try_from(serde_value: SerdeValue) -> Result<Self, Self::Error> {
101-
match serde_value {
102-
SerdeValue::Bool(bool) => Ok(Self::Bool(bool)),
103-
SerdeValue::Number(number) => Ok(Self::Number(number)),
104-
SerdeValue::String(string) => Ok(Value::String(string)),
105-
SerdeValue::Array(serde_array) => {
106-
let array = serde_array
107-
.into_iter()
108-
.map(Value::try_from)
109-
.collect::<Result<_, _>>()?;
110-
Ok(Self::Array(array))
111-
}
112-
SerdeValue::Object(_) | SerdeValue::Null => Err(Error::TypeError),
113-
}
114-
}
115-
}
116-
117118
impl Value {
118119
pub fn try_bool(self) -> Result<bool, Error> {
119120
match self {
@@ -137,6 +138,7 @@ impl Value {
137138
/// - Number
138139
/// - String
139140
/// - Array
141+
/// - BigNum
140142
/// - Mutates output
141143
/// - Throws an error
142144
fn eval(input: &Input, output: &mut Output, rule: &Rule) -> Result<Option<Value>, Error> {

0 commit comments

Comments
 (0)