package com.airbnb.airpal.api.output.persistors; import com.airbnb.airpal.api.Job; import com.airbnb.airpal.api.output.builders.JobOutputBuilder; import com.airbnb.airpal.core.execution.QueryExecutionAuthorizer; import com.airbnb.airpal.core.store.files.ExpiringFileStore; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.IOException; import java.net.URI; import static java.lang.String.format; @RequiredArgsConstructor @Slf4j public class FlatFilePersistor implements Persistor { private final ExpiringFileStore fileStore; @Override public boolean canPersist(QueryExecutionAuthorizer authorizer) { // Everyone can create files to download. return true; } @Override public URI persist(JobOutputBuilder outputBuilder, Job job) { File file = outputBuilder.build(); try { fileStore.addFile(file.getName(), file); } catch (IOException e) { log.error("Caught error adding file to local store", e); } return URI.create(format("/api/files/%s", file.getName())); } }