You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2015/07/16 09:45:22 UTC

incubator-ignite git commit: # IGNITE-1121 Implement POST call.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-1121 dd27f3c00 -> 2e814bd59


# IGNITE-1121 Implement POST call.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2e814bd5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2e814bd5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2e814bd5

Branch: refs/heads/ignite-1121
Commit: 2e814bd59eed708c99b9d65a3f05b195bd19ee61
Parents: dd27f3c
Author: sevdokimov <se...@jetbrains.com>
Authored: Thu Jul 16 10:45:00 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Thu Jul 16 10:45:00 2015 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/agent/Agent.java     | 60 ++++++++++++++------
 .../org/apache/ignite/agent/AgentSocket.java    |  2 +-
 .../ignite/agent/messages/RestRequest.java      | 17 ++++++
 .../nodejs/agents/agentManager.js               | 22 ++++++-
 .../web-control-center/nodejs/routes/test.js    | 23 +++++++-
 5 files changed, 103 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2e814bd5/modules/control-center-agent/src/main/java/org/apache/ignite/agent/Agent.java
----------------------------------------------------------------------
diff --git a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/Agent.java b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/Agent.java
index c420fa9..f8e95a5 100644
--- a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/Agent.java
+++ b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/Agent.java
@@ -19,12 +19,15 @@ package org.apache.ignite.agent;
 
 import org.apache.commons.codec.*;
 import org.apache.http.*;
+import org.apache.http.client.entity.*;
 import org.apache.http.client.methods.*;
 import org.apache.http.impl.client.*;
+import org.apache.http.message.*;
 import org.apache.ignite.agent.messages.*;
 
 import java.io.*;
 import java.nio.charset.*;
+import java.util.*;
 
 /**
  *
@@ -59,33 +62,56 @@ public class Agent {
     }
 
     /**
-     * @param uri Url.
+     * @param restReq Request.
      */
