X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.cli%2Fsrc%2Forg%2Fargeo%2Fcms%2Fcli%2FCmsCommands.java;h=50977d1e1045a58bc0132cccd4389f78a631bf66;hb=c9100383d67d1be4c5797f084169a3faf513f5fb;hp=6f2db4ff22db5e495f5374f8cc162af1edab80e2;hpb=5b6b49fa655c7b3ae3dcc06d6c504e3d0225684f;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 6f2db4ff2..50977d1e1 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 @@ -6,12 +6,12 @@ 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.WebSocketEventClient; +import org.argeo.cms.client.CmsClient; import org.argeo.cms.client.WebSocketPing; +/** Commands dealing with CMS. */ public class CmsCommands extends CommandsCli { final static Option connectOption = Option.builder().option("c").longOpt("connect").desc("server to connect to") .hasArg(true).build(); @@ -19,7 +19,9 @@ public class CmsCommands extends CommandsCli { public CmsCommands(String commandName) { super(commandName); addCommand("ping", new Ping()); - addCommand("event", new Events()); + addCommand("get", new Get()); + addCommand("status", new Status()); + addCommand("event", new EventCommands("event")); } @Override @@ -60,7 +62,7 @@ public class CmsCommands extends CommandsCli { } - class Events implements DescribedCommand { + class Get implements DescribedCommand { @Override public Options getOptions() { @@ -70,32 +72,56 @@ public class CmsCommands extends CommandsCli { } @Override - public Void apply(List t) { + public String apply(List t) { CommandLine line = toCommandLine(t); List remaining = line.getArgList(); - if (remaining.size() == 0) { - throw new CommandArgsException("There must be at least one argument"); + String additionalUri = null; + if (remaining.size() != 0) { + additionalUri = 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/event/" + topic); - } - new WebSocketEventClient(uri).run(); - return null; + String connectUri = line.getOptionValue(connectOption); + CmsClient cmsClient = new CmsClient(URI.create(connectUri)); + return additionalUri != null ? cmsClient.getAsString(URI.create(additionalUri)) : cmsClient.getAsString(); + } + + @Override + public String getUsage() { + return "[URI]"; + } + + @Override + public String getDescription() { + return "Retrieve this URI as a string"; + } + + } + + class Status implements DescribedCommand { + + @Override + public Options getOptions() { + Options options = new Options(); + options.addOption(connectOption); + return options; + } + + @Override + public String apply(List t) { + CommandLine line = toCommandLine(t); + String connectUri = line.getOptionValue(connectOption); + CmsClient cmsClient = new CmsClient(URI.create(connectUri)); + return cmsClient.getAsString(URI.create("/cms/status")); } @Override public String getUsage() { - return "TOPIC"; + return "[URI]"; } @Override public String getDescription() { - return "Listen to events on a topic"; + return "Retrieve the CMS status as a string"; } }