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

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

The newest version!
package com.box.sdk;

import static com.box.sdk.http.ContentType.APPLICATION_JSON;

import com.box.sdk.http.HttpMethod;
import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonObject;
import com.eclipsesource.json.JsonValue;
import java.net.URL;

/**
 * Used to make HTTP requests containing JSON to the Box API.
 *
 * 

This request type extends BoxAPIRequest to provide additional functionality for handling JSON strings. It * automatically sets the appropriate "Content-Type" HTTP headers and allows the JSON in the request to be logged.

*/ public class BoxJSONRequest extends BoxAPIRequest { private JsonValue jsonValue; protected BoxJSONRequest(BoxAPIConnection api, URL url, String method, String mediaType) { super(api, url, method, mediaType); } /** * Constructs an authenticated BoxJSONRequest using a provided BoxAPIConnection. * * @param api an API connection for authenticating the request. * @param url the URL of the request. * @param method the HTTP method of the request. */ public BoxJSONRequest(BoxAPIConnection api, URL url, String method) { this(api, url, method, APPLICATION_JSON); } /** * Constructs an authenticated BoxJSONRequest using a provided BoxAPIConnection. * * @param api an API connection for authenticating the request. * @param url the URL of the request. * @param method the HTTP method of the request. */ public BoxJSONRequest(BoxAPIConnection api, URL url, HttpMethod method) { this(api, url, method.name()); } /** * Constructs an authenticated BoxJSONRequest. * * @param url the URL of the request. * @param method the HTTP method of the request. */ public BoxJSONRequest(URL url, HttpMethod method) { this(null, url, method); } /** * Sets the body of this request to a given JSON string. * * @param body the JSON string to use as the body. */ @Override public void setBody(String body) { super.setBody(body); this.jsonValue = Json.parse(body); } /** * Sets the body of this request to a given JsonObject. * * @param body the JsonObject to use as the body. */ public void setBody(JsonObject body) { super.setBody(body.toString()); this.jsonValue = body; } /** * Gets the body of this request as a JsonObject. * * @return body represented as JsonObject. */ public JsonObject getBodyAsJsonObject() { if (this.jsonValue.isObject()) { return this.jsonValue.asObject(); } return null; } /** * Gets the body of this request as a {@link JsonValue}. * * @return body represented as JsonValue */ public JsonValue getBodyAsJsonValue() { return this.jsonValue; } @Override public BoxJSONResponse send() { return convert(super.send()); } @Override public BoxJSONResponse send(ProgressListener listener) { return convert(super.send(listener)); } private BoxJSONResponse convert(BoxAPIResponse response) { if (response instanceof BoxJSONResponse) { return (BoxJSONResponse) response; } else { return new BoxJSONResponse(response); } } @Override protected String bodyToString() { return this.jsonValue != null ? this.jsonValue.toString() : null; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy