about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKotuklion <quemasterbog@gmail.com>2021-07-12 23:02:56 +0200
committerKotuklion <quemasterbog@gmail.com>2021-07-12 23:02:56 +0200
commit9d926716922a459131dab1b2f94f0794a702a08c (patch)
treeb08a6c0f0eff9b42c4bb518a8942d1c7b1a39a82
parentcheck host instead of the whole href for occurence of wikipedia.org (diff)
downloadlibredirect-9d926716922a459131dab1b2f94f0794a702a08c.zip
better GET processing
-rw-r--r--src/pages/background/background.js27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index e3727e7c..8feb5dfd 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -543,24 +543,41 @@ function redirectGoogleTranslate(url, initiator) {
 }
 
 function redirectWikipedia(url, initiator) {
+    console.log(url);
   if (disableWikipedia || isException(url, initiator)) {
     return null;
   }
+  let GETArguments = [];
+    if (url.search.length > 0) {
+      let search = url.search.substring(1); //get rid of '?'
+      let argstrings = search.split('&');
+      for (let i = 0; i < argstrings.length;i++) {
+	let args = argstrings[i].split('=');
+	GETArguments.push([args[0],args[1]]);
+      }
+    }
+    
   let link = `${wikipediaInstance}${url.pathname}`;
   let urlSplit = url.host.split('.');
   if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
     if (urlSplit[0] == 'm')
-      link += "?mobileaction=toggle_view_mobile";
+	GETArguments.push(["mobileaction","toggle_view_mobile"]);
     else
-      link += `?lang=${urlSplit[0]}`;
+      	GETArguments.push(["lang",urlSplit[0]]);
     if (urlSplit[1] == 'm')
-      link += "&mobileaction=toggle_view_mobile";
+      	GETArguments.push(["mobileaction","toggle_view_mobile"]);
       //wikiless doesn't have mobile view support yet
   }
+  for (let i = 0; i < GETArguments.length; i++) {
+    link += (i == 0 ? '?' : '&') + GETArguments[i][0] +
+      '=' + GETArguments[i][1];
+  }
   if (urlSplit[urlSplit.length - 1] == "org" &&
-      urlSplit[urlSplit.length - 2] == "wikipedia")
+      urlSplit[urlSplit.length - 2] == "wikipedia") 
     //just in case someone wanted to visit wikipedia.org.foo.bar.net
-    return link;
+    return link; 
+  else
+    return null;
 }
 
 browser.webRequest.onBeforeRequest.addListener(