Package org.apache.ambari.view.slider.rest.client

Source Code of org.apache.ambari.view.slider.rest.client.BaseHttpClient

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 org.apache.ambari.view.slider.rest.client;

import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;

import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.stream.JsonReader;

public class BaseHttpClient {

  private HttpClient httpClient;
  private String url;
  private boolean needsAuthentication;
  private String userId;
  private String password;

  public BaseHttpClient(String url) {
    setUrl(url);
    setNeedsAuthentication(false);
  }

  public BaseHttpClient(String url, String userId, String password) {
    setUrl(url);
    setNeedsAuthentication(true);
    setUserId(userId);
    setPassword(password);
  }

  public String getUrl() {
    return url;
  }

  public void setUrl(String url) {
    this.url = url;
  }

  public boolean isNeedsAuthentication() {
    return needsAuthentication;
  }

  public void setNeedsAuthentication(boolean needsAuthentication) {
    this.needsAuthentication = needsAuthentication;
  }

  public String getUserId() {
    return userId;
  }

  public void setUserId(String userId) {
    this.userId = userId;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public JsonElement doGetJson(String path) throws HttpException, IOException {
    return doGetJson(getUrl(), path);
  }

  public JsonElement doGetJson(String url, String path) throws HttpException,
      IOException {
    GetMethod get = new GetMethod(url + path);
    if (isNeedsAuthentication()) {
      get.setDoAuthentication(true);
    }
    int executeMethod = getHttpClient().executeMethod(get);
    switch (executeMethod) {
    case HttpStatus.SC_OK:
      JsonElement jsonElement = new JsonParser().parse(new JsonReader(
          new InputStreamReader(get.getResponseBodyAsStream())));
      return jsonElement;
    default:
      break;
    }
    return null;
  }

  public String doGet(String path) throws HttpException, IOException {
    GetMethod get = new GetMethod(url + path);
    if (isNeedsAuthentication()) {
      get.setDoAuthentication(true);
    }
    int executeMethod = getHttpClient().executeMethod(get);
    switch (executeMethod) {
    case HttpStatus.SC_OK:
      return get.getResponseBodyAsString();
    default:
      break;
    }
    return null;
  }

  private HttpClient getHttpClient() {
    if (httpClient == null) {
      httpClient = new HttpClient();
    }
    if (isNeedsAuthentication()) {
      httpClient.getState().setCredentials(
          new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
          new UsernamePasswordCredentials(getUserId(), getPassword()));
      httpClient.getParams().setAuthenticationPreemptive(true);
    }
    return httpClient;
  }
}
TOP

Related Classes of org.apache.ambari.view.slider.rest.client.BaseHttpClient

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.