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
}
class Ping implements DescribedCommand<Void> {
+ @Override
+ public Options getOptions() {
+ Options options = new Options();
+ options.addOption(connectOption);
+ return options;
+ }
@Override
public Void apply(List<String> t) {
CommandLine line = toCommandLine(t);
- List<String> 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;
}
}
}
+
+ class Get implements DescribedCommand<String> {
+
+ @Override
+ public Options getOptions() {
+ Options options = new Options();
+ options.addOption(connectOption);
+ return options;
+ }
+
+ @Override
+ public String apply(List<String> t) {
+ CommandLine line = toCommandLine(t);
+ List<String> 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<String> {
+
+ @Override
+ public Options getOptions() {
+ Options options = new Options();
+ options.addOption(connectOption);
+ return options;
+ }
+
+ @Override
+ public String apply(List<String> 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";
+ }
+
+ }
}