diff --git a/src/main/java/it/inaf/ia2/transfer/controller/ArchiveFileController.java b/src/main/java/it/inaf/ia2/transfer/controller/ArchiveFileController.java index 637208277cf6e33451ecf75cc448c98dadb3e073..7f5ed6c7bab1fe79619e07eaaf532c44ce23bd38 100644 --- a/src/main/java/it/inaf/ia2/transfer/controller/ArchiveFileController.java +++ b/src/main/java/it/inaf/ia2/transfer/controller/ArchiveFileController.java @@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController -public class ArchiveFileController extends FileController { +public class ArchiveFileController extends AuthenticatedFileController { @Autowired private ArchiveService archiveService; @@ -63,13 +63,9 @@ public class ArchiveFileController extends FileController { FileResponseUtil.getFileResponse(response, file); } - private TokenPrincipal getPrincipal() { - TokenPrincipal principal = (TokenPrincipal) request.getUserPrincipal(); - - if ("anonymous".equals(principal.getName())) { - throw new PermissionDeniedException("Tar/Zip archive generation not allowed to anonymous users"); - } - - return principal; + @Override + protected String getCustomAuthErrorMessage() { + return "Tar/Zip archive generation not allowed to anonymous users"; } + } diff --git a/src/main/java/it/inaf/ia2/transfer/controller/AuthenticatedFileController.java b/src/main/java/it/inaf/ia2/transfer/controller/AuthenticatedFileController.java new file mode 100644 index 0000000000000000000000000000000000000000..cefea304af21bf9d1a575d248afd94953104d5d2 --- /dev/null +++ b/src/main/java/it/inaf/ia2/transfer/controller/AuthenticatedFileController.java @@ -0,0 +1,24 @@ +/* + * This file is part of vospace-file-service + * Copyright (C) 2021 Istituto Nazionale di Astrofisica + * SPDX-License-Identifier: GPL-3.0-or-later + */ +package it.inaf.ia2.transfer.controller; + +import it.inaf.ia2.transfer.auth.TokenPrincipal; +import it.inaf.ia2.transfer.exception.PermissionDeniedException; + +public abstract class AuthenticatedFileController extends FileController { + + protected TokenPrincipal getPrincipal() { + TokenPrincipal principal = (TokenPrincipal) request.getUserPrincipal(); + + if ("anonymous".equals(principal.getName())) { + throw new PermissionDeniedException("Tar/Zip archive generation not allowed to anonymous users"); + } + + return principal; + } + + protected abstract String getCustomAuthErrorMessage(); +} diff --git a/src/main/java/it/inaf/ia2/transfer/controller/CopyController.java b/src/main/java/it/inaf/ia2/transfer/controller/CopyController.java new file mode 100644 index 0000000000000000000000000000000000000000..72041fb2085d56ff64244de9a033212d895fe0b9 --- /dev/null +++ b/src/main/java/it/inaf/ia2/transfer/controller/CopyController.java @@ -0,0 +1,31 @@ +/* + * This file is part of vospace-file-service + * Copyright (C) 2021 Istituto Nazionale di Astrofisica + * SPDX-License-Identifier: GPL-3.0-or-later + */ +package it.inaf.ia2.transfer.controller; + +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class CopyController extends AuthenticatedFileController { + + + @PostMapping(value = "/copy", consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity<?> copyFiles(@RequestBody CopyRequest copyRequest) { + + return ResponseEntity.ok( + copyRequest.getJobId() + " copy task accepted by File Service" + ); + } + + @Override + protected String getCustomAuthErrorMessage() { + return "File Copy not allowed to anonymous users"; + } + +} diff --git a/src/main/java/it/inaf/ia2/transfer/controller/CopyRequest.java b/src/main/java/it/inaf/ia2/transfer/controller/CopyRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..d725d46efa30dc0fe5174ecc0f94657f24aabb75 --- /dev/null +++ b/src/main/java/it/inaf/ia2/transfer/controller/CopyRequest.java @@ -0,0 +1,38 @@ +/* + * This file is part of vospace-file-service + * Copyright (C) 2021 Istituto Nazionale di Astrofisica + * SPDX-License-Identifier: GPL-3.0-or-later + */ +package it.inaf.ia2.transfer.controller; + +public class CopyRequest { + + String jobId; + String target; + String direction; + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public String getTarget() { + return target; + } + + public void setTarget(String target) { + this.target = target; + } + + public String getDirection() { + return direction; + } + + public void setDirection(String direction) { + this.direction = direction; + } + +}