1 package de.juplo.facebook.errors;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6 import org.springframework.http.HttpStatus;
7 import org.springframework.web.reactive.function.client.ClientRequest;
8 import org.springframework.web.reactive.function.client.ClientResponse;
9 import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
10 import org.springframework.web.reactive.function.client.ExchangeFunction;
11 import reactor.core.publisher.Mono;
15 * An {@link ExchangeFilterFunction}
18 public class GraphApiExchangeFilterFunction implements ExchangeFilterFunction
20 private static final Logger LOG =
21 LoggerFactory.getLogger(GraphApiExchangeFilterFunction.class);
23 public static GraphApiExchangeFilterFunction INSTANCE =
24 new GraphApiExchangeFilterFunction();
28 public Mono<ClientResponse> filter(ClientRequest request, ExchangeFunction next)
36 HttpStatus.Series.CLIENT_ERROR.equals(response.statusCode().series())
38 .bodyToMono(String.class)
39 .flatMap(errorBody -> Mono.error(GraphApiException.create(
40 response.statusCode(),
41 response.headers().asHttpHeaders(),
42 errorBody.getBytes())))
43 : Mono.just(response);