package eu.europeana.cloud.service.ips.rest; import com.qmino.miredot.annotations.ReturnType; import eu.europeana.cloud.service.ips.ImageTranslator; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import static eu.europeana.cloud.common.web.ParamConstants.*; /** * Resource to manage retrieving images manifest file */ @Path("/manifest/records/{" + P_CLOUDID + "}/representations/{" + P_REPRESENTATIONNAME + "}/versions/{" + P_VER + "}/files/{" + P_FILENAME + ":(.+)?}") @Component @Scope("request") public class ImagesResource { private ImageTranslator translator; /** * Returns manifest file in json format describing the image associated with the specified version. * * @param globalId cloud id of the record in which the version exists * @param schema representation name * @param version version name * @param fileName file name * @return manifest file for image. * @summary get manifest file for image */ @GET @Path("/") @Produces({MediaType.APPLICATION_JSON}) @ReturnType("javax.ws.rs.core.Response") public Response getManifest(@Context UriInfo uriInfo, @PathParam(P_CLOUDID) String globalId, @PathParam(P_REPRESENTATIONNAME) String schema, @PathParam(P_VER) String version, @PathParam(P_FILENAME) String fileName) { if (translator != null) { // call IIP Image Server for manifest file in json format String response = translator.getResponse(globalId, schema, version, fileName); if (response != null) return Response.ok().entity(response).build(); } return Response.status(Response.Status.NOT_FOUND).build(); } public void setTranslator(ImageTranslator translator) { this.translator = translator; } }