X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Ffacebook%2Ferrors%2FGraphApiException.java;h=27f359fa9dcf262a95312958cefbcf165db37f3d;hb=93621868c248e425d959b92f9fdfd02a02554983;hp=2528e7ece6caf3031108e6db11220c1532dbcc92;hpb=4c254dc37e6b29bd9aa872384ed3f6b60b1c20ac;p=facebook-errors diff --git a/src/main/java/de/juplo/facebook/errors/GraphApiException.java b/src/main/java/de/juplo/facebook/errors/GraphApiException.java index 2528e7e..27f359f 100644 --- a/src/main/java/de/juplo/facebook/errors/GraphApiException.java +++ b/src/main/java/de/juplo/facebook/errors/GraphApiException.java @@ -10,12 +10,12 @@ import java.io.IOException; 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; @@ -47,15 +47,17 @@ public class GraphApiException extends RuntimeException - public static GraphApiException create(ClientResponse response) + public static Mono create(ClientResponse response) { - return - response.body((ReactiveHttpInputMessage message, Context context) -> - { - DataBuffer buffer = message.getBody().blockFirst(); - InputStream is = message.getBody().blockFirst().asInputStream(); - return 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( @@ -107,7 +109,7 @@ public class GraphApiException extends RuntimeException case 104: return new AccessTokenRequiredException(status, headers, error); case 190: return new AccessTokenExpiredException(status, headers, error); // 200..299: permission errors - case 200: + case 200: return new ApplicationNotAuthorizedByUserException(status, headers, error); case 201: case 202: case 203: