All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.automatiko.addon.files.s3.web.FileDownloadResource Maven / Gradle / Ivy

package io.automatiko.addon.files.s3.web;

import java.io.FileNotFoundException;

import io.automatiko.addon.files.s3.AzureBlobStoreStore;
import io.automatiko.engine.api.workflow.files.File;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.ResponseBuilder;

@Path("/management/files")
public class FileDownloadResource {

    private AzureBlobStoreStore store;

    @Inject
    public FileDownloadResource(AzureBlobStoreStore store) {
        this.store = store;
    }

    @GET
    @Path("download/{processId}/{processInstanceId}/{variable}/{filename}")
    @Produces(MediaType.APPLICATION_OCTET_STREAM)
    public Response downloadFile(@PathParam("processId") String processId,
            @PathParam("processInstanceId") String processInstanceId,
            @PathParam("variable") String variable,
            @PathParam("filename") String filename) {
        try {
            byte[] content = store.content(processId, processInstanceId, variable, filename);

            ResponseBuilder response = Response.ok().entity(content);
            response.header("Content-Disposition", "attachment;filename=" + filename);
            response.header("Content-Type", File.discoverType(filename));
            return response.build();
        } catch (FileNotFoundException e) {
            return Response.status(Response.Status.NOT_FOUND.getStatusCode(), "File with name " + filename + " not found")
                    .build();
        } catch (Exception e) {

            return Response.serverError().build();
        }
    }

    @GET
    @Path("download/{processId}/{processVersion}/{processInstanceId}/{variable}/{filename}")
    @Produces(MediaType.APPLICATION_OCTET_STREAM)
    public Response downloadVersionedFile(@PathParam("processId") String processId,
            @PathParam("processVersion") String processVersion,
            @PathParam("processInstanceId") String processInstanceId,
            @PathParam("variable") String variable,
            @PathParam("filename") String filename) {
        try {
            byte[] content = store.content(processId, processVersion, processInstanceId, variable, filename);

            ResponseBuilder response = Response.ok().entity(content);
            response.header("Content-Disposition", "attachment;filename=" + filename);
            response.header("Content-Type", File.discoverType(filename));
            return response.build();
        } catch (FileNotFoundException e) {
            return Response.status(Response.Status.NOT_FOUND.getStatusCode(), "File with name " + filename + " not found")
                    .build();
        } catch (Exception e) {

            return Response.serverError().build();
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy