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;
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);
});
}