Procházet zdrojové kódy

Add support for 'http.useragent'.

Jelmer Vernooij před 11 roky
rodič
revize
767ba0d0cc
2 změnil soubory, kde provedl 19 přidání a 4 odebrání
  1. 3 0
      NEWS
  2. 16 4
      dulwich/client.py

+ 3 - 0
NEWS

@@ -14,6 +14,9 @@
  * Support 'http.proxy' in HttpGitClient.
    (Jelmer Vernooij, #1096030)
 
+ * Support 'http.useragent' in HttpGitClient.
+   (Jelmer Vernooij)
+
  BUG FIXES
 
  * Support unseekable 'wsgi.input' streams.

+ 16 - 4
dulwich/client.py

@@ -39,6 +39,7 @@ Known capabilities that are not supported:
 __docformat__ = 'restructuredText'
 
 from cStringIO import StringIO
+import dulwich
 import select
 import socket
 import subprocess
@@ -892,7 +893,11 @@ class SSHGitClient(TraditionalGitClient):
                 con.can_read)
 
 
-def default_urllib2_handlers(config):
+def default_user_agent_string():
+    return "dulwich/%s" % ".".join([str(x) for x in dulwich.__version__])
+
+
+def default_urllib2_opener(config):
     if config is not None:
         proxy_server = config.get("http", "proxy")
     else:
@@ -900,7 +905,15 @@ def default_urllib2_handlers(config):
     handlers = []
     if proxy_server is not None:
         handlers.append(urllib2.ProxyHandler({"http" : proxy_server}))
-    return handlers
+    opener = urllib2.build_opener(*handlers)
+    if config is not None:
+        user_agent = config.get("http", "useragent")
+    else:
+        user_agent = None
+    if user_agent is None:
+        user_agent = default_user_agent_string()
+    opener.addheaders = [('User-agent', user_agent)]
+    return opener
 
 
 class HttpGitClient(GitClient):
@@ -909,8 +922,7 @@ class HttpGitClient(GitClient):
         self.base_url = base_url.rstrip("/") + "/"
         self.dumb = dumb
         if opener is None:
-            handlers = default_urllib2_handlers(config)
-            self.opener = urllib2.build_opener(*handlers)
+            self.opener = default_urllib2_opener(config)
         else:
             self.opener = opener
         GitClient.__init__(self, *args, **kwargs)