X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Ffacebook%2Ferrors%2FGraphApiExchangeFilterFunction.java;h=34ca5a71ef8d23cffd86f5ef442dc99d0dcfce1b;hb=2ee955aa31aac3dff18457f032fce4ed15049cd2;hp=9bff65dfa781f5a2f9af03aa6634d9e7df77a476;hpb=f16862b51e98a30710fe20dc867110d48bb03be3;p=facebook-errors diff --git a/src/main/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunction.java b/src/main/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunction.java index 9bff65d..34ca5a7 100644 --- a/src/main/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunction.java +++ b/src/main/java/de/juplo/facebook/errors/GraphApiExchangeFilterFunction.java @@ -6,6 +6,7 @@ import org.springframework.web.reactive.function.client.ClientRequest; import org.springframework.web.reactive.function.client.ClientResponse; import org.springframework.web.reactive.function.client.ExchangeFilterFunction; import org.springframework.web.reactive.function.client.ExchangeFunction; +import org.springframework.web.reactive.function.client.WebClientResponseException; import reactor.core.publisher.Mono; @@ -27,10 +28,21 @@ public class GraphApiExchangeFilterFunction implements ExchangeFilterFunction HttpStatus.Series.CLIENT_ERROR.equals(response.statusCode().series()) ? response .bodyToMono(String.class) - .flatMap(errorBody -> Mono.error(GraphApiException.create( + .map(errorBody -> GraphApiException.create( response.statusCode(), response.headers().asHttpHeaders(), - errorBody.getBytes()))) + errorBody.getBytes())) + .map(e -> + e.getClass().equals(ErrorResponseParsingErrorException.class) + ? WebClientResponseException + .create( + e.getStatus().value(), + e.getStatus().getReasonPhrase(), + e.getHeaders(), + null, + null) + : e) + .flatMap(e -> Mono.error(e)) : Mono.just(response); }); }