Package org.mctourney.autoreferee.util

Source Code of org.mctourney.autoreferee.util.QueryUtil

package org.mctourney.autoreferee.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Map;
import java.util.Set;

import com.google.common.collect.Sets;
import org.apache.commons.io.IOUtils;

import org.apache.commons.lang.StringUtils;
import org.mctourney.autoreferee.AutoReferee;

public class QueryUtil
{
  private static final String ENCODING = "UTF-8";

  public static String getUserAgent()
  {
    AutoReferee instance = AutoReferee.getInstance();
    String pluginName = instance.getDescription().getFullName();
    return String.format("%s (%s)", pluginName, instance.getCommit());
  }

  public static String syncGetQuery(String path, String params) throws IOException
  { return syncQuery(path, params, null); }

  public static String syncPostQuery(String path, String params) throws IOException
  { return syncQuery(path, null, params); }

  public static String syncPutQuery(String path, String params) throws IOException
  { return syncQuery(path, "PUT", null, params); }

  public static String syncQuery(String path, String getParams, String postParams) throws IOException
  { return syncQuery(path, null, getParams, postParams); }

  public static String syncQuery(String path, String method, String getParams, String postParams) throws IOException
  {
    OutputStreamWriter wr = null;
    InputStream rd = null;

    try
    {
      URL url = new URL(getParams == null ? path : String.format("%s?%s", path, getParams));
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setDoOutput(true);

      AutoReferee instance = AutoReferee.getInstance();
      String pluginName = instance.getDescription().getFullName();
      conn.setRequestProperty("User-Agent", String.format("%s (%s)", pluginName, instance.getCommit()));

      if (method != null)
      {
        conn.setRequestMethod(method);
        conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
      }

      if (postParams != null)
      {
        wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(postParams); wr.flush();
      }

      StringWriter writer = new StringWriter();
      IOUtils.copy(rd = conn.getInputStream(), writer);
      return writer.toString();
    }

    // just drop out
    catch (IOException e) { throw e; }

    finally
    {
      try
      {
        // close the stream pointers
        if (wr != null) wr.close();
        if (rd != null) rd.close();
      }
      // meh. don't bother, if something goes wrong here.
      catch (Exception ignored) {  }
    }
  }

  public static String prepareParams(Map<String, String> paramMap)
  {
    Set<String> params = Sets.newHashSet();
    for (Map.Entry<String, String> entry : paramMap.entrySet()) try
    {
      String val = URLEncoder.encode(entry.getValue(), ENCODING);
      params.add(String.format("%s=%s", entry.getKey(), val));
    }
    catch (UnsupportedEncodingException e)
    { e.printStackTrace(); }

    return StringUtils.join(params, "&");
  }
}
TOP

Related Classes of org.mctourney.autoreferee.util.QueryUtil

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.