Skip to content

Commit 5e496b0

Browse files
committed
Handle server platform (ex: linux-server_x86_64)
1 parent c154786 commit 5e496b0

File tree

1 file changed

+46
-18
lines changed

1 file changed

+46
-18
lines changed

src/routes/version.rs

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ async fn game_version(
4040
})
4141
.await
4242
.cloned();
43-
let updater_release = match results_updater_release {
43+
let updater_releases = match results_updater_release {
4444
Ok(CachedReleased::Updater(updater_release)) => updater_release,
4545
Ok(CachedReleased::Game(_)) => unreachable!(),
4646
Err(err) => return Err(RouteError::ServerError(ErrorCause::Internal, err.into())),
@@ -56,31 +56,59 @@ async fn game_version(
5656
})
5757
.await
5858
.cloned();
59-
let game_release = match results_game_release {
59+
60+
drop(cache);
61+
62+
let game_releases = match results_game_release {
6063
Ok(CachedReleased::Game(game_release)) => game_release,
6164
Ok(CachedReleased::Updater(_)) => unreachable!(),
6265
Err(err) => return Err(RouteError::ServerError(ErrorCause::Internal, err.into())),
6366
};
6467

65-
let updater_filename = format!("{}_{}", platform, config.updater_filename);
68+
// remove the suffix (ex: -server) if any
69+
let mut updater_platform = platform.clone();
70+
if updater_platform.contains('-') {
71+
if let Some((platform, arch)) = updater_platform.split_once('_') {
72+
updater_platform = format!(
73+
"{}_{}",
74+
platform
75+
.split_once('-')
76+
.map_or(platform, |(before, _after)| before),
77+
arch
78+
);
79+
}
80+
}
81+
82+
let updater_filename = format!("{}_{}", updater_platform, config.updater_filename);
83+
let updater_binary = match updater_releases.get(&updater_filename) {
84+
Some(asset) => asset.clone(),
85+
None => {
86+
let msg = format!("No updater binary release found for platform '{updater_platform}'");
87+
log::error!("{msg}");
88+
return Err(RouteError::InvalidRequest(
89+
ServerErrorCode::NotFoundPlatform(updater_platform),
90+
msg,
91+
));
92+
}
93+
};
6694

67-
let (Some(updater), Some(binary)) = (
68-
updater_release.get(&updater_filename),
69-
game_release.binaries.get(&platform),
70-
) else {
71-
let msg = format!("No updater or game binary release found for platform '{platform}'");
72-
log::error!("{msg}");
73-
return Err(RouteError::InvalidRequest(
74-
ServerErrorCode::NotFoundPlatform(platform),
75-
msg,
76-
));
95+
let game_binary = match game_releases.binaries.get(&platform) {
96+
Some(asset) => asset.clone(),
97+
None => {
98+
let msg = format!("No game binary release found for platform '{platform}'");
99+
log::error!("{msg}");
100+
return Err(RouteError::InvalidRequest(
101+
ServerErrorCode::NotFoundPlatform(platform),
102+
msg,
103+
));
104+
}
77105
};
78106

79107
Ok(HttpResponse::Ok().json(GameVersion {
80-
assets: game_release.assets,
81-
assets_version: game_release.assets_version.to_string(),
82-
binaries: binary.clone(),
83-
updater: updater.clone(),
84-
version: game_release.version.to_string(),
108+
assets: game_releases.assets,
109+
assets_version: game_releases.assets_version.to_string(),
110+
binaries: game_binary,
111+
updater: updater_binary,
112+
version: game_releases.version.to_string(),
85113
}))
86114
}

0 commit comments

Comments
 (0)