|
|
@@ -54,6 +54,7 @@ import static org.apache.http.HttpStatus.SC_UNPROCESSABLE_ENTITY; |
|
|
|
import static org.eclipse.jgit.lfs.lib.Constants.DOWNLOAD; |
|
|
|
import static org.eclipse.jgit.lfs.lib.Constants.UPLOAD; |
|
|
|
import static org.eclipse.jgit.lfs.lib.Constants.VERIFY; |
|
|
|
import static org.eclipse.jgit.util.HttpSupport.HDR_AUTHORIZATION; |
|
|
|
|
|
|
|
import java.io.BufferedReader; |
|
|
|
import java.io.BufferedWriter; |
|
|
@@ -143,9 +144,54 @@ public abstract class LfsProtocolServlet extends HttpServlet { |
|
|
|
* <dd>when an unexpected internal server error occurred</dd> |
|
|
|
* </dl> |
|
|
|
* @since 4.5 |
|
|
|
* @deprecated use |
|
|
|
* {@link #getLargeFileRepository(LfsRequest, String, String)} |
|
|
|
*/ |
|
|
|
@Deprecated |
|
|
|
protected LargeFileRepository getLargeFileRepository(LfsRequest request, |
|
|
|
String path) throws LfsException { |
|
|
|
return getLargeFileRepository(request, path, null); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Get the large file repository for the given request and path. |
|
|
|
* |
|
|
|
* @param request |
|
|
|
* the request |
|
|
|
* @param path |
|
|
|
* the path |
|
|
|
* @param auth |
|
|
|
* the Authorization HTTP header |
|
|
|
* |
|
|
|
* @return the large file repository storing large files. |
|
|
|
* @throws LfsException |
|
|
|
* implementations should throw more specific exceptions to |
|
|
|
* signal which type of error occurred: |
|
|
|
* <dl> |
|
|
|
* <dt>{@link LfsValidationError}</dt> |
|
|
|
* <dd>when there is a validation error with one or more of the |
|
|
|
* objects in the request</dd> |
|
|
|
* <dt>{@link LfsRepositoryNotFound}</dt> |
|
|
|
* <dd>when the repository does not exist for the user</dd> |
|
|
|
* <dt>{@link LfsRepositoryReadOnly}</dt> |
|
|
|
* <dd>when the user has read, but not write access. Only |
|
|
|
* applicable when the operation in the request is "upload"</dd> |
|
|
|
* <dt>{@link LfsRateLimitExceeded}</dt> |
|
|
|
* <dd>when the user has hit a rate limit with the server</dd> |
|
|
|
* <dt>{@link LfsBandwidthLimitExceeded}</dt> |
|
|
|
* <dd>when the bandwidth limit for the user or repository has |
|
|
|
* been exceeded</dd> |
|
|
|
* <dt>{@link LfsInsufficientStorage}</dt> |
|
|
|
* <dd>when there is insufficient storage on the server</dd> |
|
|
|
* <dt>{@link LfsUnavailable}</dt> |
|
|
|
* <dd>when LFS is not available</dd> |
|
|
|
* <dt>{@link LfsException}</dt> |
|
|
|
* <dd>when an unexpected internal server error occurred</dd> |
|
|
|
* </dl> |
|
|
|
* @since 4.7 |
|
|
|
*/ |
|
|
|
protected abstract LargeFileRepository getLargeFileRepository( |
|
|
|
LfsRequest request, String path) throws LfsException; |
|
|
|
LfsRequest request, String path, String auth) throws LfsException; |
|
|
|
|
|
|
|
/** |
|
|
|
* LFS request. |
|
|
@@ -214,7 +260,8 @@ public abstract class LfsProtocolServlet extends HttpServlet { |
|
|
|
res.setContentType(CONTENTTYPE_VND_GIT_LFS_JSON); |
|
|
|
LargeFileRepository repo = null; |
|
|
|
try { |
|
|
|
repo = getLargeFileRepository(request, path); |
|
|
|
repo = getLargeFileRepository(request, path, |
|
|
|
req.getHeader(HDR_AUTHORIZATION)); |
|
|
|
if (repo == null) { |
|
|
|
String error = MessageFormat |
|
|
|
.format(LfsText.get().lfsFailedToGetRepository, path); |