diff options
Diffstat (limited to 'mobile/android/thirdparty/ch/boye/httpclientandroidlib/entity/mime/MultipartEntityBuilder.java')
-rw-r--r-- | mobile/android/thirdparty/ch/boye/httpclientandroidlib/entity/mime/MultipartEntityBuilder.java | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/mobile/android/thirdparty/ch/boye/httpclientandroidlib/entity/mime/MultipartEntityBuilder.java b/mobile/android/thirdparty/ch/boye/httpclientandroidlib/entity/mime/MultipartEntityBuilder.java deleted file mode 100644 index 5074001d7..000000000 --- a/mobile/android/thirdparty/ch/boye/httpclientandroidlib/entity/mime/MultipartEntityBuilder.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * ==================================================================== - * 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 ch.boye.httpclientandroidlib.entity.mime; - -import java.io.File; -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import ch.boye.httpclientandroidlib.HttpEntity; -import ch.boye.httpclientandroidlib.entity.ContentType; -import ch.boye.httpclientandroidlib.entity.mime.content.ByteArrayBody; -import ch.boye.httpclientandroidlib.entity.mime.content.ContentBody; -import ch.boye.httpclientandroidlib.entity.mime.content.FileBody; -import ch.boye.httpclientandroidlib.entity.mime.content.InputStreamBody; -import ch.boye.httpclientandroidlib.entity.mime.content.StringBody; -import ch.boye.httpclientandroidlib.util.Args; - -/** - * Builder for multipart {@link HttpEntity}s. - * - * @since 4.3 - */ -public class MultipartEntityBuilder { - - /** - * The pool of ASCII chars to be used for generating a multipart boundary. - */ - private final static char[] MULTIPART_CHARS = - "-_1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - .toCharArray(); - - private final static String DEFAULT_SUBTYPE = "form-data"; - - private String subType = DEFAULT_SUBTYPE; - private HttpMultipartMode mode = HttpMultipartMode.STRICT; - private String boundary = null; - private Charset charset = null; - private List<FormBodyPart> bodyParts = null; - - public static MultipartEntityBuilder create() { - return new MultipartEntityBuilder(); - } - - MultipartEntityBuilder() { - super(); - } - - public MultipartEntityBuilder setMode(final HttpMultipartMode mode) { - this.mode = mode; - return this; - } - - public MultipartEntityBuilder setLaxMode() { - this.mode = HttpMultipartMode.BROWSER_COMPATIBLE; - return this; - } - - public MultipartEntityBuilder setStrictMode() { - this.mode = HttpMultipartMode.STRICT; - return this; - } - - public MultipartEntityBuilder setBoundary(final String boundary) { - this.boundary = boundary; - return this; - } - - public MultipartEntityBuilder setCharset(final Charset charset) { - this.charset = charset; - return this; - } - - MultipartEntityBuilder addPart(final FormBodyPart bodyPart) { - if (bodyPart == null) { - return this; - } - if (this.bodyParts == null) { - this.bodyParts = new ArrayList<FormBodyPart>(); - } - this.bodyParts.add(bodyPart); - return this; - } - - public MultipartEntityBuilder addPart(final String name, final ContentBody contentBody) { - Args.notNull(name, "Name"); - Args.notNull(contentBody, "Content body"); - return addPart(new FormBodyPart(name, contentBody)); - } - - public MultipartEntityBuilder addTextBody( - final String name, final String text, final ContentType contentType) { - return addPart(name, new StringBody(text, contentType)); - } - - public MultipartEntityBuilder addTextBody( - final String name, final String text) { - return addTextBody(name, text, ContentType.DEFAULT_TEXT); - } - - public MultipartEntityBuilder addBinaryBody( - final String name, final byte[] b, final ContentType contentType, final String filename) { - return addPart(name, new ByteArrayBody(b, contentType, filename)); - } - - public MultipartEntityBuilder addBinaryBody( - final String name, final byte[] b) { - return addBinaryBody(name, b, ContentType.DEFAULT_BINARY, null); - } - - public MultipartEntityBuilder addBinaryBody( - final String name, final File file, final ContentType contentType, final String filename) { - return addPart(name, new FileBody(file, contentType, filename)); - } - - public MultipartEntityBuilder addBinaryBody( - final String name, final File file) { - return addBinaryBody(name, file, ContentType.DEFAULT_BINARY, file != null ? file.getName() : null); - } - - public MultipartEntityBuilder addBinaryBody( - final String name, final InputStream stream, final ContentType contentType, - final String filename) { - return addPart(name, new InputStreamBody(stream, contentType, filename)); - } - - public MultipartEntityBuilder addBinaryBody(final String name, final InputStream stream) { - return addBinaryBody(name, stream, ContentType.DEFAULT_BINARY, null); - } - - private String generateContentType( - final String boundary, - final Charset charset) { - final StringBuilder buffer = new StringBuilder(); - buffer.append("multipart/form-data; boundary="); - buffer.append(boundary); - if (charset != null) { - buffer.append("; charset="); - buffer.append(charset.name()); - } - return buffer.toString(); - } - - private String generateBoundary() { - final StringBuilder buffer = new StringBuilder(); - final Random rand = new Random(); - final int count = rand.nextInt(11) + 30; // a random size from 30 to 40 - for (int i = 0; i < count; i++) { - buffer.append(MULTIPART_CHARS[rand.nextInt(MULTIPART_CHARS.length)]); - } - return buffer.toString(); - } - - MultipartFormEntity buildEntity() { - final String st = subType != null ? subType : DEFAULT_SUBTYPE; - final Charset cs = charset; - final String b = boundary != null ? boundary : generateBoundary(); - final List<FormBodyPart> bps = bodyParts != null ? new ArrayList<FormBodyPart>(bodyParts) : - Collections.<FormBodyPart>emptyList(); - final HttpMultipartMode m = mode != null ? mode : HttpMultipartMode.STRICT; - final AbstractMultipartForm form; - switch (m) { - case BROWSER_COMPATIBLE: - form = new HttpBrowserCompatibleMultipart(st, cs, b, bps); - break; - case RFC6532: - form = new HttpRFC6532Multipart(st, cs, b, bps); - break; - default: - form = new HttpStrictMultipart(st, cs, b, bps); - } - return new MultipartFormEntity(form, generateContentType(b, cs), form.getTotalLength()); - } - - public HttpEntity build() { - return buildEntity(); - } - -} |