Yashasvi has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/361294 )

Change subject: Remove dependency on apps-android-java-mwapi library
......................................................................

Remove dependency on apps-android-java-mwapi library

Bug: T141127
Change-Id: Id8dde4eb22aa408e643a9b622dba654ffc5319f1
---
M app/build.gradle
M app/src/main/java/org/wikipedia/WikipediaApp.java
M app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
M 
app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
M app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
M app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
M app/src/main/java/org/wikipedia/util/ThrowableUtil.java
M app/src/main/java/org/wikipedia/views/WikiErrorView.java
D app/src/test/java/org/wikipedia/test/TestApi.java
M settings.gradle
10 files changed, 8 insertions(+), 163 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/94/361294/1

diff --git a/app/build.gradle b/app/build.gradle
index 988d08a..7f92afc 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -156,7 +156,6 @@
 }
 
 dependencies {
-    compileSubprojectOrModule ':java-mwapi:json', 
'org.mediawiki.api:json:1.3.5', 'org.json', 'json'
 
     // To keep the Maven Central dependencies up-to-date
     // use http://gradleplease.appspot.com/ or http://search.maven.org/.
diff --git a/app/src/main/java/org/wikipedia/WikipediaApp.java 
b/app/src/main/java/org/wikipedia/WikipediaApp.java
index 886d362..a108781 100644
--- a/app/src/main/java/org/wikipedia/WikipediaApp.java
+++ b/app/src/main/java/org/wikipedia/WikipediaApp.java
@@ -19,7 +19,6 @@
 import com.squareup.leakcanary.RefWatcher;
 import com.squareup.otto.Bus;
 
-import org.mediawiki.api.json.Api;
 import org.wikipedia.analytics.FunnelManager;
 import org.wikipedia.analytics.SessionFunnel;
 import org.wikipedia.auth.AccountUtil;
@@ -87,7 +86,6 @@
 
     private final RemoteConfig remoteConfig = new RemoteConfig();
     private final Map<Class<?>, DatabaseClient<?>> databaseClients = 
Collections.synchronizedMap(new HashMap<Class<?>, DatabaseClient<?>>());
-    private final Map<String, Api> apis = new HashMap<>();
     private AppLanguageState appLanguageState;
     private FunnelManager funnelManager;
     private SessionFunnel sessionFunnel;
@@ -161,8 +159,6 @@
 
         enableWebViewDebugging();
 
-        Api.setConnectionFactory(new OkHttpConnectionFactory());
-
         ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
                 .setNetworkFetcher(new 
CacheableOkHttpNetworkFetcher(OkHttpConnectionFactory.getClient()))
                 .build();
@@ -212,23 +208,6 @@
                 appLanguageState.getSystemLanguageCode());
     }
 
-    public Api getAPIForSite(WikiSite wiki) {
-        String host = wiki.host();
-        String acceptLanguage = getAcceptLanguage(wiki);
-        Map<String, String> customHeaders = 
buildCustomHeadersMap(acceptLanguage);
-        Api api;
-
-        String cachedApiKey = host + "-" + acceptLanguage;
-        if (apis.containsKey(cachedApiKey)) {
-            api = apis.get(cachedApiKey);
-        } else {
-            api = new Api(host, wiki.port(), wiki.secureScheme(),
-                    wiki.path("api.php"), customHeaders);
-            apis.put(cachedApiKey, api);
-        }
-        return api;
-    }
-
     /**
      * Default wiki for the app
      * You should use PageTitle.getWikiSite() to get the article wiki
@@ -240,15 +219,6 @@
             wiki = WikiSite.forLanguageCode(lang);
         }
         return wiki;
-    }
-
-    /**
-     * Convenience method to get an API object for the app wiki.
-     *
-     * @return An API object that is equivalent to calling 
getAPIForSite(WikiSite)
-     */
-    public Api getSiteApi() {
-        return getAPIForSite(getWikiSite());
     }
 
     @Nullable
@@ -514,25 +484,6 @@
 
     public void listenForNotifications() {
         notificationReceiver.startPollTask(this);
-    }
-
-    // For java-mwapi API requests.
-    // If adding a new header here (before this method is removed), make sure 
to duplicate it
-    // in the Retrofit header list 
(OkHttpConnectionFactory#CommonHeaderInterceptor).
-    @Deprecated
-    private Map<String, String> buildCustomHeadersMap(String acceptLanguage) {
-        Map<String, String> headers = new HashMap<>();
-        headers.put("User-Agent", getUserAgent());
-
-        if (isEventLoggingEnabled()) {
-            headers.put("X-WMF-UUID", getAppInstallID());
-        } else {
-            // Send do-not-track header if the user has opted out of event 
logging
-            headers.put("DNT", "1");
-        }
-
-        headers.put("Accept-Language", acceptLanguage);
-        return headers;
     }
 
     private void initAppLang() {
diff --git a/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java 
b/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
index 03fcb26..5587857 100644
--- a/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
+++ b/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.java
@@ -18,7 +18,6 @@
 import com.facebook.drawee.view.SimpleDraweeView;
 import com.facebook.imagepipeline.image.ImageInfo;
 
-import org.mediawiki.api.json.RequestBuilder;
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.dataclient.WikiSite;
@@ -182,14 +181,4 @@
         hideCaptcha();
         return true;
     }
-
-    public RequestBuilder populateBuilder(RequestBuilder builder) {
-        if (captchaResult == null) {
-            return builder;
-        }
-
-        return builder.param("captchaId", captchaResult.getCaptchaId())
-                      .param("captchaWord", captchaText.getText().toString());
-    }
-
 }
