Commit f1868148 authored by Nicola Fulvio Calabria's avatar Nicola Fulvio Calabria
Browse files

Started CopyController development

parent b09f782a
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -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");
    @Override
    protected String getCustomAuthErrorMessage() {
        return "Tar/Zip archive generation not allowed to anonymous users";
    }
    
        return principal;
    }
}
+24 −0
Original line number Diff line number Diff line
/*
 * 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();
}
+31 −0
Original line number Diff line number Diff line
/*
 * 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";
    }

}
+38 −0
Original line number Diff line number Diff line
/*
 * 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;
    }

}