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

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_r63769252
  
    --- Diff: 
connectors/http/src/main/java/quarks/connectors/http/HttpStreams.java ---
    @@ -38,12 +44,191 @@ 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
    +     *     DirectProvider ep = new DirectProvider();
    +     *     Topology topology = ep.newTopology();
    +     *     final String url = "http://httpbin.org/get?";;
    +     * 
    +     *     JsonObject request1 = new JsonObject();
    +     *     request1.addProperty("a", "abc");
    +     *     request1.addProperty("b", "42");
    +     * 
    +     *     TStream<JsonObject> stream = 
topology.collection(Arrays.asList(request1));
    +     *     TStream<JsonObject> rc = HttpStreams.getJson(stream,
    +     *             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 DELETE request with JsonObject. <br>
    +     * 
    +     * Method specifically works with JsonObjects. For each JsonObject in 
the
    +     * stream, HTTP DELETE request is executed on provided uri. As a 
result,
    +     * Response is added to the response TStream. <br>
    +     * 
    +     * Sample usage:<br>
    +     * 
    +     * <pre>
    +     * {@code
    +     *     DirectProvider ep = new DirectProvider();
    +     *     Topology topology = ep.newTopology();
    +     *     final String url = "http://httpbin.org/delete?";;
    +     * 
    +     *     JsonObject request = new JsonObject();
    +     *     request.addProperty("a", "abc");
    +     *     request.addProperty("b", "42");
    +     * 
    +     *     TStream<JsonObject> stream = 
topology.collection(Arrays.asList(request));
    +     *     TStream<JsonObject> rc = HttpStreams.deleteJson(stream,
    +     *             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 DELETE 
requests
    +     * 
    +     * @see HttpStreams#requests(TStream, Supplier, Function, Function, 
BiFunction)
    +     */
    +    public static TStream<JsonObject> deleteJson(TStream<JsonObject> 
stream,
    +            Supplier<CloseableHttpClient> clientCreator,
    +            Function<JsonObject,String> uri) {
    +        
    +        return HttpStreams.<JsonObject,JsonObject>requests(stream, 
clientCreator,
    +            t -> HttpDelete.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
    +     *     DirectProvider ep = new DirectProvider();
    +     *     Topology topology = ep.newTopology();
    +     *     final String url = "http://httpbin.org/post";;
    +     * 
    +     *     JsonObject body = new JsonObject();
    +     *     body.addProperty("foo", "abc");
    +     *     body.addProperty("bar", 42);
    +     * 
    +     *     TStream<JsonObject> stream = 
topology.collection(Arrays.asList(body));
    +     *     TStream<JsonObject> rc = HttpStreams.postJson(stream,
    +     *             HttpClients::noAuthentication, t -> url, t -> body);
    --- End diff --
    
    I don't think you really want/mean `t -> body`.  Presumably the sample is 
trying to demonstrate posting each tuple from a stream as the body of a POST to 
the specified url.  To do that you need to specify 't -> t'  (or 
`Functions.identity()`), right?
    
    Also the description of `@param body` needs work.  The function isn't 
returning an HttpEntity anymore.  It's a function that for each JsonObject 
tuple from stream, returns a JsonObject whose JSON will be the body of the POST 
request.  Right?


> 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)

Reply via email to