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 org.apache.hc.client5.http.entity.mime;
29  
30  /**
31   * Represents common content properties.
32   */
33  public interface ContentDescriptor {
34  
35      /**
36       * Returns the body descriptors MIME type.
37       * @see #getMediaType()
38       * @see #getSubType()
39       * @return The MIME type, which has been parsed from the
40       *   content-type definition. Must not be null, but
41       *   "text/plain", if no content-type was specified.
42       */
43      String getMimeType();
44  
45      /**
46       * Gets the defaulted MIME media type for this content.
47       * For example {@code TEXT}, {@code IMAGE}, {@code MULTIPART}
48       * @see #getMimeType()
49       * @return the MIME media type when content-type specified,
50       * otherwise the correct default ({@code TEXT})
51       */
52      String getMediaType();
53  
54      /**
55       * Gets the defaulted MIME sub type for this content.
56       * @see #getMimeType()
57       * @return the MIME media type when content-type is specified,
58       * otherwise the correct default ({@code PLAIN})
59       */
60      String getSubType();
61  
62      /**
63       * <p>The body descriptors character set, defaulted appropriately for the MIME type.</p>
64       * <p>
65       * For {@code TEXT} types, this will be defaulted to {@code us-ascii}.
66       * For other types, when the charset parameter is missing this property will be null.
67       * </p>
68       * @return Character set, which has been parsed from the
69       *   content-type definition. Not null for {@code TEXT} types, when unset will
70       *   be set to default {@code us-ascii}. For other types, when unset,
71       *   null will be returned.
72       */
73      String getCharset();
74  
75      /**
76       * Returns the body descriptors content-length.
77       * @return Content length, if known, or -1, to indicate the absence of a
78       *   content-length header.
79       */
80      long getContentLength();
81  
82  }