Browse Source

remove help command, list all cat commands in /_cat?h endpoint

Shay Banon 12 years ago
parent
commit
28eff2ba29

+ 5 - 1
docs/reference/cat.asciidoc

@@ -12,6 +12,10 @@ to find relationships in the data is tedious.  Human eyes, especially
 when looking at an ssh terminal, need compact and aligned text.  The
 cat API aims to meet this need.
 
+All the cat commands accept a query string parameter `h` to see all
+the headers and info they provide, and the `/_cat?h` command lists all
+the available commands.
+
 [float]
 [[common-parameters]]
 == Common parameters
@@ -45,7 +49,7 @@ by all the shards, not number of documents).  The `/_cat/indices` API
 is ideal.  We only need to tweak two things.  First, we want to turn
 off human mode.  We'll use a byte-level resolution.  Then we'll pipe
 our output into `sort` using the appropriate column, which in this
-case is the eigth one.
+case is the eight one.
 
 [source,shell]
 --------------------------------------------------

+ 0 - 1
src/main/java/org/elasticsearch/rest/action/RestActionModule.java

@@ -222,6 +222,5 @@ public class RestActionModule extends AbstractModule {
         catActionMultibinder.addBinding().to(org.elasticsearch.rest.action.cat.RestPendingClusterTasksAction.class).asEagerSingleton();
         // no abstract cat action
         bind(RestCatAction.class).asEagerSingleton();
-        bind(RestHelpAction.class).asEagerSingleton();
     }
 }

+ 17 - 3
src/main/java/org/elasticsearch/rest/action/cat/RestCatAction.java

@@ -25,23 +25,37 @@ import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.rest.*;
 
 import java.io.IOException;
+import java.util.Set;
 
 import static org.elasticsearch.rest.RestRequest.Method.GET;
 
 public class RestCatAction extends BaseRestHandler {
 
-    private static final String CAT = "=^.^=\n";
+    private static final String CAT = "=^.^=";
+    private static final String CAT_NL = CAT + "\n";
+    private final String HELP;
 
     @Inject
-    public RestCatAction(Settings settings, Client client, RestController controller) {
+    public RestCatAction(Settings settings, Client client, RestController controller, Set<AbstractCatAction> catActions) {
         super(settings, client);
         controller.registerHandler(GET, "/_cat", this);
+        StringBuilder sb = new StringBuilder();
+        sb.append(CAT).append(" try:\n");
+        for (AbstractCatAction catAction : catActions) {
+            catAction.documentation(sb);
+        }
+        HELP = sb.toString();
     }
 
     @Override
     public void handleRequest(final RestRequest request, final RestChannel channel) {
         try {
-            channel.sendResponse(new StringRestResponse(RestStatus.OK, CAT));
+            boolean helpWanted = request.paramAsBoolean("h", false);
+            if (helpWanted) {
+                channel.sendResponse(new StringRestResponse(RestStatus.OK, HELP));
+            } else {
+                channel.sendResponse(new StringRestResponse(RestStatus.OK, CAT_NL));
+            }
         } catch (Throwable t) {
             try {
                 channel.sendResponse(new XContentThrowableRestResponse(request, t));

+ 0 - 52
src/main/java/org/elasticsearch/rest/action/cat/RestHelpAction.java

@@ -1,52 +0,0 @@
-/*
- * Licensed to ElasticSearch and Shay Banon under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. ElasticSearch licenses this
- * file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.elasticsearch.rest.action.cat;
-
-import org.elasticsearch.client.Client;
-import org.elasticsearch.common.inject.Inject;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.rest.*;
-
-import java.util.Set;
-
-import static org.elasticsearch.rest.RestRequest.Method.GET;
-
-
-public class RestHelpAction extends BaseRestHandler {
-
-    StringBuilder sb = new StringBuilder();
-
-    @Inject
-    public RestHelpAction(Settings settings, Client client, RestController controller, Set<AbstractCatAction> catActions) {
-        super(settings, client);
-        controller.registerHandler(GET, "/_cat/help", this);
-        controller.registerHandler(GET, "/_cat/halp", this);
-        sb.append("Try:\n\n");
-        sb.append("/_cat/help\n");
-        for (AbstractCatAction catAction : catActions) {
-            catAction.documentation(sb);
-        }
-    }
-
-    @Override
-    public void handleRequest(final RestRequest request, final RestChannel channel) {
-        channel.sendResponse(new StringRestResponse(RestStatus.OK, sb.toString()));
-    }
-}