X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.cli%2Fsrc%2Forg%2Fargeo%2Fcms%2Fcli%2FEventCommands.java;fp=org.argeo.cms.cli%2Fsrc%2Forg%2Fargeo%2Fcms%2Fcli%2FEventCommands.java;h=009ad455b0fc919fa5a0d68cbdcdc0f1c85b948f;hb=c9100383d67d1be4c5797f084169a3faf513f5fb;hp=0000000000000000000000000000000000000000;hpb=5b6b49fa655c7b3ae3dcc06d6c504e3d0225684f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.cli/src/org/argeo/cms/cli/EventCommands.java b/org.argeo.cms.cli/src/org/argeo/cms/cli/EventCommands.java new file mode 100644 index 000000000..009ad455b --- /dev/null +++ b/org.argeo.cms.cli/src/org/argeo/cms/cli/EventCommands.java @@ -0,0 +1,64 @@ +package org.argeo.cms.cli; + +import java.net.URI; +import java.util.List; + +import org.apache.commons.cli.CommandLine; +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; + +/** Commands dealing with CMS events. */ +public class EventCommands extends CommandsCli { + public EventCommands(String commandName) { + super(commandName); + addCommand("listen", new EventListent()); + } + + @Override + public String getDescription() { + return "Utilities related to an Argeo CMS"; + } + + class EventListent implements DescribedCommand { + + @Override + public Options getOptions() { + Options options = new Options(); + options.addOption(CmsCommands.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 topic = remaining.get(0); + + String uriArg = line.getOptionValue(CmsCommands.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; + } + + @Override + public String getUsage() { + return "TOPIC"; + } + + @Override + public String getDescription() { + return "Listen to events on a topic"; + } + + } +}