
net.jacobpeterson.abstracts.rest.AbstractRequest Maven / Gradle / Ivy
package net.jacobpeterson.abstracts.rest;
import com.google.gson.JsonElement;
import com.google.gson.stream.JsonReader;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import com.mashape.unirest.request.GetRequest;
import com.mashape.unirest.request.HttpRequestWithBody;
import net.jacobpeterson.util.gson.GsonUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
/**
* The type Abstract request.
*/
public abstract class AbstractRequest {
/** The logger. */
private static final Logger LOGGER = LogManager.getLogger(AbstractRequest.class);
/** The headers. */
protected final Map headers = new HashMap<>();
/**
* Invoke get.
*
* @param abstractRequestBuilder the abstract request builder
*
* @return the http response
*/
public HttpResponse invokeGet(AbstractRequestBuilder abstractRequestBuilder) {
try {
String url = abstractRequestBuilder.getURL();
LOGGER.debug("GET URL " + url);
GetRequest request = Unirest.get(url);
if (!headers.isEmpty()) {
request.headers(headers);
LOGGER.debug("GET Headers: " + headers);
}
return request.asBinary();
} catch (UnirestException e) {
LOGGER.error("UnirestException", e);
}
return null;
}
/**
* Invoke head.
*
* @param abstractRequestBuilder the abstract request builder
*
* @return the http response
*/
public HttpResponse invokeHead(AbstractRequestBuilder abstractRequestBuilder) {
try {
String url = abstractRequestBuilder.getURL();
LOGGER.debug("HEAD URL " + url);
GetRequest request = Unirest.head(url);
if (!headers.isEmpty()) {
request.headers(headers);
LOGGER.debug("HEAD Headers: " + headers);
}
return request.asBinary();
} catch (UnirestException e) {
LOGGER.error("UnirestException", e);
}
return null;
}
/**
* Invoke post.
*
* @param abstractRequestBuilder the abstract request builder
*
* @return the http response
*/
public HttpResponse invokePost(AbstractRequestBuilder abstractRequestBuilder) {
try {
String url = abstractRequestBuilder.getURL();
LOGGER.debug("POST URL: " + url);
HttpRequestWithBody request = Unirest.post(url);
if (!headers.isEmpty()) {
request.headers(headers);
LOGGER.debug("POST Headers: " + headers);
}
String body = abstractRequestBuilder.getBody();
if (body != null) {
request.body(body);
LOGGER.debug("POST Body: " + body);
}
return request.asBinary();
} catch (UnirestException e) {
LOGGER.error("UnirestException", e);
}
return null;
}
/**
* Invoke patch.
*
* @param abstractRequestBuilder the abstract request builder
*
* @return the http response
*/
public HttpResponse invokePatch(AbstractRequestBuilder abstractRequestBuilder) {
try {
String url = abstractRequestBuilder.getURL();
LOGGER.debug("PATCH URL " + url);
HttpRequestWithBody request = Unirest.patch(url);
if (!headers.isEmpty()) {
request.headers(headers);
LOGGER.debug("PATCH Headers: " + headers);
}
String body = abstractRequestBuilder.getBody();
if (body != null) {
request.body(body);
LOGGER.debug("PATCH Body: " + body);
}
return request.asBinary();
} catch (UnirestException e) {
LOGGER.error("UnirestException", e);
}
return null;
}
/**
* Invoke put http response.
*
* @param abstractRequestBuilder the abstract request builder
*
* @return the http response
*/
public HttpResponse invokePut(AbstractRequestBuilder abstractRequestBuilder) {
try {
String url = abstractRequestBuilder.getURL();
LOGGER.debug("PUT URL " + url);
HttpRequestWithBody request = Unirest.put(url);
if (!headers.isEmpty()) {
request.headers(headers);
LOGGER.debug("PUT Headers: " + headers);
}
String body = abstractRequestBuilder.getBody();
if (body != null) {
request.body(body);
LOGGER.debug("PUT Body: " + body);
}
return request.asBinary();
} catch (UnirestException e) {
LOGGER.error("UnirestException", e);
}
return null;
}
/**
* Invoke delete.
*
* @param abstractRequestBuilder the abstract request builder
*
* @return the http response
*/
public HttpResponse invokeDelete(AbstractRequestBuilder abstractRequestBuilder) {
try {
String url = abstractRequestBuilder.getURL();
LOGGER.debug("DELETE URL " + url);
HttpRequestWithBody request = Unirest.delete(url);
if (!headers.isEmpty()) {
request.headers(headers);
LOGGER.debug("DELETE Headers: " + headers);
}
String body = abstractRequestBuilder.getBody();
if (body != null) {
request.body(body);
LOGGER.debug("DELETE Body: " + body);
}
return request.asBinary();
} catch (UnirestException e) {
LOGGER.error("UnirestException", e);
}
return null;
}
/**
* Invoke options.
*
* @param abstractRequestBuilder the abstract request builder
*
* @return the http response
*/
public HttpResponse invokeOptions(AbstractRequestBuilder abstractRequestBuilder) {
try {
String url = abstractRequestBuilder.getURL();
LOGGER.debug("OPTIONS URL " + url);
HttpRequestWithBody request = Unirest.options(url);
if (!headers.isEmpty()) {
request.headers(headers);
LOGGER.debug("OPTIONS Headers: " + headers);
}
String body = abstractRequestBuilder.getBody();
if (body != null) {
request.body(body);
LOGGER.debug("OPTIONS Body: " + body);
}
return request.asBinary();
} catch (UnirestException e) {
LOGGER.error("UnirestException", e);
}
return null;
}
/**
* Gets the response object.
*
* @param the generic type
* @param httpResponse the http response
* @param type the type
*
* @return the response object
*/
public T getResponseObject(HttpResponse httpResponse, Type type) {
T responseObjectFromJson = null;
try (JsonReader jsonReader = new JsonReader(new InputStreamReader(httpResponse.getRawBody()))) {
responseObjectFromJson = GsonUtil.GSON.fromJson(jsonReader, type);
} catch (Exception e) {
LOGGER.error("Exception", e);
}
return responseObjectFromJson;
}
/**
* Gets response json.
*
* @param httpResponse the http response
*
* @return the response json
*/
public JsonElement getResponseJSON(HttpResponse httpResponse) {
JsonElement responseJsonElement = null;
try (JsonReader jsonReader = new JsonReader(new InputStreamReader(httpResponse.getRawBody()))) {
responseJsonElement = GsonUtil.JSON_PARSER.parse(jsonReader);
} catch (Exception e) {
LOGGER.error("Exception", e);
}
return responseJsonElement;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy