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