View Javadoc
1   /*
2    * ====================================================================
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   * ====================================================================
20   *
21   * This software consists of voluntary contributions made by many
22   * individuals on behalf of the Apache Software Foundation.  For more
23   * information on the Apache Software Foundation, please see
24   * <http://www.apache.org/>.
25   *
26   */
27  
28  package com.foxinmy.weixin4j.http.apache.content;
29  
30  import java.io.IOException;
31  import java.io.OutputStream;
32  
33  import com.foxinmy.weixin4j.http.MimeType;
34  
35  /**
36   *
37   * @since 4.0
38   */
39  public interface ContentBody {
40  	/**
41  	 * Returns the body descriptors MIME type.
42  	 * 
43  	 * @return The MIME type, which has been parsed from the content-type
44  	 *         definition. Must not be null, but "text/plain", if no
45  	 *         content-type was specified.
46  	 */
47  	MimeType getMimeType();
48  
49  	/**
50  	 * <p>
51  	 * The body descriptors character set, defaulted appropriately for the MIME
52  	 * type.
53  	 * </p>
54  	 * <p>
55  	 * For {@code TEXT} types, this will be defaulted to {@code us-ascii}. For
56  	 * other types, when the charset parameter is missing this property will be
57  	 * null.
58  	 * </p>
59  	 * 
60  	 * @return Character set, which has been parsed from the content-type
61  	 *         definition. Not null for {@code TEXT} types, when unset will be
62  	 *         set to default {@code us-ascii}. For other types, when unset,
63  	 *         null will be returned.
64  	 */
65  	String getCharset();
66  
67  	/**
68  	 * Returns the body descriptors transfer encoding.
69  	 * 
70  	 * @return The transfer encoding. Must not be null, but "7bit", if no
71  	 *         transfer-encoding was specified.
72  	 */
73  	String getTransferEncoding();
74  
75  	/**
76  	 * Returns the body descriptors content-length.
77  	 * 
78  	 * @return Content length, if known, or -1, to indicate the absence of a
79  	 *         content-length header.
80  	 */
81  	long getContentLength();
82  
83  	String getFilename();
84  
85  	void writeTo(OutputStream out) throws IOException;
86  }