use of com.github.ljtfreitas.julian.Response in project julian-http-client by ljtfreitas.
the class DefaultHTTPClientResponse method valueOf.
static DefaultHTTPClientResponse valueOf(HttpResponse<Publisher<List<ByteBuffer>>> response) {
HTTPStatus status = HTTPStatusCode.select(response.statusCode()).map(HTTPStatus::new).orElseGet(() -> HTTPStatus.valueOf(response.statusCode()));
HTTPHeaders headers = response.headers().map().entrySet().stream().map(e -> HTTPHeader.create(e.getKey(), e.getValue())).reduce(HTTPHeaders.empty(), HTTPHeaders::join, (a, b) -> b);
HTTPResponseBody body = HTTPResponseBody.optional(status, headers, () -> HTTPResponseBody.lazy(response.body()));
return new DefaultHTTPClientResponse(status, headers, body);
}
use of com.github.ljtfreitas.julian.Response in project julian-http-client by ljtfreitas.
the class SetResponseTTest method bindNullCollection.
@Test
void bindNullCollection() {
when(endpoint.returnType()).thenReturn(JavaType.parameterized(Collection.class, String.class));
Promise<Response<Collection<String>>> promise = Promise.done(Response.done(null));
ResponseFn<Collection<String>, Collection<Object>> fn = new CollectionResponseT().bind(endpoint, new ObjectResponseT<Collection<Object>>().bind(endpoint, null));
Set<Object> set = responseT.bind(endpoint, fn).join(promise, Arguments.empty());
assertTrue(set.isEmpty());
}
use of com.github.ljtfreitas.julian.Response in project julian-http-client by ljtfreitas.
the class TraversableResponseTTest method bind.
@Test
void bind() {
when(endpoint.returnType()).thenReturn(JavaType.parameterized(Collection.class, String.class));
Collection<String> values = java.util.List.of("one", "two", "three");
Promise<Response<Collection<String>>> promise = Promise.done(Response.done(values));
ResponseFn<Collection<String>, Collection<Object>> fn = new CollectionResponseT().bind(endpoint, new ObjectResponseT<Collection<Object>>().bind(endpoint, null));
Traversable<Object> traversable = responseT.bind(endpoint, fn).join(promise, Arguments.empty());
assertTrue(traversable.containsAll(values));
}
use of com.github.ljtfreitas.julian.Response in project julian-http-client by ljtfreitas.
the class TryResponseTTest method bindFailure.
@Test
void bindFailure() {
RuntimeException failure = new RuntimeException("oops");
ResponseFn<String, Object> fn = new ObjectResponseT<>().bind(endpoint, null);
Promise<Response<String>> promise = Promise.failed(failure);
Arguments arguments = Arguments.empty();
Try<Object> attempt = responseT.bind(endpoint, fn).join(promise, arguments);
assertTrue(attempt.isFailure());
Exception exception = (Exception) attempt.getCause();
assertSame(failure, exception);
}
use of com.github.ljtfreitas.julian.Response in project julian-http-client by ljtfreitas.
the class VectorResponseTTest method bindNullCollection.
@Test
void bindNullCollection() {
when(endpoint.returnType()).thenReturn(JavaType.parameterized(Collection.class, String.class));
Promise<Response<Collection<String>>> promise = Promise.done(Response.done(null));
ResponseFn<Collection<String>, Collection<Object>> fn = new CollectionResponseT().bind(endpoint, new ObjectResponseT<Collection<Object>>().bind(endpoint, null));
Vector<Object> vector = responseT.bind(endpoint, fn).join(promise, Arguments.empty());
assertTrue(vector.isEmpty());
}
Aggregations