From: David ‘Bombe’ Roden Date: Fri, 21 Aug 2015 17:07:23 +0000 (+0200) Subject: Add method to load plugin from official HTTPS X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=0674579bda3ebeb982fb9601dafdd082e36c79fc;p=jFCPlib.git Add method to load plugin from official HTTPS --- diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/LoadPluginCommand.java b/src/main/java/net/pterodactylus/fcp/quelaton/LoadPluginCommand.java index 16686a4..0432f14 100644 --- a/src/main/java/net/pterodactylus/fcp/quelaton/LoadPluginCommand.java +++ b/src/main/java/net/pterodactylus/fcp/quelaton/LoadPluginCommand.java @@ -13,5 +13,6 @@ public interface LoadPluginCommand { LoadPluginCommand addToConfig(); Executable> officialFromFreenet(String pluginIdentifier); + Executable> officialFromHttps(String pluginIdentifier); } diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/LoadPluginCommandImpl.java b/src/main/java/net/pterodactylus/fcp/quelaton/LoadPluginCommandImpl.java index 3109e8a..eccb10f 100644 --- a/src/main/java/net/pterodactylus/fcp/quelaton/LoadPluginCommandImpl.java +++ b/src/main/java/net/pterodactylus/fcp/quelaton/LoadPluginCommandImpl.java @@ -48,6 +48,14 @@ public class LoadPluginCommandImpl implements LoadPluginCommand { return this::execute; } + @Override + public Executable> officialFromHttps(String pluginIdentifier) { + loadPlugin.setUrlType(UrlType.OFFICIAL); + loadPlugin.setOfficialSource(OfficialSource.HTTPS); + loadPlugin.setPluginUrl(pluginIdentifier); + return this::execute; + } + private ListenableFuture> execute() { return threadPool.submit(this::executeDialog); } diff --git a/src/test/java/net/pterodactylus/fcp/quelaton/DefaultFcpClientTest.java b/src/test/java/net/pterodactylus/fcp/quelaton/DefaultFcpClientTest.java index 77e3588..f54298f 100644 --- a/src/test/java/net/pterodactylus/fcp/quelaton/DefaultFcpClientTest.java +++ b/src/test/java/net/pterodactylus/fcp/quelaton/DefaultFcpClientTest.java @@ -2059,6 +2059,40 @@ public class DefaultFcpClientTest { } @Test + public void defaultFcpClientCanLoadPluginFromHttps() throws ExecutionException, InterruptedException, + IOException { + Future> pluginInfo = fcpClient.loadPlugin().officialFromHttps("superPlugin").execute(); + connectNode(); + List lines = fcpServer.collectUntil(is("EndMessage")); + String identifier = extractIdentifier(lines); + assertThat(lines, matchesFcpMessage( + "LoadPlugin", + "Identifier=" + identifier, + "PluginURL=superPlugin", + "URLType=official", + "OfficialSource=https", + "EndMessage" + )); + fcpServer.writeLine( + "PluginInfo", + "Identifier=" + identifier, + "PluginName=superPlugin", + "IsTalkable=true", + "LongVersion=1.2.3", + "Version=42", + "OriginUri=superPlugin", + "Started=true", + "EndMessage" + ); + assertThat(pluginInfo.get().get().getPluginName(), is("superPlugin")); + assertThat(pluginInfo.get().get().getOriginalURI(), is("superPlugin")); + assertThat(pluginInfo.get().get().isTalkable(), is(true)); + assertThat(pluginInfo.get().get().getVersion(), is("42")); + assertThat(pluginInfo.get().get().getLongVersion(), is("1.2.3")); + assertThat(pluginInfo.get().get().isStarted(), is(true)); + } + + @Test public void failedLoadingPluginIsRecognized() throws ExecutionException, InterruptedException, IOException { Future> pluginInfo = fcpClient.loadPlugin().officialFromFreenet("superPlugin").execute();