tx-prompt: Fake UserAgent by default + allow to change UserAgent at runtime.
authorFrederic Jolliton <frederic@jolliton.com>
Wed, 7 Sep 2005 15:53:11 +0000 (15:53 +0000)
committerFrederic Jolliton <frederic@jolliton.com>
Wed, 7 Sep 2005 15:53:11 +0000 (15:53 +0000)
 * Default UserAgent (so that testing with Google and some other sites
   works.)

 * Allow to change UserAgent at runtime by updating $ua variable.
git-archimport-id: frederic@jolliton.com--2005-main/tx--main--0.1--patch-5

xpath_prompt.py

index 220d9a7..1ec9406 100755 (executable)
@@ -37,6 +37,8 @@ from xpathfn import *
 
 from xpath_misc import lispy
 
+g_defaultUserAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'
+
 def printInlineSequence( sequence ) :
 
        for item in sequence :
@@ -90,6 +92,14 @@ def readDoc( uri ) :
        txt = decodeDocument( txt )
        return htmltree.parse( txt )
 
+def resetUserAgent( env ) :
+
+       ua = env.get( 'ua' )
+       if len( ua ) == 1 :
+               ua = ua[ 0 ]
+               if isinstance( ua , basestring ) :
+                       urllib.URLopener.version = ua
+
 def extSerialize( context ) :
 
        return Sequence( context.item.serialize() )
@@ -182,6 +192,7 @@ def main() :
        env = {
                'current' : doc ,
                'version' : Sequence( 'TX' , '0.1' ) ,
+               'ua'      : Sequence( g_defaultUserAgent )
                }
 
        functions = {
@@ -204,6 +215,7 @@ def main() :
                if line.startswith( '#' ) or not line :
                        pass
                elif line.startswith( '\\' ) :
+                       resetUserAgent( env )
                        cmd = line[ 1 : ]
                        if cmd in modes :
                                mode = modes[ cmd ]
@@ -249,6 +261,7 @@ def main() :
                                varName , line = r.groups()
                        else :
                                varName = None
+                       resetUserAgent( env )
                        try :
                                dot = env[ 'current' ]
                                if isinstance( dot , Sequence ) :