Skip to content

Commit a3cac9c

Browse files
Removes prebid config for dynamic prebid backend
1 parent aea8068 commit a3cac9c

File tree

5 files changed

+41
-25
lines changed

5 files changed

+41
-25
lines changed

crates/common/src/backend.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use std::time::Duration;
22

3-
use error_stack::Report;
3+
use error_stack::{Report, ResultExt};
44
use fastly::backend::Backend;
5+
use url::Url;
56

67
use crate::error::TrustedServerError;
78

@@ -66,6 +67,21 @@ pub fn ensure_origin_backend(
6667
}
6768
}
6869
}
70+
pub fn ensure_backend_from_url(origin_url: &str) -> Result<String, Report<TrustedServerError>> {
71+
let parsed_url = Url::parse(origin_url).change_context(TrustedServerError::Proxy {
72+
message: format!("Invalid origin_url: {}", origin_url),
73+
})?;
74+
75+
let scheme = parsed_url.scheme();
76+
let host = parsed_url.host_str().ok_or_else(|| {
77+
Report::new(TrustedServerError::Proxy {
78+
message: "Missing host in origin_url".to_string(),
79+
})
80+
})?;
81+
let port = parsed_url.port();
82+
83+
ensure_origin_backend(scheme, host, port)
84+
}
6985

7086
#[cfg(test)]
7187
mod tests {

crates/common/src/prebid.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use fastly::http::{header, Method, StatusCode};
88
use fastly::{Error, Request, Response};
99
use serde_json::json;
1010

11+
use crate::backend::ensure_backend_from_url;
1112
use crate::constants::{
1213
HEADER_SYNTHETIC_FRESH, HEADER_SYNTHETIC_TRUSTED_SERVER, HEADER_X_COMPRESS_HINT,
1314
HEADER_X_CONSENT_ADVERTISING, HEADER_X_FORWARDED_FOR,
@@ -194,10 +195,17 @@ impl PrebidRequest {
194195
id
195196
);
196197

197-
req.set_body_json(&prebid_body)?;
198+
// TrustedServerError doesn't implement std::error::Error
199+
match ensure_backend_from_url(&settings.prebid.server_url) {
200+
Ok(backend_name) => {
201+
req.set_body_json(&prebid_body)?;
198202

199-
let resp = req.send("prebid_backend")?;
200-
Ok(resp)
203+
let resp = req.send(backend_name)?;
204+
Ok(resp)
205+
}
206+
207+
Err(e) => fastly::error::bail!("Could not get prebid backend: {}", e),
208+
}
201209
}
202210
}
203211

crates/common/src/prebid_proxy.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use fastly::http::{header, Method, StatusCode};
99
use fastly::{Request, Response};
1010
use serde_json::{json, Value};
1111

12+
use crate::backend::ensure_backend_from_url;
1213
use crate::constants::{HEADER_SYNTHETIC_FRESH, HEADER_SYNTHETIC_TRUSTED_SERVER};
1314
use crate::error::TrustedServerError;
1415
use crate::gdpr::get_consent_from_request;
@@ -78,10 +79,12 @@ pub async fn handle_prebid_auction(
7879

7980
log::info!("Sending request to Prebid Server");
8081

82+
let backend_name = ensure_backend_from_url(&settings.prebid.server_url)?;
83+
8184
// 5. Send to PBS and get response
8285
let mut pbs_response =
8386
pbs_req
84-
.send("prebid_backend")
87+
.send(backend_name)
8588
.change_context(TrustedServerError::Prebid {
8689
message: "Failed to send request to Prebid Server".to_string(),
8790
})?;
@@ -175,9 +178,12 @@ pub async fn handle_prebid_cookie_sync(
175178
})?;
176179

177180
// 4. Get response and transform sync URLs
181+
182+
let backend_name = ensure_backend_from_url(&settings.prebid.server_url)?;
183+
178184
let mut pbs_response =
179185
pbs_req
180-
.send("prebid_backend")
186+
.send(backend_name)
181187
.change_context(TrustedServerError::Prebid {
182188
message: "Failed to send cookie sync request".to_string(),
183189
})?;

crates/common/src/publisher.rs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use error_stack::{Report, ResultExt};
22
use fastly::http::{header, StatusCode};
33
use fastly::{Body, Request, Response};
4-
use url::Url;
54

6-
use crate::backend::ensure_origin_backend;
5+
use crate::backend::ensure_backend_from_url;
76
use crate::http_util::serve_static_with_etag;
87

98
use crate::constants::{
@@ -361,27 +360,15 @@ pub fn handle_publisher_request(
361360
has_synthetic_cookie
362361
);
363362

364-
let parsed_url =
365-
Url::parse(&settings.publisher.origin_url).change_context(TrustedServerError::Proxy {
366-
message: format!("Invalid origin_url: {}", settings.publisher.origin_url),
367-
})?;
368-
369-
let scheme = parsed_url.scheme();
370-
let origin_host = parsed_url.host_str().ok_or_else(|| {
371-
Report::new(TrustedServerError::Proxy {
372-
message: "Missing host in origin_url".to_string(),
373-
})
374-
})?;
375-
let port = parsed_url.port();
376-
377-
let backend_name = ensure_origin_backend(scheme, origin_host, port)?;
363+
let backend_name = ensure_backend_from_url(&settings.publisher.origin_url)?;
364+
let origin_host = settings.publisher.origin_host();
378365

379366
log::info!(
380367
"Proxying to dynamic backend: {} (from {})",
381368
backend_name,
382369
settings.publisher.origin_url
383370
);
384-
req.set_header("host", origin_host);
371+
req.set_header("host", &origin_host);
385372

386373
let mut response = req
387374
.send(&backend_name)

fastly.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ build = """
4444

4545
[local_server.backends.equativ_ad_api_2]
4646
url = "https://adapi-srv-eu.smartadserver.com"
47-
[local_server.backends.prebid_backend]
48-
url = "http://68.183.113.79:8000"
47+
4948
[local_server.backends.gam_backend]
5049
url = "https://securepubads.g.doubleclick.net"
5150
[local_server.backends.wordpress_backend]

0 commit comments

Comments
 (0)