@@ -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