You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by sb...@apache.org on 2017/06/21 19:05:24 UTC
incubator-streams git commit: upgrade instagram to work with latest
juneau
Repository: incubator-streams
Updated Branches:
refs/heads/master a2e2cbef2 -> 6bb0ab1f9
upgrade instagram to work with latest juneau
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/6bb0ab1f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/6bb0ab1f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/6bb0ab1f
Branch: refs/heads/master
Commit: 6bb0ab1f9b1a194c90e744d60e7c6f443c2b00b2
Parents: a2e2cbe
Author: Steve Blackmon @steveblackmon <sb...@apache.org>
Authored: Wed Jun 21 14:04:15 2017 -0500
Committer: Steve Blackmon @steveblackmon <sb...@apache.org>
Committed: Wed Jun 21 14:04:15 2017 -0500
----------------------------------------------------------------------
.../streams-provider-instagram/pom.xml | 2 -
.../apache/streams/instagram/api/Instagram.java | 46 +++++++++++---------
.../instagram/api/InstagramRetryHandler.java | 30 ++++++++++---
3 files changed, 49 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6bb0ab1f/streams-contrib/streams-provider-instagram/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/pom.xml b/streams-contrib/streams-provider-instagram/pom.xml
index c58609d..0c9b599 100644
--- a/streams-contrib/streams-provider-instagram/pom.xml
+++ b/streams-contrib/streams-provider-instagram/pom.xml
@@ -87,12 +87,10 @@
<dependency>
<groupId>org.apache.juneau</groupId>
<artifactId>juneau-rest-client</artifactId>
- <version>6.1.0-incubating</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
- <version>4.5.3</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6bb0ab1f/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/Instagram.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/Instagram.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/Instagram.java
index 122fd26..e153b5f 100644
--- a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/Instagram.java
+++ b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/Instagram.java
@@ -22,18 +22,20 @@ import org.apache.streams.instagram.config.InstagramConfiguration;
import org.apache.streams.instagram.pojo.UserRecentMediaRequest;
import org.apache.streams.instagram.provider.InstagramProviderUtil;
import org.apache.streams.jackson.StreamsJacksonMapper;
+import org.apache.streams.juneau.JodaDateSwap;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpRequestInterceptor;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.juneau.json.JsonParser;
+import org.apache.juneau.json.JsonSerializer;
import org.apache.juneau.rest.client.RestCall;
import org.apache.juneau.rest.client.RestCallException;
import org.apache.juneau.rest.client.RestClient;
+import org.apache.juneau.rest.client.RestClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,6 +45,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
+import static org.apache.http.entity.ContentType.APPLICATION_JSON;
+
/**
* Implementation of all instagram interfaces using juneau.
*/
@@ -56,12 +60,12 @@ public class Instagram implements Media, Users {
private ObjectMapper mapper;
- private String rootUrl;
-
private CloseableHttpClient httpclient;
private InstagramOAuthRequestSigner oauthSigner;
+ private String rootUrl;
+
RestClient restClient;
private Instagram(InstagramConfiguration configuration) throws InstantiationException {
@@ -79,12 +83,25 @@ public class Instagram implements Media, Users {
.setMaxConnPerRoute(20)
.setMaxConnTotal(100)
.build();
-
- this.restClient = new RestClient()
- .setHttpClient(httpclient)
- .setParser(JsonParser.class)
- .setRootUrl(rootUrl);
-
+ this.restClient = new RestClientBuilder()
+ .rootUrl(rootUrl)
+ .accept(APPLICATION_JSON.getMimeType())
+ .httpClient(httpclient, true)
+ .pooled()
+ .parser(
+ JsonParser.DEFAULT.builder()
+ .ignoreUnknownBeanProperties(true)
+ .pojoSwaps(JodaDateSwap.class)
+ .build())
+ .serializer(
+ JsonSerializer.DEFAULT.builder()
+ .pojoSwaps(JodaDateSwap.class)
+ .build())
+ .retryable(
+ configuration.getRetryMax().intValue(),
+ configuration.getRetrySleepMs(),
+ new InstagramRetryHandler())
+ .build();
this.mapper = StreamsJacksonMapper.getInstance();
}
@@ -120,7 +137,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
UserInfoResponse result = mapper.readValue(restResponseEntity, UserInfoResponse.class);
return result;
@@ -152,7 +168,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
UserInfoResponse result = mapper.readValue(restResponseEntity, UserInfoResponse.class);
return result;
@@ -193,7 +208,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
RecentMediaResponse result = mapper.readValue(restResponseEntity, RecentMediaResponse.class);
return result;
@@ -234,7 +248,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(1, 1000, new InstagramRetryHandler())
.getResponseAsString();
RecentMediaResponse result = mapper.readValue(restResponseEntity, RecentMediaResponse.class);
return result;
@@ -272,7 +285,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
RecentMediaResponse result = mapper.readValue(restResponseEntity, RecentMediaResponse.class);
return result;
@@ -310,7 +322,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
SearchUsersResponse result = mapper.readValue(restResponseEntity, SearchUsersResponse.class);
return result;
@@ -343,7 +354,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
CommentsResponse result = mapper.readValue(restResponseEntity, CommentsResponse.class);
return result;
@@ -375,7 +385,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
UsersInfoResponse result = mapper.readValue(restResponseEntity, UsersInfoResponse.class);
return result;
@@ -407,7 +416,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
MediaResponse result = mapper.readValue(restResponseEntity, MediaResponse.class);
return result;
@@ -439,7 +447,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
MediaResponse result = mapper.readValue(restResponseEntity, MediaResponse.class);
return result;
@@ -474,7 +481,6 @@ public class Instagram implements Media, Users {
RestCall restCall = restClient.doGet(uriBuilder.build().toString());
try {
String restResponseEntity = restCall
- .setRetryable(configuration.getRetryMax().intValue(), configuration.getRetrySleepMs().intValue(), new InstagramRetryHandler())
.getResponseAsString();
SearchMediaResponse result = mapper.readValue(restResponseEntity, SearchMediaResponse.class);
return result;
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6bb0ab1f/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/InstagramRetryHandler.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/InstagramRetryHandler.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/InstagramRetryHandler.java
index f92eabf..51cd395 100644
--- a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/InstagramRetryHandler.java
+++ b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/api/InstagramRetryHandler.java
@@ -20,6 +20,7 @@ package org.apache.streams.instagram.api;
import org.apache.streams.util.api.requests.backoff.AbstractBackOffStrategy;
+import org.apache.http.HttpResponse;
import org.apache.juneau.rest.client.RetryOn;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -27,18 +28,33 @@ import org.slf4j.LoggerFactory;
/**
* Handle expected and unexpected exceptions.
*/
-public class InstagramRetryHandler implements RetryOn {
+public class InstagramRetryHandler extends RetryOn {
private static final Logger LOGGER = LoggerFactory.getLogger(InstagramRetryHandler.class);
private static AbstractBackOffStrategy backoff_strategy;
- @Override
- public boolean onCode(int httpResponseCode) {
- if ( httpResponseCode > 400 ) {
- return true;
- } else {
- return false;
+ protected boolean onResponse(HttpResponse response) {
+ LOGGER.debug(response.toString());
+ switch(response.getStatusLine().getStatusCode()) {
+ case 200: // Response.Status.OK
+ case 304: // Response.Status.NOT_MODIFIED
+ case 400: // Response.Status.BAD_REQUEST
+ return false;
+ case 401: // Response.Status.UNAUTHORIZED
+ return true;
+ case 403: // Response.Status.FORBIDDEN
+ case 404: // Response.Status.NOT_FOUND
+ case 406: // Response.Status.NOT_ACCEPTABLE
+ case 410: // Response.Status.GONE
+ return false;
+ case 500: // Response.Status.INTERNAL_SERVER_ERROR
+ case 502: // Bad Gateway
+ case 503: // Response.Status.SERVICE_UNAVAILABLE
+ case 504: // Gateway Timeout
+ return true;
+ default:
+ return false;
}
}
}