All Downloads are FREE. Search and download functionalities are using the official Maven repository.

groovyx.net.http.ContentType Maven / Gradle / Ivy

Go to download

A builder-style HTTP client API, including authentication, and extensible handling of common content-types such as JSON and XML. It is built on top of Apache's HttpClient.

There is a newer version: 0.7.1
Show newest version
/*
 * Copyright 2008-2011 Thomas Nichols.  http://blog.thomnichols.org
 *
 * 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.
 *
 * You are receiving this code free of charge, which represents many hours of
 * effort from other individuals and corporations.  As a responsible member
 * of the community, you are encouraged (but not required) to donate any
 * enhancements or improvements back to the community under a similar open
 * source license.  Thank you. -TMN
 */
package groovyx.net.http;

import java.util.Iterator;

import org.apache.commons.collections.iterators.ArrayIterator;

/**
 * Enumeration of common IANA
 * content-types.  This may be used to specify a request or response
 * content-type more easily than specifying the full string each time.  i.e.
 * 
 * http.request( GET, JSON ) {...}
* * Is roughly equivalent to: *
 * http.request( GET, 'application/json' )
* * The only difference being, equivalent content-types (i.e. * application/xml and text/xml are all added to the * request's Accept header. By default, all equivalent content-types * are handled the same by the {@link EncoderRegistry} and {@link ParserRegistry} * as well. * @author Tom Nichols */ public enum ContentType { /** */* */ ANY("*/*"), /** text/plain */ TEXT("text/plain"), /** *
    *
  • application/json
  • *
  • application/javascript
  • *
  • text/javascript
  • *
*/ JSON("application/json","application/javascript","text/javascript"), /** *
    *
  • application/xml
  • *
  • text/xml
  • *
  • application/xhtml+xml
  • *
  • application/atom+xml
  • *
*/ XML("application/xml","text/xml","application/xhtml+xml","application/atom+xml"), /** text/html */ HTML("text/html"), /** application/x-www-form-urlencoded */ URLENC("application/x-www-form-urlencoded"), /** application/octet-stream */ BINARY("application/octet-stream"); private final String[] ctStrings; public String[] getContentTypeStrings() { return ctStrings; } @Override public String toString() { return ctStrings[0]; } /** * Builds a string to be used as an HTTP Accept header * value, i.e. "application/xml, text/xml" * @return */ @SuppressWarnings("unchecked") public String getAcceptHeader() { Iterator iter = new ArrayIterator(ctStrings); StringBuilder sb = new StringBuilder(); while ( iter.hasNext() ) { sb.append( iter.next() ); if ( iter.hasNext() ) sb.append( ", " ); } return sb.toString(); } private ContentType( String... contentTypes ) { this.ctStrings = contentTypes; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy