@Override public boolean matches(String etag, boolean isWeak) { String headerValue = rc.request().getHeader(HttpHeaders.IF_NONE_MATCH); if (headerValue == null) { return false; } return headerValue.equals(ETag.prepareHeader(etag, isWeak)); }
@Override public void setEtag(String entityTag, boolean isWeak) { rc.response().putHeader(HttpHeaders.ETAG, ETag.prepareHeader(entityTag, isWeak)); }
/** * Call the given handler, latch for the future and assert success. Then return the result. * * @param handler * handler * @param etag * @param <T> * type of the returned object * @return result of the future */ public static <T> String callETag(ClientHandler<T> handler, String etag, boolean isWeak, int statusCode) { MeshResponse<T> response; try { MeshRequest<T> request = handler.handle(); request.getRequest().putHeader(IF_NONE_MATCH, ETag.prepareHeader(etag, isWeak)); response = request.invoke(); } catch (Exception e) { response = new MeshResponse<>(Future.failedFuture(e)); } latchFor(response); assertSuccess(response); int actualStatusCode = response.getRawResponse().statusCode(); String actualETag = ETag.extract(response.getRawResponse().getHeader(ETAG)); assertEquals("The response code did not match.", statusCode, actualStatusCode); if (statusCode == 304) { assertEquals(etag, actualETag); assertNull("The response should be null since we got a 304", response.result()); } return actualETag; }