From 3a374e0ba71a4f8e4a5db8f8bc298c98ff37bd0d Mon Sep 17 00:00:00 2001 From: Michael Walker Date: Tue, 6 Feb 2018 14:11:28 +0000 Subject: [PATCH] Send the MissingRepositoryException message to the client --- .../uk/ac/ic/wlgitbridge/server/Oauth2Filter.java | 9 +++++---- .../snapshot/base/MissingRepositoryException.java | 11 ++++++++++- .../uk/ac/ic/wlgitbridge/snapshot/base/Request.java | 9 +++++++-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/Oauth2Filter.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/Oauth2Filter.java index 9cba5255f9..f4c2c4d67d 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/Oauth2Filter.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/Oauth2Filter.java @@ -78,7 +78,7 @@ public class Oauth2Filter implements Filter { ); return; } catch (MissingRepositoryException e) { - missing(project, (HttpServletResponse) servletResponse); + missing(project, e, (HttpServletResponse) servletResponse); } Log.info("[{}] Auth not needed", project); filterChain.doFilter(servletRequest, servletResponse); @@ -205,6 +205,7 @@ public class Oauth2Filter implements Filter { private void missing( String projectName, + MissingRepositoryException e, HttpServletResponse response ) throws IOException { Log.info("[{}] Project missing.", projectName); @@ -216,9 +217,9 @@ public class Oauth2Filter implements Filter { response.setStatus(404); PrintWriter w = response.getWriter(); - w.println("This project is not accessible over Git."); - w.println(); - w.println("If you think this is an error, contact support at support@overleaf.com."); + for (String line : e.getDescriptionLines()) { + w.println(line); + } w.close(); } } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java index c0723d63ca..5fc74f4af3 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/MissingRepositoryException.java @@ -8,12 +8,21 @@ import java.util.List; public class MissingRepositoryException extends SnapshotAPIException { + private String message = ""; + + public MissingRepositoryException() { + } + + public MissingRepositoryException(String message) { + this.message = message; + } + @Override public void fromJSON(JsonElement json) {} @Override public String getMessage() { - return "project not accessible over git"; + return message; } @Override diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java index f587288e77..d010123c4d 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/snapshot/base/Request.java @@ -73,9 +73,14 @@ public abstract class Request { int sc = httpCause.getStatusCode(); if (sc == HttpServletResponse.SC_UNAUTHORIZED || sc == HttpServletResponse.SC_FORBIDDEN) { throw new ForbiddenException(); - } - if (sc >= 400 && sc < 500) { + } else if (sc == HttpServletResponse.SC_NOT_FOUND) { throw new MissingRepositoryException(); + } else if (sc >= 400 && sc < 500) { + throw new MissingRepositoryException( + "This project is currently inaccessible over Git.\n" + + "\n" + + "If you think this is an error, contact support at support@overleaf.com." + ); } throw new FailedConnectionException(cause); } else {