WIP: WebClient -- DIE LĂ–SUNG!
authorKai Moritz <kai@jupl.de>
Thu, 21 Nov 2019 20:06:20 +0000 (21:06 +0100)
committerKai Moritz <kai@jupl.de>
Thu, 21 Nov 2019 20:06:20 +0000 (21:06 +0100)
src/main/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunction.java
src/test/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunctionIntegrationTest.java

index 6642e38..768ec1d 100644 (file)
@@ -30,12 +30,16 @@ public class GraphApiExchangeFilterFunction implements ExchangeFilterFunction
     return
         next
             .exchange(request)
-            .doOnError(e -> LOG.debug("ERROR: {}", e))
             .flatMap(response ->
             {
               return
                   HttpStatus.Series.CLIENT_ERROR.equals(response.statusCode().series())
-                      ? Mono.error(GraphApiException.create(response).block())
+                      ? response
+                          .bodyToMono(String.class)
+                          .flatMap(errorBody -> Mono.error(GraphApiException.create(
+                              response.statusCode(),
+                              response.headers().asHttpHeaders(),
+                              errorBody.getBytes())))
                       : Mono.just(response);
             });
   }
index 8614735..0f67543 100644 (file)
@@ -13,9 +13,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.client.reactive.JettyClientHttpConnector;
-import org.springframework.web.reactive.function.client.ClientRequest;
-import org.springframework.web.reactive.function.client.ClientResponse;
-import org.springframework.web.reactive.function.client.ExchangeFunction;
 import org.springframework.web.reactive.function.client.WebClient;
 import reactor.core.publisher.Mono;
 import reactor.test.StepVerifier;
@@ -43,7 +40,7 @@ public class GraphApiExchangeFilterFunctionIntegrationTest
             .builder()
             .clientConnector(new JettyClientHttpConnector())
             .baseUrl(server.url("/").toString())
-            .filter(this::errorHandlingFilter)
+            .filter(GraphApiExchangeFilterFunction.INSTANCE)
             .build();
        }
 
@@ -130,23 +127,4 @@ public class GraphApiExchangeFilterFunctionIntegrationTest
         .expectComplete()
                                .verify(Duration.ofSeconds(3));
   }
-
-  public Mono<ClientResponse> errorHandlingFilter(ClientRequest request, ExchangeFunction next)
-  {
-    return
-        next
-            .exchange(request)
-            .flatMap(response ->
-            {
-              return
-                  HttpStatus.Series.CLIENT_ERROR.equals(response.statusCode().series())
-                      ? response
-                          .bodyToMono(String.class)
-                          .flatMap(errorBody -> Mono.error(GraphApiException.create(
-                              response.statusCode(),
-                              response.headers().asHttpHeaders(),
-                              errorBody.getBytes())))
-                      : Mono.just(response);
-            });
-  }
 }