com.twitter.hbc.core.HttpConstants Maven / Gradle / Ivy
/**
* Copyright 2013 Twitter, Inc.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
package com.twitter.hbc.core;
import com.google.common.collect.ImmutableSet;
import com.twitter.hbc.core.endpoint.Endpoint;
import com.twitter.hbc.httpclient.auth.Authentication;
import org.apache.http.HttpHeaders;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.entity.StringEntity;
import java.util.Set;
public class HttpConstants {
public static final String HTTP_GET = "GET";
public static final String HTTP_POST = "POST";
public static final String HTTP_SCHEME = "http";
public static final String HTTPS_SCHEME = "https";
public static final int DEFAULT_HTTP_PORT = 80;
public static final int DEFAULT_HTTPS_PORT = 443;
public class Codes {
public static final int SUCCESS = 200;
public static final int UNAUTHORIZED = 401;
public static final int FORBIDDEN = 403;
public static final int UNKNOWN = 404;
public static final int NOT_ACCEPTABLE = 406;
public static final int PARAMETER_LIST_TOO_LONG = 413;
public static final int RANGE_UNACCEPTABLE = 416;
public static final int RATE_LIMITED = 420;
public static final int SERVICE_UNAVAILABLE = 503;
}
public static final Set FATAL_CODES = ImmutableSet.of(
Codes.UNKNOWN,
Codes.NOT_ACCEPTABLE,
Codes.PARAMETER_LIST_TOO_LONG,
Codes.RANGE_UNACCEPTABLE
);
public static boolean checkHttpMethod(String httpMethod) {
if (httpMethod.equalsIgnoreCase(HttpGet.METHOD_NAME)) {
return true;
} else if (httpMethod.equalsIgnoreCase(HttpPost.METHOD_NAME) ) {
return true;
}
return false;
}
public static boolean isValidHttpScheme(String address) {
return address.toLowerCase().equalsIgnoreCase(HttpConstants.HTTP_SCHEME) ||
address.toLowerCase().equalsIgnoreCase(HttpConstants.HTTPS_SCHEME);
}
public static HttpUriRequest constructRequest(String host, Endpoint endpoint, Authentication auth) {
String url = host + endpoint.getURI();
if (endpoint.getHttpMethod().equalsIgnoreCase(HttpGet.METHOD_NAME)) {
HttpGet get = new HttpGet(url);
if (auth != null)
auth.signRequest(get, null);
return get;
} else if (endpoint.getHttpMethod().equalsIgnoreCase(HttpPost.METHOD_NAME) ) {
HttpPost post = new HttpPost(url);
post.setEntity(new StringEntity(endpoint.getPostParamString(), Constants.DEFAULT_CHARSET));
post.setHeader(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded");
if (auth != null)
auth.signRequest(post, endpoint.getPostParamString());
return post;
} else {
throw new IllegalArgumentException("Bad http method: " + endpoint.getHttpMethod());
}
}
}