From 16ecd1dab603357f8ecd127969793d360ba560a6 Mon Sep 17 00:00:00 2001 From: cyrus Date: Tue, 11 Jun 2019 13:59:40 +0900 Subject: [PATCH 01/25] Fix request with CSRFToken --- .../me/postaddict/instagram/scraper/Instagram.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/postaddict/instagram/scraper/Instagram.java b/src/main/java/me/postaddict/instagram/scraper/Instagram.java index 09d3179..e49cb28 100644 --- a/src/main/java/me/postaddict/instagram/scraper/Instagram.java +++ b/src/main/java/me/postaddict/instagram/scraper/Instagram.java @@ -30,7 +30,9 @@ import me.postaddict.instagram.scraper.request.parameters.MediaCode; import me.postaddict.instagram.scraper.request.parameters.TagName; import me.postaddict.instagram.scraper.request.parameters.UserParameter; +import okhttp3.Cookie; import okhttp3.FormBody; +import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; @@ -53,7 +55,7 @@ public Instagram(OkHttpClient httpClient) { protected Request withCsrfToken(Request request) { return request.newBuilder() - .addHeader("X-CSRFToken", csrf_token) + .addHeader("X-CSRFToken", getCSRFToken()) .addHeader("X-Instagram-AJAX", (rollout_hash.isEmpty() ? "1" : rollout_hash)) .build(); } @@ -76,6 +78,15 @@ private void getCSRFToken(ResponseBody body) throws IOException { this.csrf_token=getToken("\"csrf_token\":\"",32,body.byteStream()); } + private String getCSRFToken() { + for (Cookie cookie : this.httpClient.cookieJar().loadForRequest(HttpUrl.parse("https://www.instagram.com"))) { + if ("csrftoken".equals(cookie.name())) { + return cookie.value(); + } + } + return csrf_token; + } + private void getRolloutHash(ResponseBody body){ try { this.rollout_hash=getToken("\"rollout_hash\":\"",12,body.byteStream()); From 926b728495cae8bcdb38ac7e8e2f3fe1d3b7b397 Mon Sep 17 00:00:00 2001 From: cyrus Date: Wed, 12 Jun 2019 18:19:25 +0900 Subject: [PATCH 02/25] Change dependency library version to mavencentral jar's vesion --- pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 70d7934..4313db2 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ com.squareup.okhttp3 okhttp - 3.12.0 + 3.2.0 org.projectlombok @@ -84,13 +84,13 @@ org.eclipse.persistence org.eclipse.persistence.moxy - 2.5.0 + 2.7.0 org.hibernate.javax.persistence hibernate-jpa-2.1-api - 1.0.2.Final + 1.0.0.Final @@ -108,13 +108,13 @@ com.fasterxml.jackson.core jackson-databind - 2.9.7 + 2.9.2 com.squareup.okhttp3 logging-interceptor - 3.11.0 + 3.2.0 From cfdfad35052c2a603e16d38f209d721e5af1bccf Mon Sep 17 00:00:00 2001 From: cyrus Date: Wed, 12 Jun 2019 18:43:37 +0900 Subject: [PATCH 03/25] Add is_business_account flag support --- .../java/me/postaddict/instagram/scraper/model/Account.java | 1 + .../me/postaddict/instagram/scraper/model/account-binding.json | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/postaddict/instagram/scraper/model/Account.java b/src/main/java/me/postaddict/instagram/scraper/model/Account.java index bdbd003..9ad5723 100644 --- a/src/main/java/me/postaddict/instagram/scraper/model/Account.java +++ b/src/main/java/me/postaddict/instagram/scraper/model/Account.java @@ -40,4 +40,5 @@ public class Account { @Transient private PageObject media; private Date lastUpdated = new Date(); + private Boolean isBusinessAccount; } diff --git a/src/main/resources/me/postaddict/instagram/scraper/model/account-binding.json b/src/main/resources/me/postaddict/instagram/scraper/model/account-binding.json index 2f7e9c3..59c4633 100644 --- a/src/main/resources/me/postaddict/instagram/scraper/model/account-binding.json +++ b/src/main/resources/me/postaddict/instagram/scraper/model/account-binding.json @@ -35,7 +35,8 @@ {"java-attribute": "profilePicUrlHd", "type": "java.lang.String", "xml-path": "profile_pic_url_hd/text()"}, {"java-attribute": "requestedByViewer", "type": "java.lang.Boolean", "xml-path": "requested_by_viewer/text()"}, {"java-attribute": "connectedFbPage", "type": "java.lang.String", "xml-path": "connected_fb_page/text()"}, - {"java-attribute": "media", "type": "me.postaddict.instagram.scraper.model.PageObject", "xml-path": "edge_owner_to_timeline_media"} + {"java-attribute": "media", "type": "me.postaddict.instagram.scraper.model.PageObject", "xml-path": "edge_owner_to_timeline_media"}, + {"java-attribute": "isBusinessAccount", "type": "java.lang.String", "xml-path": "is_business_account/text()"} ] } }, From 9d619039351515256959d3e105ba98a343b1bc32 Mon Sep 17 00:00:00 2001 From: cyrus Date: Wed, 12 Jun 2019 19:07:15 +0900 Subject: [PATCH 04/25] Add method for get login user ID --- .../instagram/scraper/AuthenticatedInsta.java | 2 ++ .../me/postaddict/instagram/scraper/Instagram.java | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/postaddict/instagram/scraper/AuthenticatedInsta.java b/src/main/java/me/postaddict/instagram/scraper/AuthenticatedInsta.java index 91e0238..320229f 100644 --- a/src/main/java/me/postaddict/instagram/scraper/AuthenticatedInsta.java +++ b/src/main/java/me/postaddict/instagram/scraper/AuthenticatedInsta.java @@ -25,4 +25,6 @@ public interface AuthenticatedInsta extends AnonymousInsta { PageObject getFollowers(long userId, int pageCount) throws IOException; ActivityFeed getActivityFeed() throws IOException; + + Long getLoginUserId(); } diff --git a/src/main/java/me/postaddict/instagram/scraper/Instagram.java b/src/main/java/me/postaddict/instagram/scraper/Instagram.java index e49cb28..258682e 100644 --- a/src/main/java/me/postaddict/instagram/scraper/Instagram.java +++ b/src/main/java/me/postaddict/instagram/scraper/Instagram.java @@ -79,7 +79,7 @@ private void getCSRFToken(ResponseBody body) throws IOException { } private String getCSRFToken() { - for (Cookie cookie : this.httpClient.cookieJar().loadForRequest(HttpUrl.parse("https://www.instagram.com"))) { + for (Cookie cookie : this.httpClient.cookieJar().loadForRequest(HttpUrl.parse(Endpoint.BASE_URL))) { if ("csrftoken".equals(cookie.name())) { return cookie.value(); } @@ -355,4 +355,14 @@ private void validateTagName(String tag) { throw new IllegalArgumentException("Please provide non empty tag name that not starts with #"); } } + + @Override + public Long getLoginUserId() { + for (Cookie cookie : this.httpClient.cookieJar().loadForRequest(HttpUrl.parse(Endpoint.BASE_URL))) { + if ("ds_user_id".equals(cookie.name())) { + return Long.parseLong(cookie.value()); + } + } + return null; + } } From 41bfeb22ed9f63ade2107cee72d9cecbed2e68c4 Mon Sep 17 00:00:00 2001 From: cyrus Date: Thu, 13 Jun 2019 14:50:11 +0900 Subject: [PATCH 05/25] Add request header parameters --- src/main/java/me/postaddict/instagram/scraper/Instagram.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/me/postaddict/instagram/scraper/Instagram.java b/src/main/java/me/postaddict/instagram/scraper/Instagram.java index 258682e..69e40d3 100644 --- a/src/main/java/me/postaddict/instagram/scraper/Instagram.java +++ b/src/main/java/me/postaddict/instagram/scraper/Instagram.java @@ -57,6 +57,8 @@ protected Request withCsrfToken(Request request) { return request.newBuilder() .addHeader("X-CSRFToken", getCSRFToken()) .addHeader("X-Instagram-AJAX", (rollout_hash.isEmpty() ? "1" : rollout_hash)) + .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader("X-IG-App-ID", "936619743392459") .build(); } From b8738b7538936d0ac4fd6b7d1ecfa2fa7498ec21 Mon Sep 17 00:00:00 2001 From: cyrus Date: Fri, 14 Jun 2019 12:05:26 +0900 Subject: [PATCH 06/25] Add login request parameter, Add common request header --- .../java/me/postaddict/instagram/scraper/Instagram.java | 4 +++- .../me/postaddict/instagram/scraper/InstagramFactory.java | 4 ++-- ...erAgentInterceptor.java => FakeBrowserInterceptor.java} | 7 +++++-- .../postaddict/instagram/scraper/AnonymousInstaTest.java | 4 ++-- .../instagram/scraper/AuthenticatedInstaTest.java | 6 +++--- .../me/postaddict/instagram/scraper/MultiThreadTest.java | 4 ++-- .../postaddict/instagram/scraper/StatelessInstaTest.java | 4 ++-- 7 files changed, 19 insertions(+), 14 deletions(-) rename src/main/java/me/postaddict/instagram/scraper/interceptor/{UserAgentInterceptor.java => FakeBrowserInterceptor.java} (70%) diff --git a/src/main/java/me/postaddict/instagram/scraper/Instagram.java b/src/main/java/me/postaddict/instagram/scraper/Instagram.java index 69e40d3..6fe45e0 100644 --- a/src/main/java/me/postaddict/instagram/scraper/Instagram.java +++ b/src/main/java/me/postaddict/instagram/scraper/Instagram.java @@ -120,11 +120,13 @@ public void login(String username, String password) throws IOException { RequestBody formBody = new FormBody.Builder() .add("username", username) .add("password", password) + .add("queryParams", "{}") + .add("optIntoOneTap", "true") .build(); Request request = new Request.Builder() .url(Endpoint.LOGIN_URL) - .header(Endpoint.REFERER, Endpoint.BASE_URL + "/") + .header(Endpoint.REFERER, Endpoint.BASE_URL + "/accounts/login/") .post(formBody) .build(); diff --git a/src/main/java/me/postaddict/instagram/scraper/InstagramFactory.java b/src/main/java/me/postaddict/instagram/scraper/InstagramFactory.java index 425548c..0a0250f 100644 --- a/src/main/java/me/postaddict/instagram/scraper/InstagramFactory.java +++ b/src/main/java/me/postaddict/instagram/scraper/InstagramFactory.java @@ -4,7 +4,7 @@ import me.postaddict.instagram.scraper.cookie.CookieHashSet; import me.postaddict.instagram.scraper.cookie.DefaultCookieJar; import me.postaddict.instagram.scraper.interceptor.ErrorInterceptor; -import me.postaddict.instagram.scraper.interceptor.UserAgentInterceptor; +import me.postaddict.instagram.scraper.interceptor.FakeBrowserInterceptor; import okhttp3.OkHttpClient; import java.io.IOException; @@ -16,7 +16,7 @@ public static Instagram getAuthenticatedInstagramClient(String login, String pas throws IOException{ OkHttpClient httpClient = new OkHttpClient.Builder() - .addInterceptor(new UserAgentInterceptor(userAgent)) + .addInterceptor(new FakeBrowserInterceptor(userAgent)) .addInterceptor(new ErrorInterceptor()) .cookieJar(new DefaultCookieJar(new CookieHashSet())) .build(); diff --git a/src/main/java/me/postaddict/instagram/scraper/interceptor/UserAgentInterceptor.java b/src/main/java/me/postaddict/instagram/scraper/interceptor/FakeBrowserInterceptor.java similarity index 70% rename from src/main/java/me/postaddict/instagram/scraper/interceptor/UserAgentInterceptor.java rename to src/main/java/me/postaddict/instagram/scraper/interceptor/FakeBrowserInterceptor.java index c55572c..e318f0a 100644 --- a/src/main/java/me/postaddict/instagram/scraper/interceptor/UserAgentInterceptor.java +++ b/src/main/java/me/postaddict/instagram/scraper/interceptor/FakeBrowserInterceptor.java @@ -6,11 +6,11 @@ import java.io.IOException; -public class UserAgentInterceptor implements Interceptor { +public class FakeBrowserInterceptor implements Interceptor { private final String userAgent; - public UserAgentInterceptor(String userAgent) { + public FakeBrowserInterceptor(String userAgent) { this.userAgent = userAgent; } @@ -23,6 +23,9 @@ public Response intercept(Chain chain) throws IOException { Request originalRequest = chain.request(); Request newRequest = originalRequest.newBuilder() .header("User-Agent", userAgent) + .header("Accept", "*/*") + .header("Accept-Language", "ja,en-US;q=0.7,en;q=0.3") + .header("DNT", "1") .build(); return chain.proceed(newRequest); } diff --git a/src/test/java/me/postaddict/instagram/scraper/AnonymousInstaTest.java b/src/test/java/me/postaddict/instagram/scraper/AnonymousInstaTest.java index cffd637..22f11c1 100644 --- a/src/test/java/me/postaddict/instagram/scraper/AnonymousInstaTest.java +++ b/src/test/java/me/postaddict/instagram/scraper/AnonymousInstaTest.java @@ -3,7 +3,7 @@ import me.postaddict.instagram.scraper.cookie.CookieHashSet; import me.postaddict.instagram.scraper.cookie.DefaultCookieJar; import me.postaddict.instagram.scraper.interceptor.ErrorInterceptor; -import me.postaddict.instagram.scraper.interceptor.UserAgentInterceptor; +import me.postaddict.instagram.scraper.interceptor.FakeBrowserInterceptor; import me.postaddict.instagram.scraper.interceptor.UserAgents; import static org.assertj.core.api.Assertions.*; import me.postaddict.instagram.scraper.model.*; @@ -30,7 +30,7 @@ public static void setUp() throws Exception { loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient httpClient = new OkHttpClient.Builder() .addNetworkInterceptor(loggingInterceptor) - .addInterceptor(new UserAgentInterceptor(UserAgents.OSX_CHROME)) + .addInterceptor(new FakeBrowserInterceptor(UserAgents.OSX_CHROME)) .addInterceptor(new ErrorInterceptor()) .cookieJar(new DefaultCookieJar(new CookieHashSet())) .build(); diff --git a/src/test/java/me/postaddict/instagram/scraper/AuthenticatedInstaTest.java b/src/test/java/me/postaddict/instagram/scraper/AuthenticatedInstaTest.java index e691a39..3c2e751 100644 --- a/src/test/java/me/postaddict/instagram/scraper/AuthenticatedInstaTest.java +++ b/src/test/java/me/postaddict/instagram/scraper/AuthenticatedInstaTest.java @@ -4,7 +4,7 @@ import me.postaddict.instagram.scraper.cookie.DefaultCookieJar; import me.postaddict.instagram.scraper.exception.InstagramAuthException; import me.postaddict.instagram.scraper.interceptor.ErrorInterceptor; -import me.postaddict.instagram.scraper.interceptor.UserAgentInterceptor; +import me.postaddict.instagram.scraper.interceptor.FakeBrowserInterceptor; import me.postaddict.instagram.scraper.interceptor.UserAgents; import me.postaddict.instagram.scraper.model.*; import okhttp3.OkHttpClient; @@ -31,7 +31,7 @@ public static void setUp() throws Exception { loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); OkHttpClient httpClient = new OkHttpClient.Builder() .addNetworkInterceptor(loggingInterceptor) - .addInterceptor(new UserAgentInterceptor(UserAgents.OSX_CHROME)) + .addInterceptor(new FakeBrowserInterceptor(UserAgents.OSX_CHROME)) .addInterceptor(new ErrorInterceptor()) .cookieJar(new DefaultCookieJar(new CookieHashSet())) .build(); @@ -47,7 +47,7 @@ public void testLoginWithInvalidCredentials() throws Exception { loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); OkHttpClient httpClient = new OkHttpClient.Builder() .addNetworkInterceptor(loggingInterceptor) - .addInterceptor(new UserAgentInterceptor(UserAgents.OSX_CHROME)) + .addInterceptor(new FakeBrowserInterceptor(UserAgents.OSX_CHROME)) .addInterceptor(new ErrorInterceptor()) .cookieJar(new DefaultCookieJar(new CookieHashSet())) .build(); diff --git a/src/test/java/me/postaddict/instagram/scraper/MultiThreadTest.java b/src/test/java/me/postaddict/instagram/scraper/MultiThreadTest.java index ee32ea4..9d3f023 100644 --- a/src/test/java/me/postaddict/instagram/scraper/MultiThreadTest.java +++ b/src/test/java/me/postaddict/instagram/scraper/MultiThreadTest.java @@ -3,7 +3,7 @@ import me.postaddict.instagram.scraper.cookie.CookieHashSet; import me.postaddict.instagram.scraper.cookie.DefaultCookieJar; import me.postaddict.instagram.scraper.interceptor.ErrorInterceptor; -import me.postaddict.instagram.scraper.interceptor.UserAgentInterceptor; +import me.postaddict.instagram.scraper.interceptor.FakeBrowserInterceptor; import me.postaddict.instagram.scraper.interceptor.UserAgents; import me.postaddict.instagram.scraper.model.Media; import okhttp3.OkHttpClient; @@ -35,7 +35,7 @@ public static void setUp() throws Exception { loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient httpClient = new OkHttpClient.Builder() .addNetworkInterceptor(loggingInterceptor) - .addInterceptor(new UserAgentInterceptor(UserAgents.OSX_CHROME)) + .addInterceptor(new FakeBrowserInterceptor(UserAgents.OSX_CHROME)) .addInterceptor(new ErrorInterceptor()) .cookieJar(new DefaultCookieJar(new CookieHashSet())) .build(); diff --git a/src/test/java/me/postaddict/instagram/scraper/StatelessInstaTest.java b/src/test/java/me/postaddict/instagram/scraper/StatelessInstaTest.java index 4f39fc8..f8c3819 100644 --- a/src/test/java/me/postaddict/instagram/scraper/StatelessInstaTest.java +++ b/src/test/java/me/postaddict/instagram/scraper/StatelessInstaTest.java @@ -1,7 +1,7 @@ package me.postaddict.instagram.scraper; import me.postaddict.instagram.scraper.interceptor.ErrorInterceptor; -import me.postaddict.instagram.scraper.interceptor.UserAgentInterceptor; +import me.postaddict.instagram.scraper.interceptor.FakeBrowserInterceptor; import me.postaddict.instagram.scraper.interceptor.UserAgents; import me.postaddict.instagram.scraper.model.Account; import me.postaddict.instagram.scraper.model.Media; @@ -29,7 +29,7 @@ public static void setUp() throws Exception { loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); OkHttpClient httpClient = new OkHttpClient.Builder() .addNetworkInterceptor(loggingInterceptor) - .addInterceptor(new UserAgentInterceptor(UserAgents.OSX_CHROME)) + .addInterceptor(new FakeBrowserInterceptor(UserAgents.OSX_CHROME)) .addInterceptor(new ErrorInterceptor()) .build(); client = new Instagram(httpClient); From 7807d854024f75f617745defa8678231c031a2f6 Mon Sep 17 00:00:00 2001 From: cyrus Date: Fri, 14 Jun 2019 13:42:18 +0900 Subject: [PATCH 07/25] Fix getAccountById method causes NullPointerException --- src/main/java/me/postaddict/instagram/scraper/Instagram.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/postaddict/instagram/scraper/Instagram.java b/src/main/java/me/postaddict/instagram/scraper/Instagram.java index 6fe45e0..dda3df3 100644 --- a/src/main/java/me/postaddict/instagram/scraper/Instagram.java +++ b/src/main/java/me/postaddict/instagram/scraper/Instagram.java @@ -145,7 +145,7 @@ public Account getAccountById(long id) throws IOException { .build(); Response response = executeHttpRequest(withCsrfToken(request)); try(InputStream jsonStream = response.body().byteStream()) { - return getMediaByCode(mapper.getLastMediaShortCode(jsonStream)).getOwner(); + return getAccountByUsername(getMediaByCode(mapper.getLastMediaShortCode(jsonStream)).getOwner().getUsername()); } } From 597d0fede4ba4c4a1c348ce17260771be8faed46 Mon Sep 17 00:00:00 2001 From: cyrus Date: Wed, 19 Jun 2019 12:46:09 +0900 Subject: [PATCH 08/25] Add error type parameter support on InstagramException --- .../instagram/scraper/ErrorType.java | 16 ++++++++ .../instagram/scraper/Instagram.java | 2 +- .../exception/InstagramAuthException.java | 11 +++++- .../scraper/exception/InstagramException.java | 16 +++++++- .../exception/InstagramNotFoundException.java | 8 +++- .../scraper/interceptor/ErrorInterceptor.java | 39 ++++++++++++++----- 6 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 src/main/java/me/postaddict/instagram/scraper/ErrorType.java diff --git a/src/main/java/me/postaddict/instagram/scraper/ErrorType.java b/src/main/java/me/postaddict/instagram/scraper/ErrorType.java new file mode 100644 index 0000000..fd93ee7 --- /dev/null +++ b/src/main/java/me/postaddict/instagram/scraper/ErrorType.java @@ -0,0 +1,16 @@ +package me.postaddict.instagram.scraper; + +public enum ErrorType { + + UNAUTHORIZED, + + TEMPORARY_ACTION_BLOCKED, + + ACTION_BLOCKED, + + FOLLOWING_THE_MAX_LIMIT_OF_ACCOUNTS, + + INSTAGRAM_SERVER_ERROR, + + UNKNOWN_ERROR +} diff --git a/src/main/java/me/postaddict/instagram/scraper/Instagram.java b/src/main/java/me/postaddict/instagram/scraper/Instagram.java index dda3df3..ed12c7f 100644 --- a/src/main/java/me/postaddict/instagram/scraper/Instagram.java +++ b/src/main/java/me/postaddict/instagram/scraper/Instagram.java @@ -133,7 +133,7 @@ public void login(String username, String password) throws IOException { Response response = executeHttpRequest(withCsrfToken(request)); try(InputStream jsonStream = response.body().byteStream()) { if(!mapper.isAuthenticated(jsonStream)){ - throw new InstagramAuthException("Credentials rejected by instagram"); + throw new InstagramAuthException("Credentials rejected by instagram", ErrorType.UNAUTHORIZED); } } } diff --git a/src/main/java/me/postaddict/instagram/scraper/exception/InstagramAuthException.java b/src/main/java/me/postaddict/instagram/scraper/exception/InstagramAuthException.java index f1a3f64..79725c4 100644 --- a/src/main/java/me/postaddict/instagram/scraper/exception/InstagramAuthException.java +++ b/src/main/java/me/postaddict/instagram/scraper/exception/InstagramAuthException.java @@ -1,10 +1,17 @@ package me.postaddict.instagram.scraper.exception; +import me.postaddict.instagram.scraper.ErrorType; + public class InstagramAuthException extends InstagramException { - public InstagramAuthException(){} + public InstagramAuthException() { + } public InstagramAuthException(String message) { - super(message); + super(message, ErrorType.UNKNOWN_ERROR); + } + + public InstagramAuthException(String message, ErrorType errorType) { + super(message, errorType); } } diff --git a/src/main/java/me/postaddict/instagram/scraper/exception/InstagramException.java b/src/main/java/me/postaddict/instagram/scraper/exception/InstagramException.java index d464de8..bb16e68 100644 --- a/src/main/java/me/postaddict/instagram/scraper/exception/InstagramException.java +++ b/src/main/java/me/postaddict/instagram/scraper/exception/InstagramException.java @@ -2,12 +2,26 @@ import java.io.IOException; +import me.postaddict.instagram.scraper.ErrorType; + public class InstagramException extends IOException { + + private ErrorType errorType; public InstagramException() { } - public InstagramException(String message) { + public InstagramException(String message, ErrorType errorType) { super(message); + this.errorType = errorType; + } + + public ErrorType getErrorType() { + return errorType; + } + + @Override + public String getMessage() { + return super.getMessage() + " : " + getErrorType(); } } diff --git a/src/main/java/me/postaddict/instagram/scraper/exception/InstagramNotFoundException.java b/src/main/java/me/postaddict/instagram/scraper/exception/InstagramNotFoundException.java index 48c8438..9c3119e 100644 --- a/src/main/java/me/postaddict/instagram/scraper/exception/InstagramNotFoundException.java +++ b/src/main/java/me/postaddict/instagram/scraper/exception/InstagramNotFoundException.java @@ -1,11 +1,17 @@ package me.postaddict.instagram.scraper.exception; +import me.postaddict.instagram.scraper.ErrorType; + public class InstagramNotFoundException extends InstagramException { public InstagramNotFoundException() { } public InstagramNotFoundException(String message) { - super(message); + super(message, ErrorType.UNKNOWN_ERROR); + } + + public InstagramNotFoundException(String message, ErrorType errorType) { + super(message, errorType); } } diff --git a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java index 1a13161..7b50861 100644 --- a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java +++ b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java @@ -1,5 +1,6 @@ package me.postaddict.instagram.scraper.interceptor; +import me.postaddict.instagram.scraper.ErrorType; import me.postaddict.instagram.scraper.exception.InstagramAuthException; import me.postaddict.instagram.scraper.exception.InstagramException; import me.postaddict.instagram.scraper.exception.InstagramNotFoundException; @@ -17,18 +18,36 @@ public Response intercept(Chain chain) throws IOException { if (code == 200) { return response; } else { + String bodyString = String.valueOf(response.body().string()); response.body().close(); - } - switch (code) { - case 401: - throw new InstagramAuthException("Unauthorized"); - case 403: - throw new InstagramAuthException("Access denied"); - case 404: - throw new InstagramNotFoundException("Resource does not exist"); - default: - throw new InstagramException("Response code is "+ code + "."); + ErrorType errorType = ErrorType.UNKNOWN_ERROR; + switch (code) { + case 400: + if (bodyString.contains("Sorry, you're following the max limit of accounts.")) { + errorType = ErrorType.FOLLOWING_THE_MAX_LIMIT_OF_ACCOUNTS; + } else if (bodyString.contains("Action Blocked") || + bodyString.contains("\\u30a2\\u30af\\u30b7\\u30e7\\u30f3\\u306f\\u30d6\\u30ed\\u30c3\\u30af\\u3055\\u308c\\u3066\\u3044\\u307e\\u3059")) { + errorType = ErrorType.ACTION_BLOCKED; + } + throw new InstagramAuthException("Bad Request", errorType); + case 401: + throw new InstagramAuthException("Unauthorized", ErrorType.UNAUTHORIZED); + case 403: + if (bodyString.contains("Please wait a few minutes before you try again.") || + bodyString.contains("数分してからもう一度実行してください。")) { + errorType = ErrorType.TEMPORARY_ACTION_BLOCKED; + } else if (bodyString.contains("unauthorized")) { + errorType = ErrorType.UNAUTHORIZED; + } + throw new InstagramAuthException("Access denied", errorType); + case 404: + throw new InstagramNotFoundException("Resource does not exist", errorType); + case 502: + throw new InstagramException("Bad Gateway", ErrorType.INSTAGRAM_SERVER_ERROR); + default: + throw new InstagramException("Response code is " + code + ".", errorType); + } } } } From 4ab22d2cb64f72c302285afdbb5080ab1fc5cf15 Mon Sep 17 00:00:00 2001 From: cyrus Date: Fri, 21 Jun 2019 15:55:33 +0900 Subject: [PATCH 09/25] Add CHECKPOINT_REQUIRED error type --- src/main/java/me/postaddict/instagram/scraper/ErrorType.java | 2 ++ .../instagram/scraper/interceptor/ErrorInterceptor.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/java/me/postaddict/instagram/scraper/ErrorType.java b/src/main/java/me/postaddict/instagram/scraper/ErrorType.java index fd93ee7..e754ca4 100644 --- a/src/main/java/me/postaddict/instagram/scraper/ErrorType.java +++ b/src/main/java/me/postaddict/instagram/scraper/ErrorType.java @@ -2,6 +2,8 @@ public enum ErrorType { + CHECKPOINT_REQUIRED, + UNAUTHORIZED, TEMPORARY_ACTION_BLOCKED, diff --git a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java index 7b50861..c6a9ca0 100644 --- a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java +++ b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java @@ -29,6 +29,8 @@ public Response intercept(Chain chain) throws IOException { } else if (bodyString.contains("Action Blocked") || bodyString.contains("\\u30a2\\u30af\\u30b7\\u30e7\\u30f3\\u306f\\u30d6\\u30ed\\u30c3\\u30af\\u3055\\u308c\\u3066\\u3044\\u307e\\u3059")) { errorType = ErrorType.ACTION_BLOCKED; + } else if (bodyString.contains("checkpoint_required")) { + errorType = ErrorType.CHECKPOINT_REQUIRED; } throw new InstagramAuthException("Bad Request", errorType); case 401: From 220249b3da9959b3f7d2a7f60b602da602cc506b Mon Sep 17 00:00:00 2001 From: cyrus Date: Fri, 21 Jun 2019 16:10:04 +0900 Subject: [PATCH 10/25] Add TWO_FACTOR_REQUIRED error type --- src/main/java/me/postaddict/instagram/scraper/ErrorType.java | 2 ++ .../instagram/scraper/interceptor/ErrorInterceptor.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/java/me/postaddict/instagram/scraper/ErrorType.java b/src/main/java/me/postaddict/instagram/scraper/ErrorType.java index e754ca4..d870abe 100644 --- a/src/main/java/me/postaddict/instagram/scraper/ErrorType.java +++ b/src/main/java/me/postaddict/instagram/scraper/ErrorType.java @@ -4,6 +4,8 @@ public enum ErrorType { CHECKPOINT_REQUIRED, + TWO_FACTOR_REQUIRED, + UNAUTHORIZED, TEMPORARY_ACTION_BLOCKED, diff --git a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java index c6a9ca0..2e274e7 100644 --- a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java +++ b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java @@ -31,6 +31,8 @@ public Response intercept(Chain chain) throws IOException { errorType = ErrorType.ACTION_BLOCKED; } else if (bodyString.contains("checkpoint_required")) { errorType = ErrorType.CHECKPOINT_REQUIRED; + } else if (bodyString.contains("two_factor_required")) { + errorType = ErrorType.TWO_FACTOR_REQUIRED; } throw new InstagramAuthException("Bad Request", errorType); case 401: From d713b9b762d1185bf518c0f2fe9cc343eda0ff38 Mon Sep 17 00:00:00 2001 From: cyrus Date: Sat, 22 Jun 2019 15:37:19 +0900 Subject: [PATCH 11/25] Fix ErrorType specific logic --- .../instagram/scraper/interceptor/ErrorInterceptor.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java index 2e274e7..bbc7c52 100644 --- a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java +++ b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java @@ -26,8 +26,9 @@ public Response intercept(Chain chain) throws IOException { case 400: if (bodyString.contains("Sorry, you're following the max limit of accounts.")) { errorType = ErrorType.FOLLOWING_THE_MAX_LIMIT_OF_ACCOUNTS; - } else if (bodyString.contains("Action Blocked") || - bodyString.contains("\\u30a2\\u30af\\u30b7\\u30e7\\u30f3\\u306f\\u30d6\\u30ed\\u30c3\\u30af\\u3055\\u308c\\u3066\\u3044\\u307e\\u3059")) { + } else if (bodyString.contains("feedback_required") || + bodyString.contains("Action Blocked") || + bodyString.contains("\\u30d6\\u30ed\\u30c3\\u30af\\u3055\\u308c\\u3066\\u3044\\u307e\\u3059")) { errorType = ErrorType.ACTION_BLOCKED; } else if (bodyString.contains("checkpoint_required")) { errorType = ErrorType.CHECKPOINT_REQUIRED; From e0cb1caf9f992eba062f0ff83c36afb9c4086dbf Mon Sep 17 00:00:00 2001 From: cyrus Date: Wed, 26 Jun 2019 19:40:36 +0900 Subject: [PATCH 12/25] Change Exception type --- .../instagram/scraper/interceptor/ErrorInterceptor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java index bbc7c52..f785740 100644 --- a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java +++ b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java @@ -35,7 +35,7 @@ public Response intercept(Chain chain) throws IOException { } else if (bodyString.contains("two_factor_required")) { errorType = ErrorType.TWO_FACTOR_REQUIRED; } - throw new InstagramAuthException("Bad Request", errorType); + throw new InstagramException("Bad Request", errorType); case 401: throw new InstagramAuthException("Unauthorized", ErrorType.UNAUTHORIZED); case 403: From 74074afff3c8968cee37cdc2b18f08f4e328be9d Mon Sep 17 00:00:00 2001 From: cyrus Date: Wed, 3 Jul 2019 19:12:23 +0900 Subject: [PATCH 13/25] Add RATE_LIMITED error type --- src/main/java/me/postaddict/instagram/scraper/ErrorType.java | 2 ++ .../instagram/scraper/interceptor/ErrorInterceptor.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/java/me/postaddict/instagram/scraper/ErrorType.java b/src/main/java/me/postaddict/instagram/scraper/ErrorType.java index d870abe..3e45fc3 100644 --- a/src/main/java/me/postaddict/instagram/scraper/ErrorType.java +++ b/src/main/java/me/postaddict/instagram/scraper/ErrorType.java @@ -14,6 +14,8 @@ public enum ErrorType { FOLLOWING_THE_MAX_LIMIT_OF_ACCOUNTS, + RATE_LIMITED, + INSTAGRAM_SERVER_ERROR, UNKNOWN_ERROR diff --git a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java index f785740..09aae75 100644 --- a/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java +++ b/src/main/java/me/postaddict/instagram/scraper/interceptor/ErrorInterceptor.java @@ -48,6 +48,8 @@ public Response intercept(Chain chain) throws IOException { throw new InstagramAuthException("Access denied", errorType); case 404: throw new InstagramNotFoundException("Resource does not exist", errorType); + case 429: + throw new InstagramException("Rate limited", ErrorType.RATE_LIMITED); case 502: throw new InstagramException("Bad Gateway", ErrorType.INSTAGRAM_SERVER_ERROR); default: From 3ecba8028ef3fd1439eb380fbfb7443ecea9c124 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 10:41:03 +0000 Subject: [PATCH 14/25] Bump org.eclipse.persistence.moxy from 2.7.0 to 2.7.6 Bumps [org.eclipse.persistence.moxy](https://github.com/eclipse-ee4j/eclipselink) from 2.7.0 to 2.7.6. - [Release notes](https://github.com/eclipse-ee4j/eclipselink/releases) - [Commits](https://github.com/eclipse-ee4j/eclipselink/compare/2.7.0...2.7.6) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4313db2..cb24040 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,7 @@ org.eclipse.persistence org.eclipse.persistence.moxy - 2.7.0 + 2.7.6 From 309f745146e47ab5e496a4eb69d39de7299334f1 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 10:41:25 +0000 Subject: [PATCH 15/25] Bump maven-shade-plugin from 3.2.0 to 3.2.2 Bumps [maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.2.0 to 3.2.2. - [Release notes](https://github.com/apache/maven-shade-plugin/releases) - [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.2.0...maven-shade-plugin-3.2.2) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4313db2..8b5f332 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.2.0 + 3.2.2 From e0c89dc6c664ce8d8e1f68f984b0d93578dd4260 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 10:42:00 +0000 Subject: [PATCH 16/25] Bump hibernate-jpa-2.1-api from 1.0.0.Final to 1.0.2 Bumps [hibernate-jpa-2.1-api](https://github.com/hibernate/hibernate-jpa-api) from 1.0.0.Final to 1.0.2. - [Release notes](https://github.com/hibernate/hibernate-jpa-api/releases) - [Commits](https://github.com/hibernate/hibernate-jpa-api/commits/JPA2.1-1.0.2.Final) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4313db2..9cba4d7 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ org.hibernate.javax.persistence hibernate-jpa-2.1-api - 1.0.0.Final + 1.0.2 From 9f7bc6f4d694ea8adaaec832696e1ee3c3fc91d8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 10:42:28 +0000 Subject: [PATCH 17/25] Bump dom-transformation from 1.1 to 1.2 Bumps [dom-transformation](https://github.com/igor-suhorukov/dom-transformation) from 1.1 to 1.2. - [Release notes](https://github.com/igor-suhorukov/dom-transformation/releases) - [Commits](https://github.com/igor-suhorukov/dom-transformation/compare/dom-transformation-1.1...dom-transformation-1.2) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4313db2..72aefe4 100644 --- a/pom.xml +++ b/pom.xml @@ -102,7 +102,7 @@ com.github.igor-suhorukov dom-transformation - 1.1 + 1.2 From 9b3c1c4c9b3173fa15a49384af2a3990c014a0df Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2020 07:42:22 +0000 Subject: [PATCH 18/25] Bump lombok from edge-SNAPSHOT to 1.18.12 Bumps [lombok](https://github.com/rzwitserloot/lombok) from edge-SNAPSHOT to 1.18.12. - [Release notes](https://github.com/rzwitserloot/lombok/releases) - [Changelog](https://github.com/rzwitserloot/lombok/blob/master/doc/changelog.markdown) - [Commits](https://github.com/rzwitserloot/lombok/commits/v1.18.12) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d147a86..0d38311 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ org.projectlombok lombok - edge-SNAPSHOT + 1.18.12 provided From 3758e5917ca1bdf845a721d511d5e27285102b73 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2020 07:42:44 +0000 Subject: [PATCH 19/25] Bump commons-beanutils from 1.9.3 to 1.9.4 Bumps commons-beanutils from 1.9.3 to 1.9.4. Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d147a86..01af03a 100644 --- a/pom.xml +++ b/pom.xml @@ -78,7 +78,7 @@ commons-beanutils commons-beanutils - 1.9.3 + 1.9.4 From e4c7e0a4f3d4f7385126b293f014cfb09d3ed22c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2020 07:43:16 +0000 Subject: [PATCH 20/25] Bump okhttp from 3.2.0 to 4.4.0 Bumps [okhttp](https://github.com/square/okhttp) from 3.2.0 to 4.4.0. - [Release notes](https://github.com/square/okhttp/releases) - [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md) - [Commits](https://github.com/square/okhttp/compare/parent-3.2.0...parent-4.4.0) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d147a86..eebfa8a 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ com.squareup.okhttp3 okhttp - 3.2.0 + 4.4.0 org.projectlombok From 1aa7abc203cb142c60d1892619b262562401fcb9 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2020 07:43:27 +0000 Subject: [PATCH 21/25] Bump jaxb-api from 2.1 to 2.3.1 Bumps [jaxb-api](https://github.com/javaee/jaxb-spec) from 2.1 to 2.3.1. - [Release notes](https://github.com/javaee/jaxb-spec/releases) - [Commits](https://github.com/javaee/jaxb-spec/commits/2.3.1) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d147a86..7633643 100644 --- a/pom.xml +++ b/pom.xml @@ -127,7 +127,7 @@ javax.xml.bind jaxb-api - 2.1 + 2.3.1 From 0d133af5a9bc4b916560ba6f3c4063baba944632 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2020 07:43:53 +0000 Subject: [PATCH 22/25] Bump junit from 4.12 to 4.13 Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/master/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d147a86..923a4a8 100644 --- a/pom.xml +++ b/pom.xml @@ -133,7 +133,7 @@ junit junit - 4.12 + 4.13 test From 42acca9db1be81d9d9a3cc12ffe323ab9df47524 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2020 07:44:08 +0000 Subject: [PATCH 23/25] Bump maven-compiler-plugin from 3.8.0 to 3.8.1 Bumps [maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.8.0 to 3.8.1. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.8.0...maven-compiler-plugin-3.8.1) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d147a86..3cc37e4 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.8.0 + 3.8.1 1.8 1.8 From 6fa56bd8517b583798a6990d28c52408ccda478e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2020 07:44:31 +0000 Subject: [PATCH 24/25] Bump logging-interceptor from 3.2.0 to 4.4.0 Bumps [logging-interceptor](https://github.com/square/okhttp) from 3.2.0 to 4.4.0. - [Release notes](https://github.com/square/okhttp/releases) - [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md) - [Commits](https://github.com/square/okhttp/compare/parent-3.2.0...parent-4.4.0) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d147a86..2871453 100644 --- a/pom.xml +++ b/pom.xml @@ -114,7 +114,7 @@ com.squareup.okhttp3 logging-interceptor - 3.2.0 + 4.4.0 From 4b3b454e4bfa785f2bc0e07eb91808a76546309f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2020 07:44:49 +0000 Subject: [PATCH 25/25] Bump assertj-core from 3.11.1 to 3.15.0 Bumps [assertj-core](https://github.com/joel-costigliola/assertj-core) from 3.11.1 to 3.15.0. - [Release notes](https://github.com/joel-costigliola/assertj-core/releases) - [Commits](https://github.com/joel-costigliola/assertj-core/compare/assertj-core-3.11.1...assertj-core-3.15.0) Signed-off-by: dependabot-preview[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d147a86..147d414 100644 --- a/pom.xml +++ b/pom.xml @@ -120,7 +120,7 @@ org.assertj assertj-core - 3.11.1 + 3.15.0 test