1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2.provider.http;
18
19 import java.io.IOException;
20
21 import org.apache.commons.httpclient.Header;
22 import org.apache.commons.httpclient.HeaderElement;
23 import org.apache.commons.httpclient.methods.HeadMethod;
24 import org.apache.commons.lang3.ArrayUtils;
25 import org.apache.commons.vfs2.FileContent;
26 import org.apache.commons.vfs2.FileContentInfo;
27 import org.apache.commons.vfs2.FileContentInfoFactory;
28 import org.apache.commons.vfs2.FileSystemException;
29 import org.apache.commons.vfs2.impl.DefaultFileContentInfo;
30 import org.apache.commons.vfs2.util.FileObjectUtils;
31
32
33
34
35 public class HttpFileContentInfoFactory implements FileContentInfoFactory {
36
37 @Override
38 public FileContentInfo create(final FileContent fileContent) throws FileSystemException {
39
40 String contentType = null;
41
42 final HeadMethod headMethod;
43 try (final HttpFileObject<HttpFileSystem> httpFile = (HttpFileObject<HttpFileSystem>) FileObjectUtils
44 .getAbstractFileObject(fileContent.getFile())) {
45 headMethod = httpFile.getHeadMethod();
46 } catch (final IOException e) {
47 throw new FileSystemException(e);
48 }
49 final Header header = headMethod.getResponseHeader("content-type");
50 if (header != null) {
51 final HeaderElement[] element = header.getElements();
52 if (!ArrayUtils.isEmpty(element)) {
53 contentType = element[0].getName();
54 }
55 }
56
57 return new DefaultFileContentInfo(contentType, headMethod.getResponseCharSet());
58 }
59 }