package controllers; import auth.modules.TokenAuthorize; import auth.types.PermissionType; import compositions.*; import play.mvc.Result; import service.PoseidonPropertyService; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; @ResponseTimeLoggingComposition.ResponseTimeLogging @NoCacheComposition.NoCache @ErrorHandlingComposition.ErrorHandling @RequestLoggingComposition.RequestLogging @CorsComposition.Cors public class CSVDownloadControllerV1 extends PoseidonController { public static final String DISTRIBUTIONLIST = "distributionlist"; public static final String INVOICE = "invoice"; public Result downloadInvoiceCSV(String file) { return downloadCSV(file, INVOICE); } public Result downloadDistributionListCSV(String file) { return downloadCSV(file, DISTRIBUTIONLIST); } private Result downloadCSV(String file, String type) { String csvdir = PoseidonPropertyService.getProperty("csvfile." + type + ".dir"); csvdir = csvdir.endsWith("/")?csvdir:csvdir + "/"; if ( file.startsWith("..") || file.startsWith("/")) return notFound(); File f = new File(csvdir + file); if (f.exists() && f.canRead()) { response().setContentType("application/x-download"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm"); String filename = file + "-" + sdf.format(new Date()) + ".csv"; String contentDispositionValue = "attachment; url=" + filename; response().setHeader("Content-disposition", contentDispositionValue); return ok(f); } else return notFound(); } }