diff options
author | David Pursehouse <david.pursehouse@gmail.com> | 2016-08-19 10:58:06 +0900 |
---|---|---|
committer | David Pursehouse <david.pursehouse@gmail.com> | 2016-08-20 11:26:06 +0900 |
commit | 1096652e71257720fcf5bc90ccfa367293bd8ce2 (patch) | |
tree | 8980f653839d3da22e5fd935a3ce4eb5992900ff /org.eclipse.jgit.lfs.server | |
parent | de89b7d0407507607a3bacc6fb390977713b7495 (diff) | |
download | jgit-1096652e71257720fcf5bc90ccfa367293bd8ce2.tar.gz jgit-1096652e71257720fcf5bc90ccfa367293bd8ce2.zip |
LfsProtocolServlet: Add support for rate limit and bandwidth limit errors
The git-lfs specification [1] describes the following optional status codes
that may be returned:
429 - The user has hit a rate limit with the server. Though the API does
not specify any rate limits, implementors are encouraged to set some
for availability reasons.
509 - Returned if the bandwidth limit for the user or repository has been
exceeded. The API does not specify any bandwidth limit, but implementors
may track usage.
Add two new exception classes to represent these cases. Implementations may
throw these from #getLargeFileRepository(), causing the corresponding HTTP
status codes to be returned to the client.
[1] https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md
Change-Id: I7b93f3cf90f7344c90b1587e07927fdeb167097e
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
Diffstat (limited to 'org.eclipse.jgit.lfs.server')
-rw-r--r-- | org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java index 095ed4c5ae..d335b720bd 100644 --- a/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java +++ b/org.eclipse.jgit.lfs.server/src/org/eclipse/jgit/lfs/server/LfsProtocolServlet.java @@ -63,7 +63,9 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.eclipse.jgit.lfs.errors.LfsBandwidthLimitExceeded; import org.eclipse.jgit.lfs.errors.LfsException; +import org.eclipse.jgit.lfs.errors.LfsRateLimitExceeded; import org.eclipse.jgit.lfs.errors.LfsRepositoryNotFound; import org.eclipse.jgit.lfs.errors.LfsRepositoryReadOnly; import org.eclipse.jgit.lfs.errors.LfsValidationError; @@ -86,6 +88,10 @@ public abstract class LfsProtocolServlet extends HttpServlet { private static final String CONTENTTYPE_VND_GIT_LFS_JSON = "application/vnd.git-lfs+json; charset=utf-8"; //$NON-NLS-1$ + private static final int SC_RATE_LIMIT_EXCEEDED = 429; + + private static final int SC_BANDWIDTH_LIMIT_EXCEEDED = 509; + private Gson gson = createGson(); /** @@ -163,6 +169,10 @@ public abstract class LfsProtocolServlet extends HttpServlet { sendError(res, w, SC_NOT_FOUND, e.getMessage()); } catch (LfsRepositoryReadOnly e) { sendError(res, w, SC_FORBIDDEN, e.getMessage()); + } catch (LfsRateLimitExceeded e) { + sendError(res, w, SC_RATE_LIMIT_EXCEEDED, e.getMessage()); + } catch (LfsBandwidthLimitExceeded e) { + sendError(res, w, SC_BANDWIDTH_LIMIT_EXCEEDED, e.getMessage()); } catch (LfsException e) { sendError(res, w, SC_SERVICE_UNAVAILABLE, e.getMessage()); } finally { |