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 }