All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.box.sdk.BoxJSONResponse Maven / Gradle / Ivy

There is a newer version: 4.11.1
Show newest version
package com.box.sdk;

import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.util.Map;

import com.eclipsesource.json.JsonObject;

/**
 * Used to read HTTP responses containing JSON from the Box API.
 *
 * 

This request type extends BoxAPIResponse to provide additional functionality for handling JSON strings. It reads * the response body into a string and allows the JSON in the response to be logged.

*/ public class BoxJSONResponse extends BoxAPIResponse { private static final int BUFFER_SIZE = 8192; private JsonObject jsonObject; /** * Constructs a BoxJSONResponse without an associated HttpURLConnection. */ public BoxJSONResponse() { super(); } /** * Constructs a BoxJSONResponse using an HttpURLConnection. * @param connection a connection that has already sent a request to the API. */ public BoxJSONResponse(HttpURLConnection connection) { super(connection); } /** * Constructs a BoxAPIResponse with an http response code and response body. * @param responseCode http response code * @param httpHeaders map of http headers * @param body response body as Json Object */ public BoxJSONResponse(int responseCode, Map httpHeaders, JsonObject body) { super(responseCode, httpHeaders); this.jsonObject = body; } /** * Get response as Json Object. * @return response as JsonObject */ public JsonObject getJsonObject() { if (this.jsonObject != null) { return this.jsonObject; } else { return JsonObject.readFrom(this.getJSON()); } } /** * Gets the body of the response as a JSON string. When this method is called, the response's body will be read and * the response will be disconnected, meaning that the stream returned by {@link #getBody} can no longer be used. * @return the body of the response as a JSON string. */ public String getJSON() { if (this.jsonObject != null) { return this.jsonObject.toString(); } else { InputStreamReader reader = new InputStreamReader(this.getBody(), StandardCharsets.UTF_8); StringBuilder builder = new StringBuilder(); char[] buffer = new char[BUFFER_SIZE]; try { int read = reader.read(buffer, 0, BUFFER_SIZE); while (read != -1) { builder.append(buffer, 0, read); read = reader.read(buffer, 0, BUFFER_SIZE); } this.disconnect(); reader.close(); } catch (IOException e) { throw new BoxAPIException("Couldn't connect to the Box API due to a network error.", e); } this.jsonObject = JsonObject.readFrom(builder.toString()); return builder.toString(); } } @Override protected String bodyToString() { String bodyString = super.bodyToString(); if (bodyString == null) { return this.getJSON(); } else { return bodyString; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy