1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2.provider.http5;
18
19 import java.io.IOException;
20
21 import org.apache.commons.vfs2.FileContent;
22 import org.apache.commons.vfs2.FileContentInfo;
23 import org.apache.commons.vfs2.FileContentInfoFactory;
24 import org.apache.commons.vfs2.FileSystemException;
25 import org.apache.commons.vfs2.impl.DefaultFileContentInfo;
26 import org.apache.commons.vfs2.util.FileObjectUtils;
27 import org.apache.hc.core5.http.ContentType;
28 import org.apache.hc.core5.http.Header;
29 import org.apache.hc.core5.http.HttpHeaders;
30 import org.apache.hc.core5.http.HttpResponse;
31
32
33
34
35
36
37 public class Http5FileContentInfoFactory implements FileContentInfoFactory {
38
39
40
41
42 public Http5FileContentInfoFactory() {
43
44 }
45
46 @SuppressWarnings("unchecked")
47 @Override
48 public FileContentInfo create(final FileContent fileContent) throws FileSystemException {
49 String contentMimeType = null;
50 String contentCharset = null;
51
52 try (Http5FileObject<Http5FileSystem> http4File = (Http5FileObject<Http5FileSystem>) FileObjectUtils
53 .getAbstractFileObject(fileContent.getFile())) {
54 final HttpResponse lastHeadResponse = http4File.getLastHeadResponse();
55
56 final Header header = lastHeadResponse.getFirstHeader(HttpHeaders.CONTENT_TYPE);
57
58 if (header != null) {
59 final ContentType contentType = ContentType.parse(header.getValue());
60 contentMimeType = contentType.getMimeType();
61
62 if (contentType.getCharset() != null) {
63 contentCharset = contentType.getCharset().name();
64 }
65 }
66
67 return new DefaultFileContentInfo(contentMimeType, contentCharset);
68 } catch (final IOException e) {
69 throw new FileSystemException(e);
70 }
71 }
72 }