@Test public void isSuccess_returns_true_if_http_response_returns_2xx_code() { WebhookDelivery delivery = newBuilderTemplate() .setHttpStatus(204) .build(); assertThat(delivery.isSuccess()).isTrue(); }
@Test public void isSuccess_returns_false_if_http_response_returns_error_status() { WebhookDelivery delivery = newBuilderTemplate() .setHttpStatus(404) .build(); assertThat(delivery.isSuccess()).isFalse(); }
@Override public WebhookDelivery call(Webhook webhook, WebhookPayload payload) { Item item = requireNonNull(deliveries.poll(), "Queue is empty"); countSent.incrementAndGet(); return new WebhookDelivery.Builder() .setAt(item.at) .setHttpStatus(item.httpCode) .setDurationInMs(item.durationMs) .setError(item.throwable) .setPayload(payload) .setWebhook(webhook) .build(); }
@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(); }
@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(); }