X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.cli%2Fsrc%2Forg%2Fargeo%2Fcms%2Fcli%2FCmsCommands.java;h=6f2db4ff22db5e495f5374f8cc162af1edab80e2;hb=5b6b49fa655c7b3ae3dcc06d6c504e3d0225684f;hp=ae2b44174044da09e09e2291a730788cef8ddb25;hpb=fbdca9fcba285280f1d113671ef3ba7a670e45c7;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java b/org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java index ae2b44174..6f2db4ff2 100644 --- a/org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java +++ b/org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java @@ -4,16 +4,22 @@ import java.net.URI; import java.util.List; import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; import org.argeo.api.cli.CommandArgsException; import org.argeo.api.cli.CommandsCli; import org.argeo.api.cli.DescribedCommand; -import org.argeo.cms.client.WsPing; +import org.argeo.cms.client.WebSocketEventClient; +import org.argeo.cms.client.WebSocketPing; public class CmsCommands extends CommandsCli { + final static Option connectOption = Option.builder().option("c").longOpt("connect").desc("server to connect to") + .hasArg(true).build(); public CmsCommands(String commandName) { super(commandName); addCommand("ping", new Ping()); + addCommand("event", new Events()); } @Override @@ -22,6 +28,46 @@ public class CmsCommands extends CommandsCli { } class Ping implements DescribedCommand { + @Override + public Options getOptions() { + Options options = new Options(); + options.addOption(connectOption); + return options; + } + + @Override + public Void apply(List t) { + CommandLine line = toCommandLine(t); + String uriArg = line.getOptionValue(connectOption); + // TODO make it more robust (trailing /, etc.) + URI uri = URI.create(uriArg); + if ("".equals(uri.getPath())) { + uri = URI.create(uri.toString() + "/cms/status/ping"); + } + new WebSocketPing(uri).run(); + return null; + } + + @Override + public String getUsage() { + return "[ws|wss]://host:port/"; + } + + @Override + public String getDescription() { + return "Test whether an Argeo CMS is available, without auhtentication"; + } + + } + + class Events implements DescribedCommand { + + @Override + public Options getOptions() { + Options options = new Options(); + options.addOption(connectOption); + return options; + } @Override public Void apply(List t) { @@ -30,24 +76,26 @@ public class CmsCommands extends CommandsCli { if (remaining.size() == 0) { throw new CommandArgsException("There must be at least one argument"); } - String uriArg = remaining.get(0); + String topic = remaining.get(0); + + String uriArg = line.getOptionValue(connectOption); // TODO make it more robust (trailing /, etc.) URI uri = URI.create(uriArg); if ("".equals(uri.getPath())) { - uri = URI.create(uri.toString() + "/cms/status/ping"); + uri = URI.create(uri.toString() + "/cms/status/event/" + topic); } - new WsPing(uri).run(); + new WebSocketEventClient(uri).run(); return null; } @Override public String getUsage() { - return "[ws|wss]://host:port/"; + return "TOPIC"; } @Override public String getDescription() { - return "Test whether an Argeo CMS is available, without auhtentication"; + return "Listen to events on a topic"; } }