private static Request buildHttpRequest(HttpUrl url, WebhookPayload payload) { Request.Builder request = new Request.Builder(); request.url(url); request.header(PROJECT_KEY_HEADER, payload.getProjectKey()); if (isNotEmpty(url.username())) { request.header("Authorization", Credentials.basic(url.username(), url.password(), UTF_8)); } RequestBody body = RequestBody.create(JSON, payload.getJson()); request.post(body); return request.build(); }
String password = parsedUrl.password(); if (username.isEmpty() && password.isEmpty()) { return originalUrl;
@Test public void send_basic_authentication_header_if_url_contains_credentials() throws Exception { HttpUrl url = server.url("/ping").newBuilder().username("theLogin").password("thePassword").build(); Webhook webhook = new Webhook(WEBHOOK_UUID, PROJECT_UUID, CE_TASK_UUID, RandomStringUtils.randomAlphanumeric(40),"my-webhook", url.toString()); server.enqueue(new MockResponse().setBody("pong")); WebhookDelivery delivery = newSender().call(webhook, PAYLOAD); assertThat(delivery.getWebhook().getUrl()) .isEqualTo(url.toString()) .contains("://theLogin:thePassword@"); RecordedRequest recordedRequest = takeAndVerifyPostRequest("/ping"); assertThat(recordedRequest.getHeader("Authorization")).isEqualTo(Credentials.basic(url.username(), url.password())); }
@Test public void credentials_are_propagated_to_POST_redirects() throws Exception { HttpUrl url = server.url("/redirect").newBuilder().username("theLogin").password("thePassword").build(); Webhook webhook = new Webhook(WEBHOOK_UUID, PROJECT_UUID, CE_TASK_UUID, RandomStringUtils.randomAlphanumeric(40),"my-webhook", url.toString()); // /redirect redirects to /target server.enqueue(new MockResponse().setResponseCode(307).setHeader("Location", server.url("target"))); server.enqueue(new MockResponse().setResponseCode(200)); WebhookDelivery delivery = newSender().call(webhook, PAYLOAD); assertThat(delivery.getHttpStatus().get()).isEqualTo(200); RecordedRequest redirectedRequest = takeAndVerifyPostRequest("/redirect"); assertThat(redirectedRequest.getHeader("Authorization")).isEqualTo(Credentials.basic(url.username(), url.password())); RecordedRequest targetRequest = takeAndVerifyPostRequest("/target"); assertThat(targetRequest.getHeader("Authorization")).isEqualTo(Credentials.basic(url.username(), url.password())); }
private static Request buildHttpRequest(Webhook webhook, WebhookPayload payload) { HttpUrl url = HttpUrl.parse(webhook.getUrl()); if (url == null) { throw new IllegalArgumentException("Webhook URL is not valid: " + webhook.getUrl()); } Request.Builder request = new Request.Builder(); request.url(url); request.header(PROJECT_KEY_HEADER, payload.getProjectKey()); if (isNotEmpty(url.username())) { request.header("Authorization", Credentials.basic(url.username(), url.password(), UTF_8)); } RequestBody body = RequestBody.create(JSON, payload.getJson()); request.post(body); return request.build(); }
@Override public Request authenticate(final Route route, final Response response) throws IOException { // set auth flag so we can skip this on future requests useAuthentication = true; if (aboveMaxRetries(response)) { // fail after max tries return null; } final HttpUrl url = get().getHttpUrl(); final String credential = Credentials.basic(url.username(), url .password()); return response.request().newBuilder().header("Authorization", credential).build(); }
private void loadEndpointUrl() { try { httpEndpointHeaderUser = preferences.getUsername(); httpEndpointHeaderDevice = preferences.getDeviceId(); httpEndpoint = HttpUrl.get(preferences.getUrl()); if(!httpEndpoint.username().isEmpty() && !httpEndpoint.password().isEmpty()) { httpEndpointHeaderUser = httpEndpoint.username(); httpEndpointHeaderPassword = httpEndpoint.password(); } else if(preferences.getAuth()) { httpEndpointHeaderPassword = preferences.getPassword(); } messageProcessor.onEndpointStateChanged(EndpointState.IDLE); } catch (IllegalArgumentException e) { httpEndpoint = null; messageProcessor.onEndpointStateChanged(EndpointState.ERROR_CONFIGURATION.setError(e)); } }
.password()); headersBuilder.add("Authorization", credentials);