edgent-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (QUARKS-96) Add an HTTP POST utility method.
Date Mon, 09 May 2016 20:03:12 GMT

    [ https://issues.apache.org/jira/browse/QUARKS-96?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15276924#comment-15276924
] 

ASF GitHub Bot commented on QUARKS-96:
--------------------------------------

Github user dlaboss commented on a diff in the pull request:

    https://github.com/apache/incubator-quarks/pull/106#discussion_r62562952
  
    --- Diff: connectors/http/src/main/java/quarks/connectors/http/HttpStreams.java ---
    @@ -38,12 +40,88 @@ Licensed to the Apache Software Foundation (ASF) under one
      */
     public class HttpStreams {
         
    +    /**
    +     * Make an HTTP GET request with JsonObject. <br>
    +     * 
    +     * Method specifically works with JsonObjects. For each JsonObject in the stream,

    +     * HTTP GET request is executed on provided uri. As a result, Response is added to
    +     * the response TStream.
    +     * <br>
    +     * 
    +     * Sample usage:<br>
    +     * 
    +     * <pre>
    +     * {@code
    +     *     JsonObject request1 = new JsonObject();
    +     *     request1.addProperty("a", "abc");
    +     *     request1.addProperty("b", "42");
    +     *     TStream<JsonObject> rc = HttpStreams.getJson(
    +     *             topology.collection(Arrays.asList(request1)),
    +     *             HttpClients::noAuthentication,
    +     *             t -> url + "a=" + t.get("a").getAsString() + "&b="
    +     *                     + t.get("b").getAsString());
    +     * }
    +     * </pre>
    +     * <br>
    +     * See <i>HttpTest</i> for example.
    +     * <br>
    +     * @param stream - JsonObject TStream.
    +     * @param clientCreator - CloseableHttpClient supplier preferably created using {@link
HttpClients}
    +     * @param uri - URI function which returns URI string
    +     * @return TStream of JsonObject which contains responses of GET requests
    +     * 
    +     * @see HttpStreams#requests(TStream, Supplier, Function, Function, BiFunction)
    +     */
         public static TStream<JsonObject> getJson(TStream<JsonObject> stream,
                 Supplier<CloseableHttpClient> clientCreator,
                 Function<JsonObject,String> uri) {
             
             return HttpStreams.<JsonObject,JsonObject>requests(stream, clientCreator,
    -                t -> HttpGet.METHOD_NAME, uri, HttpResponders.json());
    +            t -> HttpGet.METHOD_NAME, uri, HttpResponders.json());
    +    }
    +    
    +    /**
    +     * Make an HTTP POST request with JsonObject. <br>
    +     * 
    +     * Method specifically works with JsonObjects. For each JsonObject in the stream,

    +     * HTTP POST request is executed on provided uri. Request body is filled using
    +     * HttpEntity provided by body function. As a result, Response is added to
    +     * the response TStream.<br>
    +     * 
    +     * Sample usage:<br>
    +     * 
    +     * <pre>
    +     * {@code
    +     *     JsonObject request = new JsonObject();
    +     *     request.addProperty("a", "abc");
    +     *     request.addProperty("b", "42");
    +     *     TStream<JsonObject> rc = HttpStreams.postJson(
    +     *         topology.collection(Arrays.asList(request1)),
    +     *         HttpClients::noAuthentication,
    +     *         t -> url,
    +     *         t -> new ByteArrayEntity(request1.toString().getBytes())
    +     *     );
    +     * }
    +     * </pre>
    +     * <br>
    +     * See HttpTest for example.
    +     * <br>
    +     * @param stream - JsonObject TStream.
    +     * @param clientCreator - CloseableHttpClient supplier preferably created using {@link
HttpClients}
    +     * @param uri - URI function which returns URI string
    +     * @param body - Function that returns HttpEntity which will be set as a body for
the request.
    +     * @return TStream of JsonObject which contains responses of GET requests
    +     * 
    +     * @see HttpStreams#requestsWithBody(TStream, Supplier, Function, Function, Function,
BiFunction)
    +     */
    +    public static TStream<JsonObject> postJson(TStream<JsonObject> stream,
    +            Supplier<CloseableHttpClient> clientCreator,
    +            Function<JsonObject, String> uri,
    +            Function<JsonObject, HttpEntity> body) {
    --- End diff --
    
    It strikes me that the ``body`` function should instead be ``UnaryOperator<JsonObject>``
(a fn that yields a JsonObject (body) from the input JsonObject tuple).  I think that's more
in line with "keeping the simple simple" for applications exchanging Json-based data.  I agree
that ``HttpEntity`` is appropriate for ``requestsWithBody()``.  Does that make sense?


> Add an HTTP POST utility method.
> --------------------------------
>
>                 Key: QUARKS-96
>                 URL: https://issues.apache.org/jira/browse/QUARKS-96
>             Project: Quarks
>          Issue Type: Improvement
>          Components: Connectors
>            Reporter: Daniel John Debrunner
>            Assignee: Dale LaBossiere
>              Labels: newbie
>
> HTTPStreams.requests can support any type of request but it would be useful to have a
utility method for POST requests, similar to getJson - i.e., a postJson()



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message