diff --git a/services/git-bridge/.idea/compiler.xml b/services/git-bridge/.idea/compiler.xml
deleted file mode 100644
index 8d3613cc8b..0000000000
--- a/services/git-bridge/.idea/compiler.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/services/git-bridge/.idea/misc.xml b/services/git-bridge/.idea/misc.xml
deleted file mode 100644
index 66ed3bc26d..0000000000
--- a/services/git-bridge/.idea/misc.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/services/git-bridge/bin/config.json b/services/git-bridge/bin/config.json
index e174ed8eb9..20b41c0025 100644
--- a/services/git-bridge/bin/config.json
+++ b/services/git-bridge/bin/config.json
@@ -1,9 +1,14 @@
{
- "port": 80,
- "rootGitDirectory": "/var/wlgb/git",
- "apiBaseUrl": "http://127.0.0.1:60000/api/v0",
- "username": "REDACTED",
- "password": "REDACTED",
- "postbackBaseUrl": "http://127.0.0.1",
- "serviceName": "Overleaf"
+ "port": 80,
+ "rootGitDirectory": "/var/wlgb/git",
+ "apiBaseUrl": "http://127.0.0.1:60000/api/v0",
+ "username": "REDACTED",
+ "password": "REDACTED",
+ "postbackBaseUrl": "http://127.0.0.1",
+ "serviceName": "Overleaf",
+ "oauth2": {
+ "oauth2ClientID": "clientID",
+ "oauth2ClientSecret": "oauth2 client secret",
+ "oauth2Server": "https://www.overleaf.com"
+ }
}
diff --git a/services/git-bridge/pom.xml b/services/git-bridge/pom.xml
index 9377b85d79..6b23bad943 100644
--- a/services/git-bridge/pom.xml
+++ b/services/git-bridge/pom.xml
@@ -102,6 +102,26 @@
joda-time
2.7
+
+ com.google.oauth-client
+ google-oauth-client
+ 1.20.0
+
+
+ com.google.http-client
+ google-http-client
+ 1.20.0
+
+
+ com.google.http-client
+ google-http-client-gson
+ 1.20.0
+
+
+ commons-lang
+ commons-lang
+ 2.6
+
\ No newline at end of file
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java
index 063b95e5a8..11ef4ef2e5 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java
@@ -1,5 +1,6 @@
package uk.ac.ic.wlgitbridge.application;
+import uk.ac.ic.wlgitbridge.application.config.Config;
import uk.ac.ic.wlgitbridge.application.exception.ConfigFileException;
import uk.ac.ic.wlgitbridge.application.exception.ArgsException;
import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException;
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/Config.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java
similarity index 82%
rename from services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/Config.java
rename to services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java
index 70ab5f2042..9e350b9b88 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/Config.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java
@@ -1,4 +1,4 @@
-package uk.ac.ic.wlgitbridge.application;
+package uk.ac.ic.wlgitbridge.application.config;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
@@ -9,6 +9,7 @@ import uk.ac.ic.wlgitbridge.snapshot.base.JSONSource;
import java.io.FileReader;
import java.io.IOException;
+import java.io.Reader;
/**
* Created by Winston on 05/12/14.
@@ -22,13 +23,14 @@ public class Config implements JSONSource {
private String apiBaseURL;
private String postbackURL;
private String serviceName;
+ private Oauth2 oauth2;
public Config(String configFilePath) throws ConfigFileException, IOException {
- try {
- fromJSON(new Gson().fromJson(new FileReader(configFilePath), JsonElement.class));
- } catch (JsonParseException e) {
- throw new IOException();
- }
+ this(new FileReader(configFilePath));
+ }
+
+ Config(Reader reader) {
+ fromJSON(new Gson().fromJson(reader, JsonElement.class));
}
@Override
@@ -48,6 +50,7 @@ public class Config implements JSONSource {
if (!postbackURL.endsWith("/")) {
postbackURL += "/";
}
+ oauth2 = new Gson().fromJson(configObject.get("oauth2"), Oauth2.class);
}
public int getPort() {
@@ -70,6 +73,25 @@ public class Config implements JSONSource {
return apiBaseURL;
}
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ public String getPostbackURL() {
+ return postbackURL;
+ }
+
+ public boolean isUsingOauth2() {
+ return oauth2 != null;
+ }
+
+ public Oauth2 getOauth2() {
+ if (!isUsingOauth2()) {
+ throw new AssertionError("Getting oauth2 when not using it");
+ }
+ return oauth2;
+ }
+
private JsonElement getElement(JsonObject configObject, String name) {
JsonElement element = configObject.get(name);
if (element == null) {
@@ -86,12 +108,4 @@ public class Config implements JSONSource {
return element.getAsString();
}
- public String getServiceName() {
- return serviceName;
- }
-
- public String getPostbackURL() {
- return postbackURL;
- }
-
}
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Oauth2.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Oauth2.java
new file mode 100644
index 0000000000..11d04562b2
--- /dev/null
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Oauth2.java
@@ -0,0 +1,30 @@
+package uk.ac.ic.wlgitbridge.application.config;
+
+/**
+ * Created by winston on 25/10/15.
+ */
+public class Oauth2 {
+
+ private final String oauth2ClientID;
+ private final String oauth2ClientSecret;
+ private final String oauth2Server;
+
+ public Oauth2(String oauth2ClientID, String oauth2ClientSecret, String oauth2Server) {
+ this.oauth2ClientID = oauth2ClientID;
+ this.oauth2ClientSecret = oauth2ClientSecret;
+ this.oauth2Server = oauth2Server;
+ }
+
+ public String getOauth2ClientID() {
+ return oauth2ClientID;
+ }
+
+ public String getOauth2ClientSecret() {
+ return oauth2ClientSecret;
+ }
+
+ public String getOauth2Server() {
+ return oauth2Server;
+ }
+
+}
diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java
index 3172788e82..c8051a0e85 100644
--- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java
+++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java
@@ -7,7 +7,7 @@ import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.log.Log;
-import uk.ac.ic.wlgitbridge.application.Config;
+import uk.ac.ic.wlgitbridge.application.config.Config;
import uk.ac.ic.wlgitbridge.application.jetty.NullLogger;
import uk.ac.ic.wlgitbridge.bridge.BridgeAPI;
import uk.ac.ic.wlgitbridge.git.exception.InvalidRootDirectoryPathException;
diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java
new file mode 100644
index 0000000000..8719082529
--- /dev/null
+++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java
@@ -0,0 +1,69 @@
+package uk.ac.ic.wlgitbridge.application.config;
+
+import org.junit.Test;
+
+import java.io.Reader;
+import java.io.StringReader;
+
+import static org.junit.Assert.*;
+
+/**
+ * Created by winston on 25/10/15.
+ */
+public class ConfigTest {
+
+ @Test
+ public void testConstructWithOauth() {
+ Reader reader = new StringReader("{\n" +
+ " \"port\": 80,\n" +
+ " \"rootGitDirectory\": \"/var/wlgb/git\",\n" +
+ " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" +
+ " \"username\": \"REDACTED\",\n" +
+ " \"password\": \"REDACTED\",\n" +
+ " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" +
+ " \"serviceName\": \"Overleaf\",\n" +
+ " \"oauth2\": {\n" +
+ " \"oauth2ClientID\": \"clientID\",\n" +
+ " \"oauth2ClientSecret\": \"oauth2 client secret\",\n" +
+ " \"oauth2Server\": \"https://www.overleaf.com\"\n" +
+ " }\n" +
+ "}\n");
+ Config config = new Config(reader);
+ assertEquals(80, config.getPort());
+ assertEquals("/var/wlgb/git", config.getRootGitDirectory());
+ assertEquals("http://127.0.0.1:60000/api/v0/", config.getAPIBaseURL());
+ assertEquals("REDACTED", config.getUsername());
+ assertEquals("REDACTED", config.getPassword());
+ assertEquals("http://127.0.0.1/", config.getPostbackURL());
+ assertEquals("Overleaf", config.getServiceName());
+ assertTrue(config.isUsingOauth2());
+ assertEquals("clientID", config.getOauth2().getOauth2ClientID());
+ assertEquals("oauth2 client secret", config.getOauth2().getOauth2ClientSecret());
+ assertEquals("https://www.overleaf.com", config.getOauth2().getOauth2Server());
+ }
+
+ @Test (expected = AssertionError.class)
+ public void testConstructWithoutOauth() {
+ Reader reader = new StringReader("{\n" +
+ " \"port\": 80,\n" +
+ " \"rootGitDirectory\": \"/var/wlgb/git\",\n" +
+ " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" +
+ " \"username\": \"REDACTED\",\n" +
+ " \"password\": \"REDACTED\",\n" +
+ " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" +
+ " \"serviceName\": \"Overleaf\",\n" +
+ " \"oauth2\": null\n" +
+ "}\n");
+ Config config = new Config(reader);
+ assertEquals(80, config.getPort());
+ assertEquals("/var/wlgb/git", config.getRootGitDirectory());
+ assertEquals("http://127.0.0.1:60000/api/v0/", config.getAPIBaseURL());
+ assertEquals("REDACTED", config.getUsername());
+ assertEquals("REDACTED", config.getPassword());
+ assertEquals("http://127.0.0.1/", config.getPostbackURL());
+ assertEquals("Overleaf", config.getServiceName());
+ assertFalse(config.isUsingOauth2());
+ config.getOauth2();
+ }
+
+}
\ No newline at end of file
diff --git a/services/git-bridge/writelatex-git-bridge.iml b/services/git-bridge/writelatex-git-bridge.iml
deleted file mode 100644
index 2b9d1d4a93..0000000000
--- a/services/git-bridge/writelatex-git-bridge.iml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file