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