conduit_cli/core/engine/resolver/
loader.rs1use crate::core::domain::loader::Loader;
2use crate::core::engine::resolver::Resolver;
3use crate::errors::ConduitResult;
4
5pub struct ResolvedLoader {
6 pub url: String,
7 pub hash: String,
8 pub file_name: String,
9}
10
11impl Resolver {
12 pub async fn resolve_loader(
13 &self,
14 loader: &Loader,
15 mc_version: &str,
16 ) -> ConduitResult<ResolvedLoader> {
17 match loader {
18 Loader::Vanilla => {
19 let url = self.api.mojang.get_server_url(mc_version).await?;
20 Ok(ResolvedLoader {
21 url,
22 hash: String::new(),
23 file_name: "server.jar".to_string(),
24 })
25 }
26 Loader::Paper => {
27 let build = self.api.papermc.get_latest_build(mc_version).await?;
28 Ok(ResolvedLoader {
29 url: self.api.papermc.build_download_url(
30 mc_version,
31 build.build,
32 &build.downloads.application.name,
33 ),
34 hash: build.downloads.application.sha256,
35 file_name: "server.jar".to_string(),
36 })
37 }
38 Loader::Purpur => {
39 let build = self.api.purpurmc.get_latest_build(mc_version).await?;
40 Ok(ResolvedLoader {
41 url: self.api.purpurmc.build_download_url(mc_version, &build),
42 hash: String::new(),
43 file_name: "server.jar".to_string(),
44 })
45 }
46 Loader::Fabric => {
47 let installer_version = self.api.fabricmc.get_latest_installer().await?;
48 let url = self.api.fabricmc.build_installer_url(&installer_version);
49 Ok(ResolvedLoader {
50 url,
51 hash: String::new(),
52 file_name: "server-installer.jar".to_string(),
53 })
54 }
55 Loader::Forge { version } => {
56 let forge_version = self.api.minecraftforge.get_latest_version(version).await?;
57 let url = self
58 .api
59 .minecraftforge
60 .build_bin_url(&forge_version, "installer");
61 Ok(ResolvedLoader {
62 url,
63 hash: String::new(),
64 file_name: "server-installer.jar".to_string(),
65 })
66 }
67 Loader::Neoforge { version } => {
68 let url = self.api.neoforged.build_bin_url(version, "installer");
69 Ok(ResolvedLoader {
70 url,
71 hash: String::new(),
72 file_name: "server-installer.jar".to_string(),
73 })
74 }
75 }
76 }
77}