com.twitter.hbc.core.HttpConstants.java Source code

Java tutorial

Introduction

Here is the source code for com.twitter.hbc.core.HttpConstants.java

Source

/**
 * 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 java.util.Set;

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 com.google.common.collect.ImmutableSet;
import com.twitter.hbc.core.endpoint.Endpoint;
import com.twitter.hbc.httpclient.auth.Authentication;

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<Integer> 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());
        }
    }
}