|
34 | 34 | import org.roda.core.data.v2.ip.IndexedAIP; |
35 | 35 | import org.roda.core.data.v2.ip.IndexedFile; |
36 | 36 | import org.roda.core.data.v2.ip.IndexedRepresentation; |
| 37 | +import org.roda.core.data.v2.ip.metadata.OtherMetadata; |
37 | 38 | import org.roda.core.data.v2.ip.metadata.TechnicalMetadataInfos; |
38 | 39 | import org.roda.core.data.v2.jobs.Job; |
39 | 40 | import org.roda.core.model.utils.UserUtility; |
@@ -413,8 +414,7 @@ public List<String> process(RequestContext requestContext, RequestControllerAssi |
413 | 414 | @Override |
414 | 415 | public ResponseEntity<StreamingResponseBody> exportToCSV(String findRequestString) { |
415 | 416 | // delegate |
416 | | - return ApiUtils |
417 | | - .okResponse(indexService.exportToCSV(findRequestString, IndexedFile.class)); |
| 417 | + return ApiUtils.okResponse(indexService.exportToCSV(findRequestString, IndexedFile.class)); |
418 | 418 | } |
419 | 419 |
|
420 | 420 | @GetMapping(path = "/{uuid}/metadata/technical/{typeId}/html", produces = MediaType.TEXT_HTML_VALUE) |
@@ -483,4 +483,32 @@ public ResponseEntity<StreamingResponseBody> process(RequestContext requestConte |
483 | 483 | } |
484 | 484 | }); |
485 | 485 | } |
| 486 | + |
| 487 | + @RequestMapping(method = RequestMethod.GET, path = "/{fileUUID}/other_metadata/{metadata_type}/{metadata_file_suffix}", produces = MediaType.APPLICATION_JSON_VALUE) |
| 488 | + @Operation(summary = "Gets other metadata (JSON info or ZIP file).\nOptional query params of **start** and **limit** defined the returned query", responses = { |
| 489 | + @ApiResponse(responseCode = "200", description = "Other metadata file", content = @Content(schema = @Schema(implementation = OtherMetadata.class))), |
| 490 | + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(schema = @Schema(implementation = ErrorResponseMessage.class))), |
| 491 | + @ApiResponse(responseCode = "403", description = "Forbidden", content = @Content(schema = @Schema(implementation = ErrorResponseMessage.class))), |
| 492 | + @ApiResponse(responseCode = "404", description = "Not found", content = @Content(schema = @Schema(implementation = ErrorResponseMessage.class)))}) |
| 493 | + ResponseEntity<StreamingResponseBody> getOtherMetadata( |
| 494 | + @Parameter(description = "The UUID of the existing File", required = true) @PathVariable(name = "fileUUID") String fileUUID, |
| 495 | + @Parameter(description = "The type of the other metadata", required = true) @PathVariable(name = "metadata_type") String metadataType, |
| 496 | + @Parameter(description = "The file suffix of the other metadata", required = true) @PathVariable(name = "metadata_file_suffix") String metadataFileSuffix) { |
| 497 | + return requestHandler.processRequest(new RequestHandler.RequestProcessor<ResponseEntity<StreamingResponseBody>>() { |
| 498 | + @Override |
| 499 | + public ResponseEntity<StreamingResponseBody> process(RequestContext requestContext, |
| 500 | + RequestControllerAssistant controllerAssistant) throws RODAException, RESTException, IOException { |
| 501 | + controllerAssistant.setParameters(RodaConstants.CONTROLLER_FILE_ID_PARAM, fileUUID); |
| 502 | + // check object permissions |
| 503 | + IndexedFile indexedFile = requestContext.getIndexService().retrieve(IndexedFile.class, fileUUID, |
| 504 | + RodaConstants.FILE_FIELDS_TO_RETURN); |
| 505 | + controllerAssistant.checkObjectPermissions(requestContext.getUser(), indexedFile); |
| 506 | + |
| 507 | + // delegate |
| 508 | + StreamResponse streamResponse = filesService.retrieveOtherMetadata(requestContext, indexedFile, metadataType, |
| 509 | + metadataFileSuffix); |
| 510 | + return ApiUtils.okResponse(streamResponse); |
| 511 | + } |
| 512 | + }); |
| 513 | + } |
486 | 514 | } |
0 commit comments