summaryrefslogtreecommitdiffstats
path: root/src/org/apache/http/client/utils/URLEncodedUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/http/client/utils/URLEncodedUtils.java')
-rw-r--r--src/org/apache/http/client/utils/URLEncodedUtils.java191
1 files changed, 0 insertions, 191 deletions
diff --git a/src/org/apache/http/client/utils/URLEncodedUtils.java b/src/org/apache/http/client/utils/URLEncodedUtils.java
deleted file mode 100644
index 8b08f90..0000000
--- a/src/org/apache/http/client/utils/URLEncodedUtils.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/utils/URLEncodedUtils.java $
- * $Revision: 655107 $
- * $Date: 2008-05-10 08:20:42 -0700 (Sat, 10 May 2008) $
- * ====================================================================
- * 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.client.utils;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Scanner;
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.NameValuePair;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.EntityUtils;
-
-/**
- * A collection of utilities for encoding URLs.
- */
-public class URLEncodedUtils {
-
- public static final String CONTENT_TYPE = "application/x-www-form-urlencoded";
- private static final String PARAMETER_SEPARATOR = "&";
- private static final String NAME_VALUE_SEPARATOR = "=";
-
- /**
- * Returns a list of {@link NameValuePair NameValuePairs} as built from the
- * URI's query portion. For example, a URI of
- * http://example.org/path/to/file?a=1&b=2&c=3 would return a list of three
- * NameValuePairs, one for a=1, one for b=2, and one for c=3.
- * <p>
- * This is typically useful while parsing an HTTP PUT.
- *
- * @param uri
- * uri to parse
- * @param encoding
- * encoding to use while parsing the query
- */
- public static List <NameValuePair> parse (final URI uri, final String encoding) {
- List <NameValuePair> result = Collections.emptyList();
- final String query = uri.getRawQuery();
- if (query != null && query.length() > 0) {
- result = new ArrayList <NameValuePair>();
- parse(result, new Scanner(query), encoding);
- }
- return result;
- }
-
- /**
- * Returns a list of {@link NameValuePair NameValuePairs} as parsed from an
- * {@link HttpEntity}. The encoding is taken from the entity's
- * Content-Encoding header.
- * <p>
- * This is typically used while parsing an HTTP POST.
- *
- * @param entity
- * The entity to parse
- * @throws IOException
- * If there was an exception getting the entity's data.
- */
- public static List <NameValuePair> parse (
- final HttpEntity entity) throws IOException {
- List <NameValuePair> result = Collections.emptyList();
- if (isEncoded(entity)) {
- final String content = EntityUtils.toString(entity);
- final Header encoding = entity.getContentEncoding();
- if (content != null && content.length() > 0) {
- result = new ArrayList <NameValuePair>();
- parse(result, new Scanner(content),
- encoding != null ? encoding.getValue() : null);
- }
- }
- return result;
- }
-
- /**
- * Returns true if the entity's Content-Type header is
- * <code>application/x-www-form-urlencoded</code>.
- */
- public static boolean isEncoded (final HttpEntity entity) {
- final Header contentType = entity.getContentType();
- return (contentType != null && contentType.getValue().equalsIgnoreCase(CONTENT_TYPE));
- }
-
- /**
- * Adds all parameters within the Scanner to the list of
- * <code>parameters</code>, as encoded by <code>encoding</code>. For
- * example, a scanner containing the string <code>a=1&b=2&c=3</code> would
- * add the {@link NameValuePair NameValuePairs} a=1, b=2, and c=3 to the
- * list of parameters.
- *
- * @param parameters
- * List to add parameters to.
- * @param scanner
- * Input that contains the parameters to parse.
- * @param encoding
- * Encoding to use when decoding the parameters.
- */
- public static void parse (
- final List <NameValuePair> parameters,
- final Scanner scanner,
- final String encoding) {
- scanner.useDelimiter(PARAMETER_SEPARATOR);
- while (scanner.hasNext()) {
- final String[] nameValue = scanner.next().split(NAME_VALUE_SEPARATOR);
- if (nameValue.length == 0 || nameValue.length > 2)
- throw new IllegalArgumentException("bad parameter");
-
- final String name = decode(nameValue[0], encoding);
- String value = null;
- if (nameValue.length == 2)
- value = decode(nameValue[1], encoding);
- parameters.add(new BasicNameValuePair(name, value));
- }
- }
-
- /**
- * Returns a String that is suitable for use as an <code>application/x-www-form-urlencoded</code>
- * list of parameters in an HTTP PUT or HTTP POST.
- *
- * @param parameters The parameters to include.
- * @param encoding The encoding to use.
- */
- public static String format (
- final List <? extends NameValuePair> parameters,
- final String encoding) {
- final StringBuilder result = new StringBuilder();
- for (final NameValuePair parameter : parameters) {
- final String encodedName = encode(parameter.getName(), 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();
- }
-
- private static String decode (final String content, final String encoding) {
- try {
- return URLDecoder.decode(content,
- encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET);
- } catch (UnsupportedEncodingException problem) {
- throw new IllegalArgumentException(problem);
- }
- }
-
- private static String encode (final String content, final String encoding) {
- try {
- return URLEncoder.encode(content,
- encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET);
- } catch (UnsupportedEncodingException problem) {
- throw new IllegalArgumentException(problem);
- }
- }
-
-}