WIP: WebClient
[facebook-errors] / src / main / java / de / juplo / facebook / errors / GraphApiExchangeFilterFunction.java
1 package de.juplo.facebook.errors;
2
3
4 import org.springframework.http.HttpStatus;
5 import org.springframework.web.reactive.function.client.ClientRequest;
6 import org.springframework.web.reactive.function.client.ClientResponse;
7 import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
8 import org.springframework.web.reactive.function.client.ExchangeFunction;
9 import reactor.core.publisher.Mono;
10
11
12 /**
13  * An {@link ExchangeFilterFunction}
14  * @author Kai Moritz
15  */
16 public class GraphApiExchangeFilterFunction implements ExchangeFilterFunction
17 {
18   public static GraphApiExchangeFilterFunction INSTANCE =
19       new GraphApiExchangeFilterFunction();
20
21
22   @Override
23   public Mono<ClientResponse> filter(ClientRequest request, ExchangeFunction next)
24   {
25     return
26     next
27         .exchange(request)
28         .flatMap(response ->
29         {
30           return
31               HttpStatus.Series.CLIENT_ERROR.equals(response.statusCode().series())
32                   ? Mono.error(GraphApiException.create(response))
33                   : Mono.just(response);
34         });
35   }
36 }