mirror of
https://github.com/TrianguloY/UrlChecker.git
synced 2024-09-19 20:02:16 +02:00
parent
e69c855925
commit
9ef77acc6a
@ -1,7 +1,7 @@
|
|||||||
package com.trianguloy.urlchecker.modules.list;
|
package com.trianguloy.urlchecker.modules.list;
|
||||||
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.util.Pair;
|
import android.net.UrlQuerySanitizer;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
@ -20,9 +20,7 @@ import com.trianguloy.urlchecker.utilities.Inflater;
|
|||||||
import com.trianguloy.urlchecker.utilities.JavaUtils;
|
import com.trianguloy.urlchecker.utilities.JavaUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This module shows all parts of the url decoded
|
* This module shows all parts of the url decoded
|
||||||
@ -76,6 +74,10 @@ class UriPartsDialog extends AModuleDialog {
|
|||||||
|
|
||||||
// parse
|
// parse
|
||||||
var uri = Uri.parse(urlData.url);
|
var uri = Uri.parse(urlData.url);
|
||||||
|
var urlQuerySanitizer = new UrlQuerySanitizer();
|
||||||
|
// the default parseUrl doesn't remove the fragment
|
||||||
|
urlQuerySanitizer.setAllowUnregisteredParamaters(true);
|
||||||
|
urlQuerySanitizer.parseQuery(uri.getQuery());
|
||||||
|
|
||||||
// domain elements
|
// domain elements
|
||||||
if (uri.getAuthority() != null || uri.getScheme() != null) {
|
if (uri.getAuthority() != null || uri.getScheme() != null) {
|
||||||
@ -102,19 +104,19 @@ class UriPartsDialog extends AModuleDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// queries
|
// query parameters
|
||||||
var queryParts = getQueryParts(uri);
|
var parameters = urlQuerySanitizer.getParameterList();
|
||||||
if (queryParts.size() > 0) {
|
if (parameters.size() > 0) {
|
||||||
var queries = addGroup("Queries", queryParts.size(), uri.buildUpon().query(null));
|
var queries = addGroup("Parameters", parameters.size(), uri.buildUpon().query(null));
|
||||||
for (var queryPart : queryParts) {
|
for (var i = 0; i < parameters.size(); i++) {
|
||||||
|
// generate same url but without this parameter
|
||||||
var builder = uri.buildUpon();
|
var builder = uri.buildUpon();
|
||||||
builder.query(null);
|
builder.query(null);
|
||||||
for (var newQuerypart : queryParts) {
|
for (var j = 0; j < parameters.size(); j++) {
|
||||||
if (!Objects.equals(newQuerypart, queryPart))
|
if (i != j) builder.appendQueryParameter(parameters.get(j).mParameter, parameters.get(j).mValue);
|
||||||
builder.appendQueryParameter(newQuerypart.first, newQuerypart.second);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
addPart(queryPart.first, queryPart.second, queries, builder);
|
// append the parameter
|
||||||
|
addPart(parameters.get(i).mParameter, parameters.get(i).mValue, queries, builder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,24 +194,6 @@ class UriPartsDialog extends AModuleDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the queries, in order (except for same-name ones)
|
|
||||||
*/
|
|
||||||
private static List<Pair<String, String>> getQueryParts(Uri uri) {
|
|
||||||
try {
|
|
||||||
var queries = new ArrayList<Pair<String, String>>();
|
|
||||||
for (var name : uri.getQueryParameterNames()) {
|
|
||||||
for (var value : uri.getQueryParameters(name)) {
|
|
||||||
if (name.isEmpty() && value.isEmpty()) continue; // skip fully empty entries
|
|
||||||
queries.add(Pair.create(name, value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return queries;
|
|
||||||
} catch (UnsupportedOperationException e) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OnLongClickListener to copy a part (textview text) to the clipboard
|
* OnLongClickListener to copy a part (textview text) to the clipboard
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user