Mholloway has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/278035

Change subject: Update login and account creation API tasks to work with new 
AuthManager
......................................................................

Update login and account creation API tasks to work with new AuthManager

This updates the app's API calls to work with changes to the API
associated with the launch of AuthManager.

Remove calls to the labs testing machine API before merging!

Bug: T124229
Change-Id: Idcb8c8c05a8fa8321ce7bc67d3b4bea6393419f8
---
M app/src/androidTest/java/org/wikipedia/test/LoginTaskTest.java
M app/src/main/java/org/wikipedia/createaccount/CreateAccountSuccessResult.java
M app/src/main/java/org/wikipedia/createaccount/CreateAccountTask.java
M app/src/main/java/org/wikipedia/editing/EditSectionActivity.java
M app/src/main/java/org/wikipedia/login/LoginActivity.java
M app/src/main/java/org/wikipedia/login/LoginTask.java
6 files changed, 49 insertions(+), 32 deletions(-)


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

diff --git a/app/src/androidTest/java/org/wikipedia/test/LoginTaskTest.java 
b/app/src/androidTest/java/org/wikipedia/test/LoginTaskTest.java
index 5e1033b..5a54427 100644
--- a/app/src/androidTest/java/org/wikipedia/test/LoginTaskTest.java
+++ b/app/src/androidTest/java/org/wikipedia/test/LoginTaskTest.java
@@ -20,7 +20,7 @@
 @RunWith(AndroidJUnit4.class)
 public class LoginTaskTest {
     private static final Site TEST_WIKI_SITE = new Site("test.wikipedia.org");
-    private static final String SUCCESS = "Success";
+    private static final String PASS = "PASS";
     private static final String USERNAME = getString(R.string.test_username);
     private static final String PASSWORD = getString(R.string.test_password);
 
@@ -42,7 +42,7 @@
         @Override
         public void onFinish(LoginResult result) {
             super.onFinish(result);
-            assertThat(result.getCode(), equalTo(SUCCESS));
+            assertThat(result.getCode(), equalTo(PASS));
             app.getEditTokenStorage().get(TEST_WIKI_SITE, callback);
         }
     };
diff --git 
a/app/src/main/java/org/wikipedia/createaccount/CreateAccountSuccessResult.java 
b/app/src/main/java/org/wikipedia/createaccount/CreateAccountSuccessResult.java
index 523e08e..5467b42 100644
--- 
a/app/src/main/java/org/wikipedia/createaccount/CreateAccountSuccessResult.java
+++ 
b/app/src/main/java/org/wikipedia/createaccount/CreateAccountSuccessResult.java
@@ -7,7 +7,7 @@
     private final String username;
 
     public CreateAccountSuccessResult(String username) {
-        super("Success");
+        super("PASS");
         this.username = username;
     }
 
diff --git 
a/app/src/main/java/org/wikipedia/createaccount/CreateAccountTask.java 
b/app/src/main/java/org/wikipedia/createaccount/CreateAccountTask.java
index 4203525..8c9d378 100644
--- a/app/src/main/java/org/wikipedia/createaccount/CreateAccountTask.java
+++ b/app/src/main/java/org/wikipedia/createaccount/CreateAccountTask.java
@@ -1,6 +1,7 @@
 package org.wikipedia.createaccount;
 
 import android.content.Context;
+
 import org.json.JSONObject;
 import org.mediawiki.api.json.Api;
 import org.mediawiki.api.json.ApiException;
@@ -9,6 +10,7 @@
 import org.wikipedia.ApiTask;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.editing.CaptchaResult;
