Skip to content

Commit 9ab6f4c

Browse files
committed
primitives - supermarket - add Response
1 parent 10b7099 commit 9ab6f4c

File tree

3 files changed

+25
-13
lines changed

3 files changed

+25
-13
lines changed

Cargo.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

primitives/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ hex = "0.3.2"
2727
merkletree = "0.10.0"
2828
tiny-keccak = "1.5"
2929
rust-crypto = "0.2"
30+
url = { version = "2.1", features = ["serde"]}
3031
# Numbers - BigNum, Numbers, Traits and Derives
3132
num-bigint = { version = "0.2", features = ["serde"] }
3233
num = "0.2.0"

primitives/src/supermarket.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,24 +39,33 @@ pub enum Finalized {
3939
Exhausted,
4040
Withdraw,
4141
}
42-
4342
pub mod units_for_slot {
4443
pub mod response {
4544
use crate::{targeting::Rule, BigNum, ChannelId, ChannelSpec, SpecValidators, ValidatorId};
4645
use chrono::{
4746
serde::{ts_milliseconds, ts_milliseconds_option},
4847
DateTime, Utc,
4948
};
50-
use serde::Serialize;
49+
use serde::{Deserialize, Serialize};
50+
use url::Url;
51+
52+
#[derive(Debug, Serialize, Deserialize)]
53+
#[serde(rename_all = "camelCase")]
54+
pub struct Response {
55+
pub targeting_input_base: Vec<Rule>,
56+
pub accepted_referrers: Vec<Url>,
57+
pub fallback_unit: AdUnit,
58+
pub campaigns: Vec<Campaign>,
59+
}
5160

52-
#[derive(Debug, Serialize)]
61+
#[derive(Debug, Serialize, Deserialize)]
5362
#[serde(rename_all = "camelCase")]
5463
pub struct UnitsWithPrice {
5564
pub unit: AdUnit,
5665
pub price: BigNum,
5766
}
5867

59-
#[derive(Debug, Serialize)]
68+
#[derive(Debug, Serialize, Deserialize)]
6069
#[serde(rename_all = "camelCase")]
6170
pub struct Campaign {
6271
#[serde(flatten)]
@@ -65,7 +74,7 @@ pub mod units_for_slot {
6574
pub units_with_price: Vec<UnitsWithPrice>,
6675
}
6776

68-
#[derive(Debug, Serialize)]
77+
#[derive(Debug, Serialize, Deserialize)]
6978
#[serde(rename_all = "camelCase")]
7079
pub struct Channel {
7180
pub id: ChannelId,
@@ -87,7 +96,7 @@ pub mod units_for_slot {
8796
}
8897
}
8998

90-
#[derive(Debug, Serialize)]
99+
#[derive(Debug, Serialize, Deserialize)]
91100
#[serde(rename_all = "camelCase")]
92101
pub struct Spec {
93102
#[serde(with = "ts_milliseconds")]
@@ -114,7 +123,7 @@ pub mod units_for_slot {
114123
}
115124
}
116125

117-
#[derive(Debug, Serialize)]
126+
#[derive(Debug, Serialize, Deserialize, Clone)]
118127
#[serde(rename_all = "camelCase")]
119128
pub struct AdUnit {
120129
/// Same as `ipfs`
@@ -124,13 +133,13 @@ pub mod units_for_slot {
124133
pub target_url: String,
125134
}
126135

127-
impl From<crate::AdUnit> for AdUnit {
128-
fn from(ad_unit: crate::AdUnit) -> Self {
136+
impl From<&crate::AdUnit> for AdUnit {
137+
fn from(ad_unit: &crate::AdUnit) -> Self {
129138
Self {
130-
id: ad_unit.ipfs,
131-
media_url: ad_unit.media_url,
132-
media_mime: ad_unit.media_mime,
133-
target_url: ad_unit.target_url,
139+
id: ad_unit.ipfs.clone(),
140+
media_url: ad_unit.media_url.clone(),
141+
media_mime: ad_unit.media_mime.clone(),
142+
target_url: ad_unit.target_url.clone(),
134143
}
135144
}
136145
}

0 commit comments

Comments
 (0)