@Path( "/get" )
@Produces( "text/plain" )
public void getResource( @QueryParam( "resource" ) @DefaultValue( "" ) String resource,
@Context HttpServletResponse response ) throws IOException {
try {
IBasicFile file = Utils.getFileViaAppropriateReadAccess( resource );
if ( file == null ) {
logger.error( "resource not found:" + resource );
response.sendError( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
return;
}
IPluginResourceLoader resLoader = PentahoSystem.get( IPluginResourceLoader.class, null );
String maxAge = resLoader.getPluginSetting( this.getClass(), "max-age" );
String mimeType;
try {
mimeType = MimeTypeHandler.getMimeTypeFromExtension( file.getExtension() );
} catch ( java.lang.IllegalArgumentException ex ) {
mimeType = "";
} catch ( EnumConstantNotPresentException ex ) {
mimeType = "";
}
response.setHeader( "Content-Type", mimeType );
response.setHeader( "content-disposition", "inline; filename=\"" + file.getName() + "\"" );
if ( maxAge != null ) {
response.setHeader( "Cache-Control", "max-age=" + maxAge );
}
byte[] contents = IOUtils.toByteArray( file.getContents() );
IOUtils.write( contents, response.getOutputStream() );
response.getOutputStream().flush();
} catch ( SecurityException e ) {
response.sendError( HttpServletResponse.SC_FORBIDDEN );