+import org.wikipedia.util.log.L;
 
 public abstract class CreateAccountTask extends ApiTask<CreateAccountResult> {
     private final String username;
@@ -18,7 +20,9 @@
     private String token;
 
     public CreateAccountTask(Context context, String username, String 
password, String email) {
-        super(((WikipediaApp)context.getApplicationContext()).getSiteApi());
+        //TODO: remove AuthManager testing API before merging
+        super(new Api("authmanager.wmflabs.org"));
+        //super(((WikipediaApp)context.getApplicationContext()).getSiteApi());
 
         this.username = username;
         this.password = password;
@@ -27,14 +31,28 @@
 
     @Override
     public RequestBuilder buildRequest(Api api) {
+        JSONObject preReqResult;
+        try {
+            ApiResult preReq = api.action("query")
+                    .param("meta", "tokens")
+                    .param("type", "createaccount")
+                    .post();
+            preReqResult = preReq.asObject();
+            token = preReqResult.optJSONObject("query").optJSONObject("tokens")
+                    .optString("createaccounttoken");
+        } catch (ApiException e) {
+            L.e("Failed to fetch createaccount token");
+        }
+
         RequestBuilder builder = api.action("createaccount")
-                .param("name", username)
-                .param("password", password);
+                .param("username", username)
+                .param("password", password)
+                .param("createreturnurl", "http://www.example.com";);
         if (email != null) {
             builder.param("email", email);
         }
         if (token != null) {
-            builder.param("token", token);
+            builder.param("createtoken", token);
         }
         return builder;
     }
@@ -47,16 +65,11 @@
     @Override
     public CreateAccountResult processResult(ApiResult result) throws 
Throwable {
         JSONObject ca = result.asObject().optJSONObject("createaccount");
-        String apiResult = ca.optString("result");
+        String apiResult = ca.optString("status");
         switch (apiResult) {
-            case "NeedToken":
-                // We need to just repeat the request.
-                // Set token and restart the request
-                token = ca.optString("token");
-                return performTask();
             case "NeedCaptcha":
                 return new CreateAccountCaptchaResult(new 
CaptchaResult(ca.optJSONObject("captcha").optString("id")));
-            case "Success":
+            case "PASS":
                 return new 
CreateAccountSuccessResult(ca.optString("username"));
             default:
                 return new CreateAccountResult(apiResult);
diff --git a/app/src/main/java/org/wikipedia/editing/EditSectionActivity.java 
b/app/src/main/java/org/wikipedia/editing/EditSectionActivity.java
index 9bee9f8..1bda25d 100644
--- a/app/src/main/java/org/wikipedia/editing/EditSectionActivity.java
+++ b/app/src/main/java/org/wikipedia/editing/EditSectionActivity.java
@@ -384,7 +384,7 @@
             new LoginTask(app, app.getSite(), user.getUsername(), 
user.getPassword()) {
                 @Override
                 public void onFinish(LoginResult result) {
-                    if (result.getCode().equals("Success")) {
+                    if (result.getCode().equals("PASS")) {
                         doSave();
                     } else {
                         progressDialog.dismiss();
diff --git a/app/src/main/java/org/wikipedia/login/LoginActivity.java 
b/app/src/main/java/org/wikipedia/login/LoginActivity.java
index 7a496f1..1f4d637 100644
--- a/app/src/main/java/org/wikipedia/login/LoginActivity.java
+++ b/app/src/main/java/org/wikipedia/login/LoginActivity.java
@@ -202,7 +202,7 @@
                     return;
                 }
                 progressDialog.dismiss();
-                if (result.getCode().equals("Success")) {
+                if (result.getCode().equals("PASS")) {
                     funnel.logSuccess();
 
                     Bundle extras = getIntent().getExtras();
diff --git a/app/src/main/java/org/wikipedia/login/LoginTask.java 
b/app/src/main/java/org/wikipedia/login/LoginTask.java
index 9d7b0a4..433f082 100644
--- a/app/src/main/java/org/wikipedia/login/LoginTask.java
+++ b/app/src/main/java/org/wikipedia/login/LoginTask.java
@@ -7,6 +7,7 @@
 import org.wikipedia.Site;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.concurrency.SaneAsyncTask;
+import org.wikipedia.util.StringUtil;
 
 public class LoginTask extends SaneAsyncTask<LoginResult> {
     private final String username;
@@ -15,15 +16,17 @@
     private final WikipediaApp app;
 
     public LoginTask(Context context, Site site, String username, String 
password) {
-        app = (WikipediaApp)context.getApplicationContext();
-        api = app.getAPIForSite(site);
-        this.username = username;
+        app = (WikipediaApp) context.getApplicationContext();
+        //TODO: remove AuthManager testing API before merging
+        api = new Api("authmanager.wmflabs.org");
+        //api = app.getAPIForSite(site);
+        this.username = StringUtil.capitalizeFirstChar(username);
         this.password = password;
     }
 
     @Override
     public void onFinish(LoginResult result) {
-        if (result.getCode().equals("Success")) {
+        if (result.getCode().equals("PASS")) {
             // Clear the edit tokens - clears out any anon tokens we might 
have had
             app.getEditTokenStorage().clearAllTokens();
 
@@ -37,25 +40,26 @@
         // HACK: T124384
         app.getEditTokenStorage().clearAllTokens();
 
-        ApiResult preReq = api.action("login")
-                .param("lgname", username)
-                .param("lgpassword", password)
+        ApiResult preReq = api.action("query")
+                .param("meta", "tokens")
+                .param("type", "login")
                 .post();
         JSONObject preReqResult = preReq.asObject();
-        String token = preReqResult.optJSONObject("login").optString("token");
+        String token = 
preReqResult.optJSONObject("query").optJSONObject("tokens").optString("logintoken");
 
-        ApiResult req = api.action("login")
-                .param("lgname", username)
-                .param("lgpassword", password)
-                .param("lgtoken", token)
+        ApiResult req = api.action("clientlogin")
+                .param("username", username)
+                .param("password", password)
+                .param("logintoken", token)
+                .param("loginreturnurl", "http://www.example.com";)
                 .post();
 
-        JSONObject result = req.asObject().optJSONObject("login");
+        JSONObject result = req.asObject().optJSONObject("clientlogin");
 
         User user = null;
-        if (result.optString("result").equals("Success")) {
-            user = new User(result.optString("lgusername"), password, 
result.optInt("lguserid"));
+        if (result.optString("status").equals("PASS")) {
+            user = new User(result.optString("username"), password, 0);
         }
-        return new LoginResult(result.optString("result"), user);
+        return new LoginResult(result.optString("status"), user);
     }
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idcb8c8c05a8fa8321ce7bc67d3b4bea6393419f8
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>

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

Reply via email to