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 @SuppressWarnings("unchecked")
40 @Override
41 public FileContentInfo create(final FileContent fileContent) throws FileSystemException {
42 String contentMimeType = null;
43 String contentCharset = null;
44
45 try (final Http5FileObject<Http5FileSystem> http4File = (Http5FileObject<Http5FileSystem>) FileObjectUtils
46 .getAbstractFileObject(fileContent.getFile())) {
47 final HttpResponse lastHeadResponse = http4File.getLastHeadResponse();
48
49 final Header header = lastHeadResponse.getFirstHeader(HttpHeaders.CONTENT_TYPE);
50
51 if (header != null) {
52 final ContentType contentType = ContentType.parse(header.getValue());
53 contentMimeType = contentType.getMimeType();
54
55 if (contentType.getCharset() != null) {
56 contentCharset = contentType.getCharset().name();
57 }
58 }
59
60 return new DefaultFileContentInfo(contentMimeType, contentCharset);
61 } catch (final IOException e) {
62 throw new FileSystemException(e);
63 }
64 }
65 }