package com.mossle.cms.rs; import java.io.InputStream; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import com.mossle.api.store.StoreConnector; import com.mossle.api.store.StoreDTO; import com.mossle.api.tenant.TenantHolder; import com.mossle.core.util.ServletUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Component @Path("cms") public class CmsResource { private static Logger logger = LoggerFactory.getLogger(CmsResource.class); private StoreConnector storeConnector; private TenantHolder tenantHolder; @GET @Path("image") @Produces(MediaType.APPLICATION_OCTET_STREAM) public InputStream image(@QueryParam("key") String key) throws Exception { String tenantId = tenantHolder.getTenantId(); StoreDTO storeDto = storeConnector.getStore("cms/html/r/image", key, tenantId); return storeDto.getDataSource().getInputStream(); } @GET @Path("video") @Produces(MediaType.APPLICATION_OCTET_STREAM) public InputStream video(@QueryParam("key") String key) throws Exception { String tenantId = tenantHolder.getTenantId(); StoreDTO storeDto = storeConnector.getStore("cms/html/r/video", key, tenantId); return storeDto.getDataSource().getInputStream(); } @GET @Path("audio") @Produces(MediaType.APPLICATION_OCTET_STREAM) public InputStream audio(@QueryParam("key") String key) throws Exception { String tenantId = tenantHolder.getTenantId(); StoreDTO storeDto = storeConnector.getStore("cms/html/r/audio", key, tenantId); return storeDto.getDataSource().getInputStream(); } @GET @Path("pdf") @Produces(MediaType.APPLICATION_OCTET_STREAM) public InputStream pdf(@QueryParam("key") String key) throws Exception { String tenantId = tenantHolder.getTenantId(); StoreDTO storeDto = storeConnector.getStore("cms/html/r/pdf", key, tenantId); return storeDto.getDataSource().getInputStream(); } @GET @Path("attachment") @Produces(MediaType.APPLICATION_OCTET_STREAM) public InputStream zip(@QueryParam("key") String key) throws Exception { String tenantId = tenantHolder.getTenantId(); StoreDTO storeDto = storeConnector.getStore("cms/html/r/attachment", key, tenantId); return storeDto.getDataSource().getInputStream(); } @GET @Path("attachments") @Produces(MediaType.APPLICATION_OCTET_STREAM) public InputStream attachments(@QueryParam("key") String key, HttpServletRequest request, HttpServletResponse response) throws Exception { String tenantId = tenantHolder.getTenantId(); StoreDTO storeDto = storeConnector.getStore("cms/html/r/attachments", key, tenantId); ServletUtils.setFileDownloadHeader(request, response, storeDto.getDisplayName()); return storeDto.getDataSource().getInputStream(); } @Resource public void setStoreConnector(StoreConnector storeConnector) { this.storeConnector = storeConnector; } @Resource public void setTenantHolder(TenantHolder tenantHolder) { this.tenantHolder = tenantHolder; } }