diff --git a/src/client.rs b/src/client.rs index dc05be2..a0d9d31 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,5 +1,5 @@ use crate::api::{ModInfo, ModResult, ModVersion, ModVersionFile, SearchResponse}; -use crate::config::{Args, Config, SearchArgs}; +use crate::config::{Args, Config, PackageType, SearchArgs}; use futures_util::StreamExt; use log::*; use std::cmp::min; @@ -34,7 +34,22 @@ impl HopperClient { facets.push(format!("{}", versions_facets)); } if let Some(package_type) = &search_args.package_type { - facets.push(format!("[\"project_type:{}\"]", package_type.to_string())); + let package_type_facet = match package_type { + PackageType::Fabric => "[\"categories:fabric\"],[\"project_type:mod\"]", + PackageType::Forge => "[\"categories:forge\"],[\"project_type:mod\"]", + PackageType::Quilt => "[\"categories:quilt\"],[\"project_type:mod\"]", + PackageType::Resource => "[\"project_type:resourcepack\"]", + PackageType::FabricPack => "[\"project_type:modpack\"],[\"categories:fabric\"]", + PackageType::ForgePack => "[\"project_type:modpack\"],[\"categories:forge\"]", + PackageType::QuiltPack => "[\"project_type:modpack\"],[\"categories:quilt\"]", + PackageType::BukkitPlugin => "[\"project_type:mod\"],[\"categories:bukkit\"]", + PackageType::PaperPlugin => "[\"project_type:mod\"],[\"categories:paper\"]", + PackageType::PurpurPlugin => "[\"project_type:mod\"],[\"categories:purpur\"]", + PackageType::SpigotPlugin => "[\"project_type:mod\"],[\"categories:spigot\"]", + PackageType::SpongePlugin => "[\"project_type:mod\"],[\"categories:sponge\"]", + } + .to_string(); + facets.push(package_type_facet); } params.push(("facets", format!("[{}]", facets.join(",")))); diff --git a/src/config.rs b/src/config.rs index 1d1b99a..8ba1f47 100644 --- a/src/config.rs +++ b/src/config.rs @@ -36,20 +36,14 @@ pub enum PackageType { Forge, Quilt, Resource, - Pack, -} - -impl ToString for PackageType { - fn to_string(&self) -> String { - match self { - PackageType::Fabric => "fabric", - PackageType::Forge => "forge", - PackageType::Quilt => "quilt", - PackageType::Resource => "resourcepack", - PackageType::Pack => "modpack", - } - .to_string() - } + FabricPack, + ForgePack, + QuiltPack, + BukkitPlugin, + PaperPlugin, + PurpurPlugin, + SpigotPlugin, + SpongePlugin, } // TODO move main body argument fields to substruct for ease of moving?