package io.fathom.cloud.storage;
import io.fathom.cloud.CloudException;
import io.fathom.cloud.blobs.BlobStore;
import io.fathom.cloud.protobuf.FileModel.BucketAttributes;
import io.fathom.cloud.server.model.Project;
import io.fathom.cloud.server.model.User;
import io.fathom.cloud.storage.FileService;
import io.fathom.cloud.storage.api.os.resources.DirectoryListEntry;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.StreamingOutput;
import com.google.common.util.concurrent.ListenableFuture;
public interface FileServiceInternal extends FileService {
FsFile findFileInfo(FsBucket bucket, String name) throws CloudException;
void deleteBucket(Project project, String bucketName) throws CloudException;
Status putBucket(Project project, String bucketName, BucketAttributes bucketAttributes,
Map<String, String> userAttributes) throws CloudException;
FsBucket findBucket(User user, Project project, String bucketName) throws CloudException;
StreamingOutput open(FsFile file, Long from, Long to);
BlobStore getBlobStore(Project project) throws IOException;
boolean compact(CompactOperation compaction) throws IOException, CloudException;
ListenableFuture<?> watchBucket(FsBucket bucket, String since) throws CloudException;
// List<DirectoryListEntry> listFiles(Project project, FsBucket bucket)
// throws CloudException;
List<DirectoryListEntry> listFiles(Project project, FsBucket bucket, String prefix, String delimiter, String marker)
throws CloudException;
}