blob: 4c81baf8388a66e39d4e2d0f0bc984ad31515a35 [file] [log] [blame]
/*
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.lfs.server;
import java.io.IOException;
import org.eclipse.jgit.annotations.Nullable;
import org.eclipse.jgit.lfs.lib.AnyLongObjectId;
/**
* Abstraction of a repository for storing large objects
*
* @since 4.3
*/
public interface LargeFileRepository {
/**
* Get download action
*
* @param id
* id of the object to download
* @return Action for downloading the object
*/
Response.Action getDownloadAction(AnyLongObjectId id);
/**
* Get upload action
*
* @param id
* id of the object to upload
* @param size
* size of the object to be uploaded
* @return Action for uploading the object
*/
Response.Action getUploadAction(AnyLongObjectId id, long size);
/**
* Get verify action
*
* @param id
* id of the object to be verified
* @return Action for verifying the object, or {@code null} if the server
* doesn't support or require verification
*/
@Nullable
Response.Action getVerifyAction(AnyLongObjectId id);
/**
* Get size of an object
*
* @param id
* id of the object
* @return length of the object content in bytes, -1 if the object doesn't
* exist
* @throws java.io.IOException
* if an IO error occurred
*/
long getSize(AnyLongObjectId id) throws IOException;
}