private Response execute(Request request) throws IOException { Response response = okHttpClient.newCall(request).execute(); switch (response.code()) { case HTTP_MOVED_PERM: case HTTP_MOVED_TEMP: case HTTP_TEMP_REDIRECT: case HTTP_PERM_REDIRECT: // OkHttpClient does not follow the redirect with the same HTTP method. A POST is // redirected to a GET. Because of that the redirect must be manually // implemented. // See: // https://github.com/square/okhttp/blob/07309c1c7d9e296014268ebd155ebf7ef8679f6c/okhttp/src/main/java/okhttp3/internal/http/RetryAndFollowUpInterceptor.java#L316 // https://github.com/square/okhttp/issues/936#issuecomment-266430151 return followPostRedirect(response); default: return response; } }
public WebhookCallerImpl(System2 system, OkHttpClient okHttpClient) { this.system = system; this.okHttpClient = newClientWithoutRedirect(okHttpClient); }
@Override public WebhookDelivery call(Webhook webhook, WebhookPayload payload) { WebhookDelivery.Builder builder = new WebhookDelivery.Builder(); long startedAt = system.now(); builder .setAt(startedAt) .setPayload(payload) .setWebhook(webhook); try { HttpUrl url = HttpUrl.parse(webhook.getUrl()); if (url == null) { throw new IllegalArgumentException("Webhook URL is not valid: " + webhook.getUrl()); } builder.setEffectiveUrl(HttpUrlHelper.obfuscateCredentials(webhook.getUrl(), url)); Request request = buildHttpRequest(url, payload); try (Response response = execute(request)) { builder.setHttpStatus(response.code()); } } catch (Exception e) { builder.setError(e); } return builder .setDurationInMs((int) (system.now() - startedAt)) .build(); }
private WebhookCaller newSender() { SonarRuntime runtime = SonarRuntimeImpl.forSonarQube(Version.parse("6.2"), SonarQubeSide.SERVER); return new WebhookCallerImpl(system, new OkHttpClientProvider().provide(new MapSettings().asConfig(), runtime)); } }
@Override public WebhookDelivery call(Webhook webhook, WebhookPayload payload) { WebhookDelivery.Builder builder = new WebhookDelivery.Builder(); long startedAt = system.now(); builder .setAt(startedAt) .setPayload(payload) .setWebhook(webhook); try { Request request = buildHttpRequest(webhook, payload); try (Response response = execute(request)) { builder.setHttpStatus(response.code()); } } catch (Exception e) { builder.setError(e); } return builder .setDurationInMs((int) (system.now() - startedAt)) .build(); }
public WebhookCallerImpl(System2 system, OkHttpClient okHttpClient) { this.system = system; this.okHttpClient = newClientWithoutRedirect(okHttpClient); }
private Response execute(Request request) throws IOException { Response response = okHttpClient.newCall(request).execute(); switch (response.code()) { case HTTP_MOVED_PERM: case HTTP_MOVED_TEMP: case HTTP_TEMP_REDIRECT: case HTTP_PERM_REDIRECT: // OkHttpClient does not follow the redirect with the same HTTP method. A POST is // redirected to a GET. Because of that the redirect must be manually // implemented. // See: // https://github.com/square/okhttp/blob/07309c1c7d9e296014268ebd155ebf7ef8679f6c/okhttp/src/main/java/okhttp3/internal/http/RetryAndFollowUpInterceptor.java#L316 // https://github.com/square/okhttp/issues/936#issuecomment-266430151 return followPostRedirect(response); default: return response; } }