Android Open Source - singly-android U R L Utils






From Project

Back to project page singly-android.

License

The source code is released under:

MIT License

If you think the Android project singly-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.singly.android.util;
// ww w.ja  v a  2 s  .  c  o m
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Map;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;
import org.apache.http.client.utils.URIUtils;

/**
 * Utility methods for creating and manipulating URLs.
 */
public class URLUtils {

  private static Pattern IP_PATTERN = Pattern
    .compile("(\\d{1,3}\\.){3}(\\d{1,3})");

  private static final String PARAMETER_SEPARATOR = "&";
  private static final String NAME_VALUE_SEPARATOR = "=";

  /**
   * Creates a url using the base singly api url, the path, and the query
   * parameters specified.
   * 
   * The url is assumed to be in UTF-8 format.  The query parameters are
   * not required.
   * 
   * @param scheme The url scheme.
   * @param host The url hostname.
   * @param path The url path.
   * @param qparams The optional url query parameters.
   * 
   * @return A formatted, UTF-8 singly url string.
   */
  public static String createURL(String scheme, String host, String path,
    Map<String, String> parameters)
    throws URISyntaxException {

    // query parameters are optional
    String query = null;
    if (parameters != null && parameters.size() > 0) {
      query = URLUtils.toQueryString(parameters, "UTF-8");
    }

    // create the formatted UTF-8 url
    URI uri = URIUtils.createURI(scheme, host, -1, path, query, null);

    return uri.toASCIIString();
  }

  /**
   * Format the url parameters into a query string with the given encoding.
   * 
   * @param parameters A map of the query parameters to add.
   * @param encoding The encoding of the parameters.
   * 
   * @return A formatted query string.
   */
  public static String toQueryString(Map<String, String> parameters,
    String encoding) {

    final StringBuilder result = new StringBuilder();
    for (Map.Entry<String, String> parameter : parameters.entrySet()) {
      final String encodedName = encode(parameter.getKey(), encoding);
      final String value = parameter.getValue();
      final String encodedValue = value != null ? encode(value, encoding) : "";
      if (result.length() > 0) {
        result.append(PARAMETER_SEPARATOR);
      }
      result.append(encodedName);
      result.append(NAME_VALUE_SEPARATOR);
      result.append(encodedValue);
    }
    return result.toString();
  }

  /**
   * Decode the URL encoded content.
   * 
   * @param content The content to decode.
   * @param charset The character set.  Defaults to UTF-8.
   * 
   * @return The decoded content.
   */
  public static String decode(String content, String charset) {
    try {
      return URLDecoder.decode(content, charset != null ? charset : "UTF-8");
    }
    catch (UnsupportedEncodingException problem) {
      throw new IllegalArgumentException(problem);
    }
  }

  /**
   * Encode the content to URL encoding.
   * 
   * @param content The content to encode.
   * @param charset The character set.  Defaults to UTF-8.
   * 
   * @return The encoded content.
   */
  public static String encode(String content, String charset) {
    try {
      return URLEncoder.encode(content, charset != null ? charset : "UTF-8");
    }
    catch (UnsupportedEncodingException problem) {
      throw new IllegalArgumentException(problem);
    }
  }

  /**
   * Returns an array of the segments of a hostname for a url.
   * 
   * @param url The url to get the host segments for.
   * 
   * @return An array of hostname segments for the url.
   */
  public static String[] getHostSegments(URL url) {
    String host = url.getHost();
    if (IP_PATTERN.matcher(host).matches())
      return new String[] {
        host
      };
    return host.split("\\.");
  }
  
  /**
   * Returns an array of the segments of a hostname for a url.
   * 
   * @param url The String url to get the host segments for.
   * 
   * @return An array of hostname segments for the url.
   */
  public static String[] getHostSegments(String url)
    throws MalformedURLException {
    return getHostSegments(new URL(url));
  }

  /**
   * Returns the hostname for the url.
   * 
   * @param url The starting url.
   * 
   * @return The url hostname.
   */
  public static String getHost(String url) {
    try {
      return new URL(url).getHost().toLowerCase();
    }
    catch (MalformedURLException e) {
      return null;
    }
  }

  /**
   * Returns the page of the url with the query string removed.
   * 
   * @param url The starting url.
   * 
   * @return The url with the query string removed.
   */
  public static String getPage(String url) {
    try {
      url = url.toLowerCase();
      String queryStr = new URL(url).getQuery();
      return (queryStr != null) ? url.replace("?" + queryStr, "") : url;
    }
    catch (MalformedURLException e) {
      return null;
    }
  }

  /**
   * Returns the protocol of the url.
   * 
   * @param url The starting url.
   * 
   * @return The url protocol.
   */
  public static String getProtocol(String url) {
    try {
      url = url.toLowerCase();
      String protocolStr = new URL(url).getProtocol();
      return protocolStr;
    }
    catch (MalformedURLException e) {
      return null;
    }
  }

  /**
   * Returns a String version of the URL with the protocol removed.
   * 
   * @param url The starting url.
   * 
   * @return The url with the protocol removed.
   */
  public static String stripProtocol(String url) {
    try {
      url = url.toLowerCase();
      String protocolStr = new URL(url).getProtocol();
      return (protocolStr != null) ? url.replace(protocolStr + "://", "") : url;
    }
    catch (MalformedURLException e) {
      return null;
    }
  }

  public static String getExtension(String filename) {
    int extIndex = StringUtils.lastIndexOf(filename, ".");
    return extIndex > 0 && extIndex + 1 < filename.length() ? StringUtils
      .substring(filename, extIndex + 1) : null;
  }
}




Java Source Code List

com.singly.android.client.AsyncApiResponseHandler.java
com.singly.android.client.AuthenticationActivity.java
com.singly.android.client.AuthenticationWebViewListener.java
com.singly.android.client.BaseAuthenticationWebViewClient.java
com.singly.android.client.FacebookAuthenticationActivity.java
com.singly.android.client.SinglyClient.java
com.singly.android.component.AbstractCachingBlockLoadedListAdapter.java
com.singly.android.component.AuthenticatedServicesActivity.java
com.singly.android.component.AuthenticatedServicesAdapter.java
com.singly.android.component.AuthenticatedServicesFragment.java
com.singly.android.component.DeviceOwnerActivity.java
com.singly.android.component.Friend.java
com.singly.android.component.FriendsListActivity.java
com.singly.android.component.FriendsListAdapter.java
com.singly.android.component.FriendsListFragment.java
com.singly.android.component.FriendsListRowClickListener.java
com.singly.android.component.SinglyService.java
com.singly.android.component.TableOfContentsFragment.java
com.singly.android.component.TableOfContentsTouchListener.java
com.singly.android.examples.MainActivity.java
com.singly.android.util.BitmapUtils.java
com.singly.android.util.ImageCacheListener.java
com.singly.android.util.ImageInfo.java
com.singly.android.util.JSON.java
com.singly.android.util.RemoteImageCache.java
com.singly.android.util.SinglyUtils.java
com.singly.android.util.URLUtils.java