From 15b8e61e6e54331304f13870288e87f7f52643a7 Mon Sep 17 00:00:00 2001 From: Jermaine Rattray Date: Sun, 14 Nov 2021 07:29:25 -0500 Subject: [PATCH 1/2] Allow a custom initializer to be set in OAuthClient --- src/com/Upwork/api/OAuthClient.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/com/Upwork/api/OAuthClient.java b/src/com/Upwork/api/OAuthClient.java index f688e2c..3055d2e 100644 --- a/src/com/Upwork/api/OAuthClient.java +++ b/src/com/Upwork/api/OAuthClient.java @@ -20,10 +20,7 @@ import com.Upwork.ClassPreamble; import com.google.api.client.auth.oauth2.*; -import com.google.api.client.http.GenericUrl; -import com.google.api.client.http.HttpRequest; -import com.google.api.client.http.HttpRequestFactory; -import com.google.api.client.http.HttpTransport; +import com.google.api.client.http.*; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.http.json.JsonHttpContent; import com.google.api.client.json.JsonFactory; @@ -61,7 +58,7 @@ public class OAuthClient { /** Global instance of the HTTP transport. */ private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); private static final JsonFactory JSON_FACTORY = new JacksonFactory(); - private static final HttpRequestFactory HTTP_REQUEST_FACTORY = HTTP_TRANSPORT.createRequestFactory(); + private static HttpRequestFactory HTTP_REQUEST_FACTORY = HTTP_TRANSPORT.createRequestFactory(); private static String clientId = null; private static String clientSecret = null; @@ -342,4 +339,8 @@ private final String getFullUrl(String url) { return UPWORK_BASE_URL + entryPoint + url + ((entryPoint == "api") ? ("." + DATA_FORMAT) : ""); } + + public static void setRequestInitializer(final HttpRequestInitializer newInitializer) { + HTTP_REQUEST_FACTORY = HTTP_TRANSPORT.createRequestFactory(newInitializer); + } } From d98d408e86eac8b3b8439a70beb55f12f5a36458 Mon Sep 17 00:00:00 2001 From: Jermaine Rattray Date: Sun, 14 Nov 2021 07:30:05 -0500 Subject: [PATCH 2/2] Return actual errors instead of 503 in UpworkRestClient --- src/com/Upwork/api/UpworkRestClient.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/com/Upwork/api/UpworkRestClient.java b/src/com/Upwork/api/UpworkRestClient.java index a89dc0d..93ac2b6 100644 --- a/src/com/Upwork/api/UpworkRestClient.java +++ b/src/com/Upwork/api/UpworkRestClient.java @@ -19,6 +19,7 @@ package com.Upwork.api; import com.Upwork.ClassPreamble; +import com.google.api.client.http.HttpHeaders; import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpResponse; import org.json.JSONException; @@ -49,6 +50,9 @@ public static JSONObject executeRequest(HttpRequest request) throws JSONExceptio HttpResponse response = null; try { + // No matter what, do not throw for non 2xx responses + request.setThrowExceptionOnExecuteError(false); + // Process the request normally response = request.execute(); if(response.getStatusCode() == 200) { if (response.getContent() != null) { @@ -108,8 +112,9 @@ private static JSONObject genError(Integer code, String message) throws JSONExce * @return {@link JSONObject} * */ private static JSONObject genError(HttpResponse response) throws JSONException { - String code = (String) response.getHeaders().get("X-Upwork-Error-Code"); - String message = (String) response.getHeaders().get("X-Upwork-Error-Message"); + final HttpHeaders headers = response.getHeaders(); + String code = headers.getFirstHeaderStringValue("X-Upwork-Error-Code"); + String message = headers.getFirstHeaderStringValue("X-Upwork-Error-Message"); if (code == null) { code = Integer.toString(response.getStatusCode());