package org.iatoki.judgels.uriel.services.impls; import com.google.common.collect.ImmutableList; import org.iatoki.judgels.FileInfo; import org.iatoki.judgels.FileSystemProvider; import org.iatoki.judgels.uriel.config.ContestFile; import org.iatoki.judgels.uriel.services.ContestFileService; import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; import java.io.File; import java.io.IOException; import java.util.List; @Singleton @Named("contestFileService") public final class ContestFileServiceImpl implements ContestFileService { private final FileSystemProvider contestFileSystemProvider; @Inject public ContestFileServiceImpl(@ContestFile FileSystemProvider contestFileSystemProvider) { this.contestFileSystemProvider = contestFileSystemProvider; } @Override public List<FileInfo> getContestFiles(String contestJid) { return contestFileSystemProvider.listFilesInDirectory(getContestFileDirPath(contestJid)); } @Override public String getContestFileURL(String contestJid, String filename) { return contestFileSystemProvider.getURL(getContestFilePath(contestJid, filename)); } @Override public void uploadContestFile(String contestJid, File file, String filename) throws IOException { contestFileSystemProvider.uploadFile(getContestFileDirPath(contestJid), file, filename); } private List<String> getContestFileDirPath(String contestJid) { return ImmutableList.of(contestJid); } private List<String> getContestFilePath(String contestJid, String filename) { return ImmutableList.of(contestJid, filename); } }