diff --git 
a/app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
 
b/app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
index 1b43557..a1befcb 100644
--- 
a/app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
+++ 
b/app/src/main/java/org/wikipedia/dataclient/okhttp/CommonHeaderRequestInterceptor.java
@@ -8,9 +8,6 @@
 import okhttp3.Request;
 import okhttp3.Response;
 
-// If adding a new header here, make sure to duplicate it in the MWAPI header 
builder
-// (WikipediaApp.buildCustomHeadersMap()).
-// TODO: remove above comment once buildCustomHeadersMap() is removed.
 class CommonHeaderRequestInterceptor implements Interceptor {
     @Override public Response intercept(Chain chain) throws IOException {
         WikipediaApp app = WikipediaApp.getInstance();
diff --git 
a/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
 
b/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
index 1a19fa5..421b7aa 100644
--- 
a/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
+++ 
b/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpConnectionFactory.java
@@ -3,29 +3,22 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.VisibleForTesting;
 
-import com.github.kevinsawicki.http.HttpRequest;
-
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.dataclient.SharedPreferenceCookieManager;
 import org.wikipedia.settings.Prefs;
 import org.wikipedia.settings.RbSwitch;
 
 import java.io.File;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.Proxy;
-import java.net.URL;
 
 import okhttp3.Cache;
 import okhttp3.CacheDelegate;
 import okhttp3.CookieJar;
 import okhttp3.JavaNetCookieJar;
 import okhttp3.OkHttpClient;
-import okhttp3.OkUrlFactory;
 import okhttp3.internal.cache.CacheDelegateInterceptor;
 import okhttp3.logging.HttpLoggingInterceptor;
 
-public class OkHttpConnectionFactory implements HttpRequest.ConnectionFactory {
+public class OkHttpConnectionFactory {
     private static final String CACHE_DIR_NAME = "okhttp-cache";
     private static final long NET_CACHE_SIZE = 64 * 1024 * 1024;
     @VisibleForTesting @NonNull public static final Cache NET_CACHE = new 
Cache(new File(WikipediaApp.getInstance().getCacheDir(),
@@ -38,17 +31,6 @@
 
     @NonNull public static OkHttpClient getClient() {
         return CLIENT;
-    }
-
-    @Override
-    public HttpURLConnection create(URL url) throws IOException {
-        return new OkUrlFactory(getClient()).open(url); // TODO: update to 
newer API
-    }
-
-    @Override
-    public HttpURLConnection create(URL url, Proxy proxy) throws IOException {
-        throw new UnsupportedOperationException(
-                "Per-connection proxy is not supported. Use OkHttpClient's 
setProxy instead.");
     }
 
     @NonNull
diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java 
b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
index e51ce4a..12cab7b 100644
--- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
@@ -15,14 +15,15 @@
 
 import org.json.JSONException;
 import org.json.JSONObject;
-import org.mediawiki.api.json.ApiException;
 import org.wikipedia.Constants;
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.bridge.CommunicationBridge;
 import org.wikipedia.database.contract.PageImageHistoryContract;
 import org.wikipedia.dataclient.ServiceError;
+import org.wikipedia.dataclient.mwapi.MwException;
 import org.wikipedia.dataclient.mwapi.MwQueryResponse;
+import org.wikipedia.dataclient.mwapi.MwServiceError;
 import org.wikipedia.dataclient.page.PageClient;
 import org.wikipedia.dataclient.page.PageClientFactory;
 import org.wikipedia.dataclient.page.PageLead;
@@ -46,6 +47,7 @@
 import org.wikipedia.views.ObservableWebView;
 import org.wikipedia.views.SwipeRefreshLayoutWithScroll;
 
+import java.io.IOException;
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -548,12 +550,9 @@
         if (pageLead.hasError()) {
             ServiceError error = pageLead.getError();
             if (error != null) {
-                ApiException apiException = new ApiException(error.getTitle(), 
error.getDetails());
-                commonSectionFetchOnCatch(apiException, startSequenceNum);
+                commonSectionFetchOnCatch(new MwException((MwServiceError) 
error), startSequenceNum);
             } else {
-                ApiException apiException
-                        = new ApiException("unknown", "unexpected pageLead 
response");
-                commonSectionFetchOnCatch(apiException, startSequenceNum);
+                commonSectionFetchOnCatch(new IOException("An unknown error 
occurred."), startSequenceNum);
             }
             return;
         }
diff --git a/app/src/main/java/org/wikipedia/util/ThrowableUtil.java 
b/app/src/main/java/org/wikipedia/util/ThrowableUtil.java
index e01ec1a..e78cb01 100644
--- a/app/src/main/java/org/wikipedia/util/ThrowableUtil.java
+++ b/app/src/main/java/org/wikipedia/util/ThrowableUtil.java
@@ -4,10 +4,7 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 
-import com.github.kevinsawicki.http.HttpRequest;
-
 import org.json.JSONException;
-import org.mediawiki.api.json.ApiException;
 import org.wikipedia.R;
 import org.wikipedia.createaccount.CreateAccountException;
 import org.wikipedia.dataclient.mwapi.MwException;
@@ -58,11 +55,7 @@
         Throwable inner = ThrowableUtil.getInnermostThrowable(e);
         AppError result;
         // look at what kind of exception it is...
-        if (inner instanceof ApiException) {
-            // it's a well-formed error response from the server!
-            result = new AppError(getApiError(context, (ApiException) inner),
-                                  getApiErrorMessage(context, (ApiException) 
inner));
-        } else if (isNetworkError(e)) {
+        if (isNetworkError(e)) {
             result = new 
AppError(context.getString(R.string.error_network_error),
                     context.getString(R.string.format_error_server_message,
                             inner.getLocalizedMessage()));
@@ -94,39 +87,10 @@
     }
 
     private static boolean isNetworkError(@NonNull Throwable e) {
-        return ThrowableUtil.throwableContainsException(e, 
HttpRequest.HttpRequestException.class)
-                || ThrowableUtil.throwableContainsException(e, 
HttpStatusException.class)
+        return ThrowableUtil.throwableContainsException(e, 
HttpStatusException.class)
                 || ThrowableUtil.throwableContainsException(e, 
UnknownHostException.class)
                 || ThrowableUtil.throwableContainsException(e, 
TimeoutException.class)
                 || ThrowableUtil.throwableContainsException(e, 
SSLException.class);
-    }
-
-    @NonNull @Deprecated
-    private static String getApiError(@NonNull Context context, @NonNull 
ApiException e) {
-        String text;
-        if ("missingtitle".equals(e.getCode()) || 
"invalidtitle".equals(e.getCode())) {
-            text = 
context.getResources().getString(R.string.page_does_not_exist_error);
-        } else {
-            text = context.getString(R.string.error_server_response);
-        }
-        return text;
-    }
-
-    // TODO: migrate this to ApiException.toString()
-    @NonNull @Deprecated
-    private static String getApiErrorMessage(@NonNull Context c, @NonNull 
ApiException e) {
-        String text;
-        if (e.getInfo() != null) {
-            // if we have an actual message from the server, then prefer it
-            text = c.getString(R.string.format_error_server_message, 
e.getInfo());
-        } else if (e.getCode() != null) {
-            // otherwise, just show the error code
-            text = c.getString(R.string.format_error_server_code, e.getCode());
-        } else {
-            // if all else fails, show the message of the exception
-            text = e.getMessage();
-        }
-        return text;
     }
 
     @Deprecated public static class AppError {
diff --git a/app/src/main/java/org/wikipedia/views/WikiErrorView.java 
b/app/src/main/java/org/wikipedia/views/WikiErrorView.java
index 7d35c00..a52ba93 100644
--- a/app/src/main/java/org/wikipedia/views/WikiErrorView.java
+++ b/app/src/main/java/org/wikipedia/views/WikiErrorView.java
@@ -13,7 +13,6 @@
 import android.widget.Space;
 import android.widget.TextView;
 
-import org.mediawiki.api.json.ApiException;
 import org.wikipedia.R;
 
 import butterknife.BindView;
@@ -76,13 +75,6 @@
     }
 
     ErrorType getErrorType(@Nullable Throwable caught) {
-        // apps-android-java-mwapi wraps all exceptions in an ApiException.  
Strip it so we get
-        // useful information about the underlying cause.
-        // TODO: update when the apps-android-java-mwapi dependency is dropped 
(T141127)
-        if (caught instanceof ApiException) {
-            caught = caught.getCause();
-        }
-
         if (caught != null && is404(caught)) {
             return ErrorType.PAGE_MISSING;
         }
diff --git a/app/src/test/java/org/wikipedia/test/TestApi.java 
b/app/src/test/java/org/wikipedia/test/TestApi.java
deleted file mode 100644
index 0038ef9..0000000
--- a/app/src/test/java/org/wikipedia/test/TestApi.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.wikipedia.test;
-
-import android.support.annotation.NonNull;
-
-import org.mediawiki.api.json.Api;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-public class TestApi extends Api {
-    @NonNull
-    private final TestWebServer server;
-
-    public TestApi(@NonNull TestWebServer server) {
-        super("domain");
-        this.server =  server;
-    }
-
-    @Override
-    public URL getApiUrl() {
-        try {
-            return new URL(server.getUrl("/"));
-        } catch (MalformedURLException e) {
-            throw new RuntimeException(e);
-        }
-    }
-}
diff --git a/settings.gradle b/settings.gradle
index d5d62df..12e495c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -20,4 +20,3 @@
 }
 
 include ':app'
-includeExists ':java-mwapi:lib', 'json'

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id8dde4eb22aa408e643a9b622dba654ffc5319f1
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yashasvi <yash.gird...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to