fold cdn configs in
This commit is contained in:
1 parent
e07bf35cd0
commit
7a88118349
8 files changed
+55
-48
No files matched your search
Generated
+9
@@ -313,6 +313,7 @@ dependencies = [
|
|||||||
"actix-http",
|
"actix-http",
|
||||||
"actix-rt",
|
"actix-rt",
|
||||||
"actix-web",
|
"actix-web",
|
||||||
|
"domains",
|
||||||
"log",
|
"log",
|
||||||
"server_environment",
|
"server_environment",
|
||||||
"speculoos",
|
"speculoos",
|
||||||
@@ -2688,6 +2689,13 @@ dependencies = [
|
|||||||
"litrs",
|
"litrs",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "domains"
|
||||||
|
version = "0.0.1"
|
||||||
|
dependencies = [
|
||||||
|
"url",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dotenv"
|
name = "dotenv"
|
||||||
version = "0.15.0"
|
version = "0.15.0"
|
||||||
@@ -8715,6 +8723,7 @@ dependencies = [
|
|||||||
"datetimes",
|
"datetimes",
|
||||||
"derive_more 0.99.17",
|
"derive_more 0.99.17",
|
||||||
"diesel",
|
"diesel",
|
||||||
|
"domains",
|
||||||
"easyenv",
|
"easyenv",
|
||||||
"elasticsearch",
|
"elasticsearch",
|
||||||
"elasticsearch_schema",
|
"elasticsearch_schema",
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ members = [
|
|||||||
"crates/lib/files/zip_archives",
|
"crates/lib/files/zip_archives",
|
||||||
"crates/lib/http_headers",
|
"crates/lib/http_headers",
|
||||||
"crates/lib/jobs_common",
|
"crates/lib/jobs_common",
|
||||||
|
"crates/lib/domains",
|
||||||
"crates/lib/jwt_light",
|
"crates/lib/jwt_light",
|
||||||
"crates/lib/opaque_cursors",
|
"crates/lib/opaque_cursors",
|
||||||
"crates/lib/jwt_signer",
|
"crates/lib/jwt_signer",
|
||||||
@@ -252,6 +253,7 @@ grok_api_client = { path = "crates/api_clients/grok_api_client" }
|
|||||||
rootly_client = { path = "crates/api_clients/rootly_client" }
|
rootly_client = { path = "crates/api_clients/rootly_client" }
|
||||||
rootly_config = { path = "crates/schema/config/rootly_config" }
|
rootly_config = { path = "crates/schema/config/rootly_config" }
|
||||||
shared_env_var_config = { path = "crates/schema/config/shared_env_var_config" }
|
shared_env_var_config = { path = "crates/schema/config/shared_env_var_config" }
|
||||||
|
domains = { path = "crates/lib/domains" }
|
||||||
http_headers = { path = "crates/lib/http_headers" }
|
http_headers = { path = "crates/lib/http_headers" }
|
||||||
images = { path = "crates/lib/files/images" }
|
images = { path = "crates/lib/files/images" }
|
||||||
jobs_common = { path = "crates/lib/jobs_common" }
|
jobs_common = { path = "crates/lib/jobs_common" }
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
//! Media CDN domains.
|
|
||||||
|
|
||||||
use crate::{Domain, domain};
|
|
||||||
|
|
||||||
/// Production media CDN. Serves both FakeYou and Storyteller media.
|
|
||||||
pub const FAKEYOU_CDN: Domain = domain!("cdn-2.fakeyou.com");
|
|
||||||
|
|
||||||
/// Storyteller Studio static assets.
|
|
||||||
pub const STORYTELLER_CDN: Domain = domain!("cdn.storyteller.ai");
|
|
||||||
|
|
||||||
/// Development media bucket (Cloudflare R2 public bucket URL).
|
|
||||||
pub const DEVELOPMENT_CDN: Domain = domain!("pub-c8a4a5bdbdb048f286b77bdf9f786ff2.r2.dev");
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn fakeyou_cdn() {
|
|
||||||
assert_eq!(FAKEYOU_CDN.bare_domain(), "cdn-2.fakeyou.com");
|
|
||||||
assert_eq!(FAKEYOU_CDN.https_link_without_path(), "https://cdn-2.fakeyou.com");
|
|
||||||
assert_eq!(FAKEYOU_CDN.https_link_with_root_path(), "https://cdn-2.fakeyou.com/");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn storyteller_cdn() {
|
|
||||||
assert_eq!(STORYTELLER_CDN.https_link_without_path(), "https://cdn.storyteller.ai");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn development_cdn() {
|
|
||||||
assert_eq!(DEVELOPMENT_CDN.https_link_without_path(), "https://pub-c8a4a5bdbdb048f286b77bdf9f786ff2.r2.dev");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "url")]
|
|
||||||
#[test]
|
|
||||||
fn cdn_urls() {
|
|
||||||
assert_eq!(FAKEYOU_CDN.https_url().as_str(), "https://cdn-2.fakeyou.com/");
|
|
||||||
assert_eq!(DEVELOPMENT_CDN.https_url().as_str(), "https://pub-c8a4a5bdbdb048f286b77bdf9f786ff2.r2.dev/");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
//! FakeYou domains. The FakeYou CDN lives in [`crate::cdn`].
|
//! FakeYou domains.
|
||||||
|
|
||||||
use crate::{Domain, domain};
|
use crate::{Domain, domain};
|
||||||
|
|
||||||
@@ -17,6 +17,13 @@ pub const FAKEYOU_STAGING: Domain = domain!("staging.fakeyou.com");
|
|||||||
pub const FAKEYOU_DEV: Domain = domain!("dev.fakeyou.com");
|
pub const FAKEYOU_DEV: Domain = domain!("dev.fakeyou.com");
|
||||||
pub const FAKEYOU_DEV_PROXY: Domain = domain!("devproxy.fakeyou.com");
|
pub const FAKEYOU_DEV_PROXY: Domain = domain!("devproxy.fakeyou.com");
|
||||||
|
|
||||||
|
/// Production media CDN. Serves both FakeYou and Storyteller media.
|
||||||
|
pub const FAKEYOU_CDN: Domain = domain!("cdn-2.fakeyou.com");
|
||||||
|
|
||||||
|
/// Development media CDN (a Cloudflare R2 public bucket). Serves both FakeYou
|
||||||
|
/// and Storyteller development media, like `FAKEYOU_CDN` does in production.
|
||||||
|
pub const FAKEYOU_DEV_CDN: Domain = domain!("pub-c8a4a5bdbdb048f286b77bdf9f786ff2.r2.dev");
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -44,4 +51,27 @@ mod tests {
|
|||||||
assert_eq!(FAKEYOU_DEV.bare_domain(), "dev.fakeyou.com");
|
assert_eq!(FAKEYOU_DEV.bare_domain(), "dev.fakeyou.com");
|
||||||
assert_eq!(FAKEYOU_DEV_PROXY.bare_domain(), "devproxy.fakeyou.com");
|
assert_eq!(FAKEYOU_DEV_PROXY.bare_domain(), "devproxy.fakeyou.com");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mod cdn {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn production() {
|
||||||
|
assert_eq!(FAKEYOU_CDN.bare_domain(), "cdn-2.fakeyou.com");
|
||||||
|
assert_eq!(FAKEYOU_CDN.https_link_without_path(), "https://cdn-2.fakeyou.com");
|
||||||
|
assert_eq!(FAKEYOU_CDN.https_link_with_root_path(), "https://cdn-2.fakeyou.com/");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn development() {
|
||||||
|
assert_eq!(FAKEYOU_DEV_CDN.https_link_without_path(), "https://pub-c8a4a5bdbdb048f286b77bdf9f786ff2.r2.dev");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "url")]
|
||||||
|
#[test]
|
||||||
|
fn urls() {
|
||||||
|
assert_eq!(FAKEYOU_CDN.https_url().as_str(), "https://cdn-2.fakeyou.com/");
|
||||||
|
assert_eq!(FAKEYOU_DEV_CDN.https_url().as_str(), "https://pub-c8a4a5bdbdb048f286b77bdf9f786ff2.r2.dev/");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -9,7 +9,6 @@
|
|||||||
//! Enable the `url` feature for `Domain::https_url()`, a cached `&'static url::Url`.
|
//! Enable the `url` feature for `Domain::https_url()`, a cached `&'static url::Url`.
|
||||||
|
|
||||||
pub mod artcraft;
|
pub mod artcraft;
|
||||||
pub mod cdn;
|
|
||||||
pub mod fakeyou;
|
pub mod fakeyou;
|
||||||
pub mod storyteller;
|
pub mod storyteller;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
//! Storyteller domains. The Storyteller CDN lives in [`crate::cdn`].
|
//! Storyteller domains. Storyteller media is served from `fakeyou::FAKEYOU_CDN`.
|
||||||
|
|
||||||
use crate::{Domain, domain};
|
use crate::{Domain, domain};
|
||||||
|
|
||||||
@@ -30,6 +30,9 @@ pub const STORYTELLER_3D: Domain = domain!("3d.storyteller.ai");
|
|||||||
pub const STORYTELLER_DEV: Domain = domain!("dev.storyteller.ai");
|
pub const STORYTELLER_DEV: Domain = domain!("dev.storyteller.ai");
|
||||||
pub const STORYTELLER_DEV_PROXY: Domain = domain!("devproxy.storyteller.ai");
|
pub const STORYTELLER_DEV_PROXY: Domain = domain!("devproxy.storyteller.ai");
|
||||||
|
|
||||||
|
/// Storyteller Studio static assets.
|
||||||
|
pub const STORYTELLER_CDN: Domain = domain!("cdn.storyteller.ai");
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -66,4 +69,9 @@ mod tests {
|
|||||||
assert_eq!(STORYTELLER_DEV.bare_domain(), "dev.storyteller.ai");
|
assert_eq!(STORYTELLER_DEV.bare_domain(), "dev.storyteller.ai");
|
||||||
assert_eq!(STORYTELLER_DEV_PROXY.bare_domain(), "devproxy.storyteller.ai");
|
assert_eq!(STORYTELLER_DEV_PROXY.bare_domain(), "devproxy.storyteller.ai");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cdn() {
|
||||||
|
assert_eq!(STORYTELLER_CDN.https_link_without_path(), "https://cdn.storyteller.ai");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
use crate::http_server::common_responses::media::media_domain::MediaDomain;
|
use crate::http_server::common_responses::media::media_domain::MediaDomain;
|
||||||
use domains::Domain;
|
use domains::Domain;
|
||||||
use domains::cdn::{DEVELOPMENT_CDN, FAKEYOU_CDN};
|
use domains::fakeyou::{FAKEYOU_CDN, FAKEYOU_DEV_CDN};
|
||||||
use server_environment::ServerEnvironment;
|
use server_environment::ServerEnvironment;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
@@ -8,8 +8,8 @@ use url::Url;
|
|||||||
const FAKEYOU_PRODUCTION: Domain = FAKEYOU_CDN;
|
const FAKEYOU_PRODUCTION: Domain = FAKEYOU_CDN;
|
||||||
const STORYTELLER_PRODUCTION: Domain = FAKEYOU_CDN;
|
const STORYTELLER_PRODUCTION: Domain = FAKEYOU_CDN;
|
||||||
|
|
||||||
const FAKEYOU_DEVELOPMENT: Domain = DEVELOPMENT_CDN;
|
const FAKEYOU_DEVELOPMENT: Domain = FAKEYOU_DEV_CDN;
|
||||||
const STORYTELLER_DEVELOPMENT: Domain = DEVELOPMENT_CDN;
|
const STORYTELLER_DEVELOPMENT: Domain = FAKEYOU_DEV_CDN;
|
||||||
|
|
||||||
// TODO(bt,2025-01-31): Perhaps this should be config driven and configurable at runtime instead of hardcoded.
|
// TODO(bt,2025-01-31): Perhaps this should be config driven and configurable at runtime instead of hardcoded.
|
||||||
pub fn get_cdn_host(media_domain: MediaDomain, server_environment: ServerEnvironment) -> &'static str {
|
pub fn get_cdn_host(media_domain: MediaDomain, server_environment: ServerEnvironment) -> &'static str {
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
use domains::cdn::FAKEYOU_CDN;
|
use domains::fakeyou::FAKEYOU_CDN;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
/// Which domain to generate CDN, etc. links for.
|
/// Which domain to generate CDN, etc. links for.
|
||||||
|
|||||||
Reference in new issue
Block a user