some tests

This commit is contained in:
Thomas 2021-01-24 16:05:51 +01:00
parent bb2cfad48c
commit 3f8142ee5a
3 changed files with 86 additions and 22 deletions

View File

@ -259,9 +259,14 @@ public class LoginActivity extends BaseActivity {
connect_button.setEnabled(true);
if (instanceNodeInfo != null && instanceNodeInfo.getName() != null) {
socialNetwork = Helper.setSoftware(instanceNodeInfo.getName(), false);
if (instanceNodeInfo.getName().equals("PLEROMA") || instanceNodeInfo.getName().equals("MASTODON") || instanceNodeInfo.getName().equals("PIXELFED")) {
if (instanceNodeInfo.getName().equals("PLEROMA") || instanceNodeInfo.getName().equals("MASTODON")) {
client_id_for_webview = true;
retrievesClientId();
} else if (instanceNodeInfo.getName().equals("PIXELFED")) {
Intent i = new Intent(LoginActivity.this, WebviewConnectActivity.class);
i.putExtra("social", socialNetwork);
i.putExtra("instance", instance);
startActivity(i);
} else {
client_id_for_webview = false;
if (instanceNodeInfo.getName().equals("PEERTUBE")) {

View File

@ -23,12 +23,17 @@ import android.content.SharedPreferences;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
@ -45,6 +50,8 @@ import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import app.fedilab.android.R;
import app.fedilab.android.asynctasks.UpdateAccountInfoAsyncTask;
@ -65,6 +72,7 @@ public class WebviewConnectActivity extends BaseActivity {
private String clientId, clientSecret;
private String instance;
private UpdateAccountInfoAsyncTask.SOCIAL social;
private String pixelfedToken;
@SuppressWarnings("deprecation")
public static void clearCookies(Context context) {
@ -99,6 +107,7 @@ public class WebviewConnectActivity extends BaseActivity {
setTheme(R.style.AppThemeDark);
}
pixelfedToken = null;
setContentView(R.layout.activity_webview_connect);
Bundle b = getIntent().getExtras();
if (b != null) {
@ -152,9 +161,45 @@ public class WebviewConnectActivity extends BaseActivity {
finish();
}
webView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (request.getUrl().toString().contains("accounts/verify_credentials")) {
Log.v(Helper.TAG, "-> " + request.getUrl());
Map<String, String> requestHeaders = request.getRequestHeaders();
Iterator<Map.Entry<String, String>> it = requestHeaders.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> pair = it.next();
Log.v(Helper.TAG, "pair.getKey() -> " + pair.getKey());
if (pair.getKey().compareTo("X-XSRF-TOKEN") == 0) {
new Handler(Looper.getMainLooper()).post(() -> {
pixelfedToken = pair.getValue();
Log.v(Helper.TAG, "pixelfedToken -> " + pixelfedToken);
view.stopLoading();
SharedPreferences sharedpreferences1 = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences1.edit();
String token = "X-XSRF-TOKEN: " + pixelfedToken;
editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token);
editor.commit();
view.setVisibility(View.GONE);
//Update the account with the token;
new UpdateAccountInfoAsyncTask(WebviewConnectActivity.this, token, clientId, clientSecret, null, instance, social);
finish();
});
}
it.remove();
}
}
return super.shouldInterceptRequest(view, request);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
super.shouldOverrideUrlLoading(view, url);
Log.v(Helper.TAG, "pixelfedToken: " + pixelfedToken);
if (url.contains(Helper.REDIRECT_CONTENT_WEB)) {
String[] val = url.split("code=");
if (val.length < 2) {
@ -199,7 +244,11 @@ public class WebviewConnectActivity extends BaseActivity {
}
});
webView.loadUrl(LoginActivity.redirectUserToAuthorizeAndLogin(WebviewConnectActivity.this, clientId, instance));
if (social == UpdateAccountInfoAsyncTask.SOCIAL.PIXELFED) {
webView.loadUrl("https://" + instance + "/login");
} else {
webView.loadUrl(LoginActivity.redirectUserToAuthorizeAndLogin(WebviewConnectActivity.this, clientId, instance));
}
}

View File

@ -128,6 +128,28 @@ public class HttpsConnection {
}
private void setToken(String token) {
if (token != null) {
if (token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", token);
else if (token.startsWith("X-XSRF-TOKEN"))
httpURLConnection.setRequestProperty("Authorization", token);
else
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
}
}
private String getToken(String token) {
if (token != null) {
if (token.startsWith("Basic "))
return token;
else if (token.startsWith("X-XSRF-TOKEN"))
return token;
else
return "Bearer " + token;
} else return null;
}
/**
* Get calls
*
@ -180,10 +202,7 @@ public class HttpsConnection {
if (httpURLConnection instanceof HttpsURLConnection) {
((HttpsURLConnection) httpURLConnection).setSSLSocketFactory(new TLSSocketFactory(this.instance));
}
if (token != null && !token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
else if (token != null && token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", token);
setToken(token);
httpURLConnection.setRequestMethod("GET");
String response;
if (httpURLConnection.getResponseCode() >= 200 && httpURLConnection.getResponseCode() < 400) {
@ -347,10 +366,7 @@ public class HttpsConnection {
((HttpsURLConnection) httpURLConnection).setSSLSocketFactory(new TLSSocketFactory(this.instance));
}
httpURLConnection.setRequestMethod("POST");
if (token != null && !token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
else if (token != null && token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", token);
setToken(token);
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
@ -406,10 +422,7 @@ public class HttpsConnection {
httpURLConnection.setRequestProperty("Content-Type", "application/json");
httpURLConnection.setRequestProperty("Accept", "application/json");
httpURLConnection.setRequestMethod("POST");
if (token != null && !token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
else if (token != null && token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", token);
setToken(token);
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
@ -463,10 +476,7 @@ public class HttpsConnection {
((HttpsURLConnection) httpURLConnection).setSSLSocketFactory(new TLSSocketFactory(this.instance));
}
httpURLConnection.setRequestMethod("POST");
if (token != null && !token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
else if (token != null && token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", token);
setToken(token);
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
@ -643,7 +653,7 @@ public class HttpsConnection {
m.addFileToUpload(file.getPath(), "header");
}
m.addParameter("name", filename)
.addHeader("Authorization", "Bearer " + token)
.addHeader("Authorization", getToken(token))
.setNotificationConfig(uploadConfig)
.setDelegate(new UploadStatusDelegate() {
@Override
@ -709,7 +719,7 @@ public class HttpsConnection {
}
httpURLConnection.setRequestMethod("PATCH");
if (token != null && !token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
httpURLConnection.setRequestProperty("Authorization", getToken(token));
else if (token != null && token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", token);
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
@ -790,7 +800,7 @@ public class HttpsConnection {
((HttpsURLConnection) httpURLConnection).setSSLSocketFactory(new TLSSocketFactory(this.instance));
}
if (token != null && !token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
httpURLConnection.setRequestProperty("Authorization", getToken(token));
else if (token != null && token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", token);
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
@ -863,7 +873,7 @@ public class HttpsConnection {
((HttpsURLConnection) httpURLConnection).setSSLSocketFactory(new TLSSocketFactory(this.instance));
}
if (token != null && !token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
httpURLConnection.setRequestProperty("Authorization", getToken(token));
else if (token != null && token.startsWith("Basic "))
httpURLConnection.setRequestProperty("Authorization", token);
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");