package photato.controllers; import photato.Photato; import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.util.Date; import java.util.Locale; import java.util.TimeZone; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.entity.ContentType; import org.apache.http.message.BasicHeader; import photato.helpers.FileHelper; import photato.helpers.SafeSimpleDateFormat; import java.util.Map; import org.apache.http.entity.FileEntity; public class VideoHandler extends FileHandler { private static final SafeSimpleDateFormat expiresDateFormat; static { expiresDateFormat = new SafeSimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH); expiresDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); expiresDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); } public VideoHandler(Path folderRoot, String prefix) { super(folderRoot, prefix, Photato.supportedVideoExtensions); } @Override protected String getContentType(String extension) { return "video/" + extension; } @Override protected Header[] getHeaders() { int maxAge = 30 * 86400; return new Header[]{ new BasicHeader("Cache-Control", "max-age=" + maxAge + ", public"), new BasicHeader("Expires", expiresDateFormat.format(new Date(System.currentTimeMillis() + maxAge * 1000L))) }; } @Override protected HttpEntity getEntity(String path, Map<String, String> query, File localFile) throws IOException { String extension = FileHelper.getExtension(path); ContentType contentType = ContentType.create(getContentType(extension.toLowerCase())); return new FileEntity(localFile, contentType); } }