Dbrant has submitted this change and it was merged.
Change subject: Drag some Wikipedia domain stuff into the Site class
......................................................................
Drag some Wikipedia domain stuff into the Site class
So it's (mostly) all in one place and changing some code to make it target a
LAN wiki is easy.
This means you basically just have to change 5 methods in the Site class to get
it to run on your
own wiki. (different API endpoint URL, no HTTPS, no external load.php, change
of domain in forLang
and isSupportedSite)
Doesn't touch EventLogging or MobileApp stuff
Relies on I4b54b236
Change-Id: I8ee046f5f5b25b81db4b5b039503e8ec1e11ceb0
---
M wikipedia/src/main/java/org/wikipedia/Site.java
M wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
M wikipedia/src/main/java/org/wikipedia/bridge/StyleFetcherTask.java
M wikipedia/src/main/java/org/wikipedia/editing/CaptchaResult.java
M wikipedia/src/main/java/org/wikipedia/migration/ArticleImporter.java
5 files changed, 28 insertions(+), 17 deletions(-)
Approvals:
Dbrant: Looks good to me, approved
diff --git a/wikipedia/src/main/java/org/wikipedia/Site.java
b/wikipedia/src/main/java/org/wikipedia/Site.java
index 007ae08..8d0214a 100644
--- a/wikipedia/src/main/java/org/wikipedia/Site.java
+++ b/wikipedia/src/main/java/org/wikipedia/Site.java
@@ -6,21 +6,38 @@
import android.text.TextUtils;
/**
- * Represents a particular Wikimedia project.
+ * Represents a particular wiki.
*/
public class Site implements Parcelable {
private final String domain;
+ private final String language;
public Site(String domain) {
+ this(domain, domain.split("\\.")[0]);
+ }
+ public Site(String domain, String language) {
this.domain = domain.replaceFirst("\\.m\\.", ".");
+ this.language = language;
+ }
+
+ public Site(Parcel in) {
+ this(in.readString());
+ }
+
+ public String getScriptPath(String script) {
+ return "/w/" + script;
+ }
+
+ public String getResourceLoaderPath() {
+ return "https://bits.wikimedia.org/" + language +
".wikipedia.org/load.php";
}
public String getApiDomain() {
return WikipediaApp.getInstance().getSslFallback() ? domain :
domain.replaceFirst("\\.", ".m.");
}
- public Site(Parcel in) {
- domain = in.readString();
+ public boolean getUseSecure() {
+ return true;
}
public String getDomain() {
@@ -69,8 +86,8 @@
+ '}';
}
- public String getFullUrl(String path) {
- return WikipediaApp.getInstance().getNetworkProtocol() + "://" +
getDomain() + path;
+ public String getFullUrl(String script) {
+ return WikipediaApp.getInstance().getNetworkProtocol() + "://" +
getDomain() + getScriptPath(script);
}
/**
@@ -98,16 +115,12 @@
return titleForInternalLink(path);
}
- private String language;
public String getLanguage() {
- if (language == null) {
- language = domain.split("\\.")[0];
- }
return language;
}
public static Site forLang(String lang) {
- return new Site(lang + ".wikipedia.org");
+ return new Site(lang + ".wikipedia.org", lang);
}
/**
diff --git a/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
b/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
index 047dbdd..9bd97d5 100644
--- a/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
+++ b/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
@@ -297,7 +297,7 @@
if (api == null) {
String domainAndApiAndVariantKey = site.getDomain() + "-" +
site.getApiDomain() + "-" + acceptLanguage;
if (!apis.containsKey(domainAndApiAndVariantKey)) {
- apis.put(domainAndApiAndVariantKey, new
Api(site.getApiDomain(), customHeaders));
+ apis.put(domainAndApiAndVariantKey, new
Api(site.getApiDomain(), site.getUseSecure(), site.getScriptPath("api.php"),
customHeaders));
}
api = apis.get(domainAndApiAndVariantKey);
}
@@ -314,7 +314,7 @@
*/
public Site getPrimarySite() {
if (primarySite == null) {
- primarySite = new Site(getPrimaryLanguage() + ".wikipedia.org");
+ primarySite = Site.forLang(getPrimaryLanguage());
}
return primarySite;
diff --git a/wikipedia/src/main/java/org/wikipedia/bridge/StyleFetcherTask.java
b/wikipedia/src/main/java/org/wikipedia/bridge/StyleFetcherTask.java
index a316e77..4e0ce18 100644
--- a/wikipedia/src/main/java/org/wikipedia/bridge/StyleFetcherTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/bridge/StyleFetcherTask.java
@@ -42,8 +42,7 @@
Site site = ((WikipediaApp)
getContext().getApplicationContext()).getPrimarySite();
try {
return String.format(
-
"https://bits.wikimedia.org/%s.wikipedia.org/load.php?debug=false&lang=en&modules=%s&only=styles&skin=vector",
- site.getLanguage(),
+ site.getResourceLoaderPath() +
"?debug=false&lang=en&modules=%s&only=styles&skin=vector",
URLEncoder.encode(modules, "utf-8")
);
} catch (UnsupportedEncodingException e) {
diff --git a/wikipedia/src/main/java/org/wikipedia/editing/CaptchaResult.java
b/wikipedia/src/main/java/org/wikipedia/editing/CaptchaResult.java
index b5abedc..2078104 100644
--- a/wikipedia/src/main/java/org/wikipedia/editing/CaptchaResult.java
+++ b/wikipedia/src/main/java/org/wikipedia/editing/CaptchaResult.java
@@ -23,7 +23,7 @@
}
public String getCaptchaUrl(Site site) {
- return
site.getFullUrl("/w/index.php?title=Special:Captcha/image&wpCaptchaId=" +
captchaId);
+ return site.getFullUrl("index.php") +
"?title=Special:Captcha/image&wpCaptchaId=" + captchaId;
}
@Override
diff --git
a/wikipedia/src/main/java/org/wikipedia/migration/ArticleImporter.java
b/wikipedia/src/main/java/org/wikipedia/migration/ArticleImporter.java
index e5a1659..a0b553a 100644
--- a/wikipedia/src/main/java/org/wikipedia/migration/ArticleImporter.java
+++ b/wikipedia/src/main/java/org/wikipedia/migration/ArticleImporter.java
@@ -31,7 +31,6 @@
}
private PageTitle titleForItem(JSONObject item) {
- Site site = new Site(item.optString("lang") + ".wikipedia.org");
- return new PageTitle(null, item.optString("title"), site);
+ return new PageTitle(null, item.optString("title"),
Site.forLang(item.optString("lang")));
}
}
--
To view, visit https://gerrit.wikimedia.org/r/164876
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I8ee046f5f5b25b81db4b5b039503e8ec1e11ceb0
Gerrit-PatchSet: 10
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>
Gerrit-Reviewer: Alex Monk <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits