com.rapidapi.p.wordsapiv1.http.request.HttpRequest Maven / Gradle / Ivy
/*
* WordsAPILib
*
* This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
package com.rapidapi.p.wordsapiv1.http.request;
import com.rapidapi.p.wordsapiv1.ApiHelper;
import com.rapidapi.p.wordsapiv1.http.Headers;
import io.apimatic.coreinterfaces.http.request.ArraySerializationFormat;
import io.apimatic.coreinterfaces.http.request.Request;
import java.util.AbstractMap.SimpleEntry;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Class for creating and managing HTTP Requests.
*/
public class HttpRequest implements Request {
/**
* Private store for properties.
*/
private HttpMethod httpMethod;
private Headers headers;
private StringBuilder queryUrlBuilder;
private List> parameters;
private Map queryParameters;
private Object body;
/**
* Initializes a simple http request.
* @param method The HTTP method to use. Can be GET, HEAD, PUT, POST, DELETE and PATCH
* @param queryUrlBuilder The fully qualified absolute http url to create the HTTP Request.
* @param headers The key-value map of all http headers to be sent
* @param queryParameters The query parameters in a key-value map
* @param parameters The form data values in a key-value map
*/
public HttpRequest(HttpMethod method, StringBuilder queryUrlBuilder, Headers headers,
Map queryParameters, List> parameters) {
this.httpMethod = method;
this.queryUrlBuilder = queryUrlBuilder;
this.headers = headers;
this.queryParameters = queryParameters;
this.parameters = parameters;
}
/**
* Initializes a simple http request.
*
* @param method The HTTP method to use. Can be GET, HEAD, PUT, POST, DELETE and PATCH
* @param queryUrlBuilder The fully qualified absolute http url to create the HTTP Request.
* @param headers The key-value map of all http headers to be sent
* @param queryParameters The query parameters in a key-value map
* @param body The object to be sent as body after serialization
*/
public HttpRequest(HttpMethod method, StringBuilder queryUrlBuilder, Headers headers,
Map queryParameters, Object body) {
this(method, queryUrlBuilder, headers, queryParameters, null);
this.body = body != null ? body : "";
}
/**
* HttpMethod for the http request.
* @return HttpMethod
*/
public HttpMethod getHttpMethod() {
return httpMethod;
}
/**
* Headers for the http request.
* @return Headers
*/
public Headers getHeaders() {
return headers;
}
/**
* Query url for the http request.
* @return String query url
*/
public String getQueryUrl() {
return queryUrlBuilder.toString();
}
/**
* Parameters for the http request.
* @return List of simple entries for form parameters
*/
public List> getParameters() {
return parameters;
}
/**
* Query parameters for the http request.
* @return Map of queryParameters
*/
public Map getQueryParameters() {
return queryParameters;
}
/**
* Body for the http request.
*
* @return Object body
*/
public Object getBody() {
return body;
}
/**
* Add Query parameter in http request.
* @param key The key of query parameter to be added
* @param value The value for respective query parameter
*/
public void addQueryParameter(String key, Object value) {
if (key == null || key.isEmpty() || value == null) {
return;
}
if (queryParameters == null) {
queryParameters = new HashMap();
}
queryParameters.put(key, value);
}
/**
* Converts this HttpRequest into string format.
* @return String representation of this class
*/
@Override
public String toString() {
return "HttpRequest [httpMethod=" + httpMethod + ", headers=" + headers
+ ", queryUrlBuilder=" + queryUrlBuilder + ", queryParameters=" + queryParameters
+ ", parameters=" + parameters + "]";
}
@Override
public String getUrl(ArraySerializationFormat arraySerializationFormat) {
StringBuilder urlBuilder = new StringBuilder(getQueryUrl());
// set query parameters
ApiHelper.appendUrlWithQueryParameters(urlBuilder, getQueryParameters(),
arraySerializationFormat);
// validate and preprocess url
return ApiHelper.cleanUrl(urlBuilder);
}
}