package pw.yumc.Yum.models; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.json.simple.JSONObject; import org.json.simple.JSONValue; import pw.yumc.Yum.models.RepoSerialization.Repositories; import pw.yumc.YumCore.bukkit.Log; import pw.yumc.YumCore.kit.HttpKit; public class RepoCache implements Serializable { Map plugins = new HashMap<>(); Map repos = new HashMap<>(); public void addPlugins(String name, PluginInfo info) { plugins.put(name, info); } public Repositories addRepo(String repo) { if (repos.containsKey(repo) || repo.isEmpty()) { return null; } Repositories reposes = getRepo(repo); if (reposes == null) { return null; } repos.put(repo, reposes); return reposes; } public List getAllRepoInfo() { List repoinfo = new ArrayList<>(); for (Entry repo : repos.entrySet()) { repoinfo.add(String.format("§d仓库: §e%s §6- §3%s", repo.getValue().name, repo.getKey())); } return repoinfo; } public Map getPlugins() { return plugins; } public Repositories getRepo(String repo) { try { String json = HttpKit.get(repo); Repositories reposes = new Repositories((JSONObject) JSONValue.parse(json)); if (reposes.repos.isEmpty()) { Log.console("§c源地址解析Json为空 §b" + repo); return null; } return reposes; } catch (Exception e) { Throwable ex = e.getCause(); Log.console("§c源地址获取数据为空 §b%s §c异常: %s: %s", repo, ex.getClass().getName(), ex.getLocalizedMessage()); return null; } } public Map getRepos() { return repos; } public boolean removeRepo(String repo) { if (repo.isEmpty() || !repos.containsKey(repo)) { return false; } repos.remove(repo); return true; } }