Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.github.jreddit.utils.restclient;
  
  import static com.github.jreddit.utils.restclient.methodbuilders.HttpGetMethodBuilder.httpGetMethod;
  import static com.github.jreddit.utils.restclient.methodbuilders.HttpPostMethodBuilder.httpPostMethod;
  
  import java.util.Arrays;
 import java.util.List;
 
 
HTTP implementation of the REST Client interface.

Author(s):
Simon Kassing
 
 public class HttpRestClient implements RestClient {

HTTP Client instance.
 
 	private final HttpClient httpClient;

Response handler instance.
 
Global request configuration.
 
 	private final RequestConfig globalConfig = RequestConfig.custom()
Default User Agent
 
 	private String userAgent = "jReddit: Reddit API Wrapper for Java";

Default constructor.
 
 	public HttpRestClient() {
 		// As we're currently managing cookies elsewhere we need to set our configure to ignore them
 	}

Constructor with option to define own client and response handler.

Parameters:
httpClient HTTP Client
responseHandler HTTP Request response handler
 
 	public HttpRestClient(HttpClient httpClientResponseHandler<ResponseresponseHandler) {
 		this. = httpClient;
 		this. = responseHandler;
 	}

Set the user agent.

Parameters:
agent User agent name
 
 	public void setUserAgent(String agent) {
 		this. = agent;
 	}
 
 
 	public Response get(String urlPathString cookiethrows RetrievalFailedException {
 		
 		try {
 			if (result == null) {
 				throw new RetrievalFailedException("The given URI path does not exist on Reddit: " + urlPath);
 			} else {
 				return result;
 			}
 		} catch (URISyntaxException e) {
 			throw new RetrievalFailedException("The syntax of the URI path was incorrect: " + urlPath);
catch (InvalidURIException e) {
			throw new RetrievalFailedException("The URI path was invalid: " + urlPath);
catch (IOException e) {
			throw new RetrievalFailedException("Input/output failed when retrieving from URI path: " + urlPath);
catch (ParseException e) {
			throw new RetrievalFailedException("Failed to parse the response from GET request to URI path: "urlPath);
		}
	}
		// Build HTTP GET request
		getMethodBuilder.withUserAgent();
		HttpGet request = getMethodBuilder.build();
		// Execute request
		Response response = .execute(request);
		// A HTTP error occurred
		if (response != null && response.getStatusCode() >= 300) {
			throw new RetrievalFailedException("HTTP Error (" + response.getStatusCode() + ") occurred for URI path: " + request.getURI().toString());
		}
		return response;
	}
	public Response post(String apiParamsString urlPathString cookie) {
		try {
			Response result = post(
					.withCookie(cookie),
			);
			if (result == null) {
				throw new ActionFailedException("Due to unknown reasons, the response was undefined for URI path: " + urlPath);
else {
				return result;
			}
catch (URISyntaxException e) {
			throw new ActionFailedException("The syntax of the URI path was incorrect: " + urlPath);
catch (IOException e) {
			throw new ActionFailedException("Input/output failed when retrieving from URI path: " + urlPath);
catch (ParseException e) {
			throw new ActionFailedException("Failed to parse the response from GET request to URI path: "urlPath);
		}
	}
	public Response post(HttpPostMethodBuilder postMethodBuilderNameValuePair... paramsthrows IOExceptionParseException {
		return post(postMethodBuilder, Arrays.asList(params));
	}
	public Response post(HttpPostMethodBuilder postMethodBuilderList<NameValuePairparamsthrows IOExceptionParseException {
		// Assign user agent
		postMethodBuilder.withUserAgent();
		// Set entity
		HttpPost request = postMethodBuilder.build();
		request.setEntity(entity);
		// Execute request
		Response response = .execute(request);
		// A HTTP error occurred
		if (response != null && response.getStatusCode() >= 300) {
			throw new ActionFailedException("HTTP Error (" + response.getStatusCode() + ") occurred for URI path: " + request.getURI().toString());
		}
		return response;
	}

Convert a API parameters to a appropriate list.

Parameters:
apiParams Input string, for example 'a=2894&b=194'
Returns:
List of name value pairs to pass with the POST request
		if (apiParams != null && !apiParams.isEmpty()) {
			String[] valuePairs = apiParams.split("&");
			for (String valuePair : valuePairs) {
				String[] nameValue = valuePair.split("=");
				if (nameValue.length == 1)//there is no cookie if we are not signed in
				  params.add(new BasicNameValuePair(nameValue[0], ""));
				else
				  params.add(new BasicNameValuePair(nameValue[0], nameValue[1]));
			}
		}
		return params;
	}
New to GrepCode? Check out our FAQ X