From f52d020a3c3bade4d3869a465959a97830367e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois-Xavier=20Talbot?= <108630700+fetchfern@users.noreply.github.com> Date: Mon, 26 May 2025 17:21:52 -0400 Subject: [PATCH] Support specifying a region when creating servers (#3709) * Support specifying a region when creating servers * Remove hardcoded default server region --- apps/labrinth/src/routes/internal/billing.rs | 60 +++++++++++--------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/apps/labrinth/src/routes/internal/billing.rs b/apps/labrinth/src/routes/internal/billing.rs index b0dc2f58e..4fec9bb5b 100644 --- a/apps/labrinth/src/routes/internal/billing.rs +++ b/apps/labrinth/src/routes/internal/billing.rs @@ -997,6 +997,7 @@ pub enum ChargeRequestType { pub enum PaymentRequestMetadata { Pyro { server_name: Option, + server_region: Option, source: serde_json::Value, }, } @@ -1789,33 +1790,39 @@ pub async fn stripe_webhook( .await? .error_for_status()?; } else { - let (server_name, source) = if let Some( - PaymentRequestMetadata::Pyro { - ref server_name, - ref source, - }, - ) = - metadata.payment_metadata - { - (server_name.clone(), source.clone()) - } else { - // Create a server with the latest version of Minecraft - let minecraft_versions = crate::database::models::legacy_loader_fields::MinecraftGameVersion::list( - Some("release"), - None, - &**pool, - &redis, - ).await?; + let (server_name, server_region, source) = + if let Some( + PaymentRequestMetadata::Pyro { + ref server_name, + ref server_region, + ref source, + }, + ) = metadata.payment_metadata + { + ( + server_name.clone(), + server_region.clone(), + source.clone(), + ) + } else { + // Create a server with the latest version of Minecraft + let minecraft_versions = crate::database::models::legacy_loader_fields::MinecraftGameVersion::list( + Some("release"), + None, + &**pool, + &redis, + ).await?; - ( - None, - serde_json::json!({ - "loader": "Vanilla", - "game_version": minecraft_versions.first().map(|x| x.version.clone()), - "loader_version": "" - }), - ) - }; + ( + None, + None, + serde_json::json!({ + "loader": "Vanilla", + "game_version": minecraft_versions.first().map(|x| x.version.clone()), + "loader_version": "" + }), + ) + }; let server_name = server_name .unwrap_or_else(|| { @@ -1845,6 +1852,7 @@ pub async fn stripe_webhook( "swap_mb": swap, "storage_mb": storage, }, + "region": server_region, "source": source, "payment_interval": metadata.charge_item.subscription_interval.map(|x| match x { PriceDuration::Monthly => 1,