import java.io.InputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
-import org.springframework.http.ReactiveHttpInputMessage;
-import org.springframework.web.reactive.function.BodyExtractor.Context;
+import org.springframework.web.reactive.function.BodyExtractors;
import org.springframework.web.reactive.function.client.ClientResponse;
+import reactor.core.publisher.Mono;
- public static GraphApiException create(ClientResponse response)
+ public static Mono<GraphApiException> create(ClientResponse response)
{
- return
- response
- .body((ReactiveHttpInputMessage message, Context context) ->
- message
- .getBody()
- .map(buffer -> buffer.asInputStream()))
- .flatMap(is -> create(response.statusCode(), message.getHeaders(), is));
+ return DataBufferUtils.join(response.body(BodyExtractors.toDataBuffers()))
+ .map(dataBuffer -> {
+ byte[] bytes = new byte[dataBuffer.readableByteCount()];
+ dataBuffer.read(bytes);
+ DataBufferUtils.release(dataBuffer);
+ return bytes;
+ })
+ .defaultIfEmpty(new byte[0])
+ .map(bytes -> create(response.statusCode(), response.headers().asHttpHeaders(), bytes));
}
public static GraphApiException create(