Brion VIBBER has submitted this change and it was merged.

Change subject: Support custom User-Agent.
......................................................................


Support custom User-Agent.

* This allows for API consumers to identify themselves.

Change-Id: Ib5f3a4041126c83e9d33011568fe8fdf410dcd3b
---
M src/main/java/org/mediawiki/api/json/Api.java
M src/test/java/org/mediawiki/api/json/ApiConstructionTest.java
M src/test/java/org/mediawiki/api/json/ApiTest.java
3 files changed, 41 insertions(+), 9 deletions(-)

Approvals:
  Yuvipanda: Looks good to me, but someone else must approve
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/src/main/java/org/mediawiki/api/json/Api.java 
b/src/main/java/org/mediawiki/api/json/Api.java
index 06f1362..ff89029 100644
--- a/src/main/java/org/mediawiki/api/json/Api.java
+++ b/src/main/java/org/mediawiki/api/json/Api.java
@@ -28,6 +28,11 @@
     private URL apiUrl;
 
     /**
+     * The custom User-Agent, if one is specified by the appropriate 
constructor.
+     */
+    private String userAgent;
+
+    /**
      * Create an Api class with the default endpoint path.
      *
      * Uses https by default (isSecure is true).
@@ -37,6 +42,22 @@
      */
     public Api(final String domain) {
         this(domain, true);
+    }
+
+    /**
+     * Create an Api class with the default endpoint path using custom 
User-Agent.
+     *
+     * Uses https by default (isSecure is true).
+     * Default endpoint path is /w/json.php.
+     *
+     * @param domain Domain name of the server with the wiki to connect to
+     * @param userAgent Custom User-Agent to simplify identification of 
consuming application
+     */
+    public Api(final String domain, final String userAgent) {
+        this(domain, true);
+        if (userAgent != null) {
+            this.userAgent = userAgent;
+        }
     }
 
     /**
@@ -111,9 +132,16 @@
         switch(method) {
             case METHOD_GET:
                 request = HttpRequest.get(getApiUrl().toString(), 
requestBuilder.getParams(), true);
+                if (this.userAgent != null) {
+                    request = request.header("User-Agent", this.userAgent);
+                }
                 break;
             case METHOD_POST:
-                request = 
HttpRequest.post(getApiUrl().toString()).form(requestBuilder.getParams());
+                request = HttpRequest.post(getApiUrl().toString());
+                if (this.userAgent != null) {
+                    request = request.header("User-Agent", this.userAgent);
+                }
+                request.form(requestBuilder.getParams());
                 break;
             default:
                 throw new IllegalArgumentException("Unkown argument passed for 
parameter method");
diff --git a/src/test/java/org/mediawiki/api/json/ApiConstructionTest.java 
b/src/test/java/org/mediawiki/api/json/ApiConstructionTest.java
index 6a6a434..9da5908 100644
--- a/src/test/java/org/mediawiki/api/json/ApiConstructionTest.java
+++ b/src/test/java/org/mediawiki/api/json/ApiConstructionTest.java
@@ -27,6 +27,10 @@
                 "https://test.wikipedia.org/api.php";
         );
         assertEquals(
+                new Api("test.wikipedia.org", 
"java-mwapi-UA").getApiUrl().toString(),
+                "https://test.wikipedia.org/w/api.php";
+        );
+        assertEquals(
                 new Api("test.wikipedia.org", false, 
"/api.php").getApiUrl().toString(),
                 "http://test.wikipedia.org/api.php";
         );
diff --git a/src/test/java/org/mediawiki/api/json/ApiTest.java 
b/src/test/java/org/mediawiki/api/json/ApiTest.java
index 89fbd72..2f9592d 100644
--- a/src/test/java/org/mediawiki/api/json/ApiTest.java
+++ b/src/test/java/org/mediawiki/api/json/ApiTest.java
@@ -17,7 +17,7 @@
 
     @Test
     public void testBasicPost() throws Exception {
-        Api api = new Api("test.wikipedia.org");
+        Api api = new Api("test.wikipedia.org", "java-mwapi-UA");
         // We're just checking if the POST goes through, so does not
         // matter which username password we use
         String testUsername = "doesntmatter";
@@ -33,7 +33,7 @@
 
     @Test
     public void testWrongMethod() throws Exception {
-        Api api = new Api("test.wikipedia.org");
+        Api api = new Api("test.wikipedia.org", "java-mwapi-UA");
         JSONObject resp = api.action("login")
                 .get().asObject();
 
@@ -42,7 +42,7 @@
 
     @Test
     public void testBasicGet() throws Exception {
-        Api api = new Api("test.wikipedia.org");
+        Api api = new Api("test.wikipedia.org", "java-mwapi-UA");
         String inputText = "Test String";
         String inputTitle = "Test Title";
         JSONObject resp = api.action("parse")
@@ -55,7 +55,7 @@
 
     @Test(expected = IllegalArgumentException.class)
     public void testInvalidMethod() throws Exception {
-        Api api = new Api("test.wikipedia.org");
+        Api api = new Api("test.wikipedia.org", "java-mwapi-UA");
         api.setupRequest(404, null);
     }
 
@@ -69,7 +69,7 @@
      */
     @Test
     public void testJSONException() {
-        Api api = new Api("test.wikipedia.org");
+        Api api = new Api("test.wikipedia.org", "java-mwapi-UA");
         try {
             api.action("somethingdoesnmtatter").param("format", 
"xml").get().asObject();
         } catch (ApiException e) {
@@ -88,7 +88,7 @@
      */
     @Test
     public void testNetworkException() {
-        Api api = new Api("blashblahblahdoesnotexist");
+        Api api = new Api("blashblahblahdoesnotexist", "java-mwapi-UA");
         try {
             api.action("somethingdoesnmtatter").param("format", 
"xml").get().asObject();
         } catch (ApiException e) {
@@ -107,7 +107,7 @@
      */
     @Test
     public void testGetHeaders() throws Exception {
-        Api api = new Api("test.wikipedia.org");
+        Api api = new Api("test.wikipedia.org", "java-mwapi-UA");
         String inputText = "Test String";
         String inputTitle = "Test Title";
         ApiResult result = api.action("parse")
@@ -128,7 +128,7 @@
     @Test(expected=NullPointerException.class)
     public void testGetHeadersOutOfOrder() throws Exception {
         boolean exceptionWasCaught = false;
-        Api api = new Api("test.wikipedia.org");
+        Api api = new Api("test.wikipedia.org", "java-mwapi-UA");
         String inputText = "Test String";
         String inputTitle = "Test Title";
         ApiResult result = api.action("parse")

-- 
To view, visit https://gerrit.wikimedia.org/r/118594
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib5f3a4041126c83e9d33011568fe8fdf410dcd3b
Gerrit-PatchSet: 2
Gerrit-Project: apps/android/java-mwapi
Gerrit-Branch: master
Gerrit-Owner: Dr0ptp4kt <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Yuvipanda <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to