- next
- .exchange(request)
- .flatMap(response ->
- {
- return
- HttpStatus.Series.CLIENT_ERROR.equals(response.statusCode().series())
- ? Mono.error(GraphApiException.create(response))
- : Mono.just(response);
- });
+ next
+ .exchange(request)
+ .flatMap(response ->
+ {
+ return
+ HttpStatus.Series.CLIENT_ERROR.equals(response.statusCode().series())
+ ? response
+ .bodyToMono(String.class)
+ .map(errorBody -> GraphApiException.create(
+ response.statusCode(),
+ response.headers().asHttpHeaders(),
+ 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);
+ });