Skip to content
ArchiveFileController.java 1.57 KiB
Newer Older
/*
 * 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.service.ArchiveJob;
import it.inaf.ia2.transfer.service.ArchiveService;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ArchiveFileController {

    @Autowired
    private ArchiveService archiveService;

    @Autowired
    private HttpServletRequest request;

    @PostMapping(value = "/tar", consumes = MediaType.APPLICATION_JSON_VALUE)
    public void createTarArchive(@RequestParam(value = "jobId", required = true) String jobId, @RequestBody List<String> vosPaths) {

        ArchiveJob job = new ArchiveJob();
        job.setPrincipal((TokenPrincipal) request.getUserPrincipal());
        job.setJobId(jobId);
        job.setType(ArchiveJob.Type.TAR);
        job.setVosPaths(vosPaths);

        startArchiveJob(job);
    }

    private void startArchiveJob(ArchiveJob job) {
        CompletableFuture.runAsync(() -> {
            archiveService.createArchive(job);
        });
    }
}