WebBrowser/Tools/Scripts.py

branch
QtWebEngine
changeset 4741
f9e1adc69076
parent 4733
ae291a307ea6
child 4743
f9e2e536d130
--- a/WebBrowser/Tools/Scripts.py	Sat Feb 13 14:17:39 2016 +0100
+++ b/WebBrowser/Tools/Scripts.py	Sun Feb 14 16:47:40 2016 +0100
@@ -14,6 +14,8 @@
 
 from __future__ import unicode_literals
 
+from PyQt5.QtCore import QUrlQuery, QUrl
+
 from .WebBrowserTools import readAllFileContents
 
 
@@ -176,5 +178,68 @@
                 });
             }
             return out;
-            })()"""
+        })()"""
+    return source
+
+
+def getOpenSearchLinks():
+    """
+    Function generating a script to extract all open search links.
+    
+    @return script to extract all open serach links
+    @rtype str
+    """
+    source = """
+        (function() {
+            var out = [];
+            var links = document.getElementsByTagName('link');
+            for (var i = 0; i < links.length; ++i) {
+                var e = links[i];
+                if (e.type == 'application/opensearchdescription+xml') {
+                    out.push({
+                        url: e.getAttribute('href'),
+                        title: e.getAttribute('title')
+                    });
+                }
+            }
+            return out;
+        })()"""
     return source
+
+
+def sendPostData(url, data):
+    """
+    Function generating a script to send Post data.
+    
+    @param url URL to send the data to
+    @type QUrl
+    @param data data to be sent
+    @type QByteArray
+    @return script to send Post data
+    @rtype str
+    """
+    source = """
+        (function() {{
+            var form = document.createElement('form');
+            form.setAttribute('method', 'POST');
+            form.setAttribute('action', '{0}');
+            var val;
+            {1}
+            form.submit();
+            }})()"""
+    
+    valueSource = """
+        val = document.createElement('input');
+        val.setAttribute('type', 'hidden');
+        val.setAttribute('name', '{0}');
+        val.setAttribute('value', '{1}');
+        form.appendChild(val);"""
+    
+    values = ""
+    query = QUrlQuery(data)
+    for name, value in query.queryItems(QUrl.FullyDecoded):
+        value = value.replace("'", "\\'")
+        name = name.replace("'", "\\'")
+        values += valueSource.format(name, value)
+    
+    return source.format(url.toString(), values)

eric ide

mercurial