-    public RestResult executeRest(String uri) throws IOException {
-        HttpGet get = new HttpGet(uri);
+    public RestResult executeRest(RestRequest restReq) throws IOException {
+        HttpRequestBase httpReq;
 
-        CloseableHttpResponse resp = httpclient.execute(get);
+        if ("GET".equalsIgnoreCase(restReq.getMethod())) {
+            httpReq = new HttpGet(restReq.getUrl());
 
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-
-        resp.getEntity().writeTo(out);
+            if (restReq.getParams() != null)
+                throw new IOException("Parameters of GET method should be passed in URL");
+        }
+        else if ("POST".equalsIgnoreCase(restReq.getMethod())) {
+            HttpPost post = new HttpPost(restReq.getUrl());
 
-        Charset charset = Charsets.UTF_8;
+            if (restReq.getParams() != null) {
+                List<NameValuePair> nvps = new ArrayList<>();
 
-        Header encodingHdr = resp.getEntity().getContentEncoding();
+                for (Map.Entry<String, String> entry : restReq.getParams().entrySet())
+                    nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
 
-        if (encodingHdr != null) {
-            String encoding = encodingHdr.getValue();
+                post.setEntity(new UrlEncodedFormEntity(nvps));
+            }
 
-            charset = Charsets.toCharset(encoding);
+            httpReq = post;
         }
+        else
+            throw new IOException("Unknown HTTP-method: " + restReq.getMethod());
+
+        try (CloseableHttpResponse resp = httpclient.execute(httpReq)) {
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+            resp.getEntity().writeTo(out);
+
+            Charset charset = Charsets.UTF_8;
 
-        RestResult res = new RestResult();
+            Header encodingHdr = resp.getEntity().getContentEncoding();
 
-        res.setCode(resp.getStatusLine().getStatusCode());
-        res.setExecuted(true);
-        res.setMessage(new String(out.toByteArray(), charset));
+            if (encodingHdr != null) {
+                String encoding = encodingHdr.getValue();
 
-        return res;
+                charset = Charsets.toCharset(encoding);
+            }
+
+            RestResult res = new RestResult();
+
+            res.setCode(resp.getStatusLine().getStatusCode());
+            res.setExecuted(true);
+            res.setMessage(new String(out.toByteArray(), charset));
+
+            return res;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2e814bd5/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
----------------------------------------------------------------------
diff --git a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
index 9e6e14a..7603ed9 100644
--- a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
+++ b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
@@ -108,7 +108,7 @@ public class AgentSocket {
             RestResult restRes;
 
             try {
-                restRes = agent.executeRest(restReq.getUrl());
+                restRes = agent.executeRest(restReq);
             }
             catch (IOException e) {
                 restRes = new RestResult();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2e814bd5/modules/control-center-agent/src/main/java/org/apache/ignite/agent/messages/RestRequest.java
----------------------------------------------------------------------
diff --git a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/messages/RestRequest.java b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/messages/RestRequest.java
index 9d5181d..cad5808 100644
--- a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/messages/RestRequest.java
+++ b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/messages/RestRequest.java
@@ -30,6 +30,9 @@ public class RestRequest extends AbstractMessage {
     /** */
     private Map<String, String> params;
 
+    /** */
+    private String method;
+
     /**
      *
      */
@@ -71,4 +74,18 @@ public class RestRequest extends AbstractMessage {
     public void setParams(Map<String, String> params) {
         this.params = params;
     }
+
+    /**
+     *
+     */
+    public String getMethod() {
+        return method;
+    }
+
+    /**
+     * @param mtd Method.
+     */
+    public void setMethod(String mtd) {
+        this.method = mtd;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2e814bd5/modules/web-control-center/nodejs/agents/agentManager.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/nodejs/agents/agentManager.js b/modules/web-control-center/nodejs/agents/agentManager.js
index aa2506a..97a0bb1 100644
--- a/modules/web-control-center/nodejs/agents/agentManager.js
+++ b/modules/web-control-center/nodejs/agents/agentManager.js
@@ -113,7 +113,7 @@ function Client(ws) {
 
     this.cbMap = {};
 
-    this.restQuery = function(url, cb) {
+    this.invokeRest = function(url, method, params, cb) {
         var reqId = this.restCounter++;
 
         this.cbMap[reqId] = cb;
@@ -121,6 +121,8 @@ function Client(ws) {
         this.sendMessage({
             id: reqId,
             type: 'RestRequest',
+            method: method,
+            params: params,
             url: url
         }, function(err) {
             if (err) {
@@ -129,6 +131,24 @@ function Client(ws) {
                 cb(err)
             }
         })
+    };
+
+
+    this.restGet = function(url, cb) {
+        this.invokeRest(url, 'GET', null, cb);
+    };
+
+    this.restPost = function(url, params, cb) {
+        if (typeof(params) == 'function' && !cb) {
+            cb = params;
+
+            params = undefined
+        }
+
+        if (params && typeof(params) != 'object')
+            throw "'params' argument must be an object";
+
+        this.invokeRest(url, 'POST', params, cb);
     }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2e814bd5/modules/web-control-center/nodejs/routes/test.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/nodejs/routes/test.js b/modules/web-control-center/nodejs/routes/test.js
index 5bfd954..f842c8b 100644
--- a/modules/web-control-center/nodejs/routes/test.js
+++ b/modules/web-control-center/nodejs/routes/test.js
@@ -21,14 +21,33 @@ var bridge = require('../agents/agentManager');
 
 
 /* GET summary page. */
-router.get('/', function(req, res) {
+router.get('/testGet', function(req, res) {
     var c = bridge.findClient("55a2ca51eef88f6c775ed9d0");
 
     if (!c) {
         return res.send("Client not found");
     }
 
-    c.restQuery("http://ya.ru/", function(error, code, message) {
+    c.restGet("http://ya.ru/", function(error, code, message) {
+        if (error) {
+            res.send("Failed to execute REST query: " + error);
+
+            return
+        }
+
+        res.send("code: " + code + '<br>message: ' + message);
+    });
+});
+
+/* GET summary page. */
+router.get('/testPost', function(req, res) {
+    var c = bridge.findClient("55a2ca51eef88f6c775ed9d0");
+
+    if (!c) {
+        return res.send("Client not found");
+    }
+
+    c.restPost("http://localhost:3000/configuration/caches/save", {_id: 555}, function(error, code, message) {
         if (error) {
             res.send("Failed to execute REST query: " + error);