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=55870eba50d8b28e72a3102fd18a17a6f23f7bad;hp=ae2b44174044da09e09e2291a730788cef8ddb25;hpb=d55c4389ae6936c0afa9e03463dae4da5256be36;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..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 @@ -4,16 +4,24 @@ import java.net.URI; import java.util.List; import org.apache.commons.cli.CommandLine; -import org.argeo.api.cli.CommandArgsException; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; import org.argeo.api.cli.CommandsCli; import org.argeo.api.cli.DescribedCommand; -import org.argeo.cms.client.WsPing; +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(); public CmsCommands(String commandName) { super(commandName); addCommand("ping", new Ping()); + addCommand("get", new Get()); + addCommand("status", new Status()); + addCommand("event", new EventCommands("event")); } @Override @@ -22,21 +30,23 @@ 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); - List remaining = line.getArgList(); - if (remaining.size() == 0) { - throw new CommandArgsException("There must be at least one argument"); - } - String uriArg = 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"); } - new WsPing(uri).run(); + new WebSocketPing(uri).run(); return null; } @@ -51,4 +61,68 @@ public class CmsCommands extends CommandsCli { } } + + class Get 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); + List remaining = line.getArgList(); + String additionalUri = null; + if (remaining.size() != 0) { + additionalUri = remaining.get(0); + } + + 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 "[URI]"; + } + + @Override + public String getDescription() { + return "Retrieve the CMS status as a string"; + } + + } }