[Pkg-privacy-commits] [torbrowser-launcher] 69/476: use Twisted's web.client.Agent to download browser bundle

Ximin Luo infinity0 at moszumanska.debian.org
Sat Aug 22 13:21:24 UTC 2015


This is an automated email from the git hooks/post-receive script.

infinity0 pushed a commit to branch debian
in repository torbrowser-launcher.

commit 79b5dfc6f66aeb46ed2c0ed2889982da9af533af
Author: meejah <meejah at meejah.ca>
Date:   Thu Feb 21 17:27:09 2013 -0700

    use Twisted's web.client.Agent to download browser bundle
---
 torbrowser-launcher | 63 +++++++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 52 insertions(+), 11 deletions(-)

diff --git a/torbrowser-launcher b/torbrowser-launcher
index 616975a..2050f90 100755
--- a/torbrowser-launcher
+++ b/torbrowser-launcher
@@ -1,11 +1,20 @@
 #!/usr/bin/env python
 
-import os, sys, subprocess, locale, urllib2, gobject, time
+from twisted.internet import gtk2reactor
+gtk2reactor.install()
+from twisted.internet import reactor
 
 import pygtk
 pygtk.require('2.0')
 import gtk
 
+import os, sys, subprocess, locale, urllib2, gobject, time
+
+from twisted.web.client import Agent, ResponseDone
+from twisted.web.http_headers import Headers
+from twisted.internet.protocol import Protocol
+
+
 class TorBrowserLauncher:
   def __init__(self, current_tbb_version):
     # initialize the app
@@ -66,7 +75,8 @@ class TorBrowserLauncher:
 
     if launch_gui:
       self.build_ui()
-      gtk.main()
+      #gtk.main()
+      reactor.run()
   
   # discover the architecture and language
   def discover_arch_lang(self):
@@ -267,6 +277,41 @@ class TorBrowserLauncher:
       print 'Starting download over again'
       self.start_over()
 
+  def response_received(self, response):
+    class FileDownloader(Protocol):
+      def __init__(self, file, total, progress, done_cb):
+        self.file = file
+        self.total = total
+        self.so_far = 0
+        self.progress = progress
+        self.all_done = done_cb
+
+      def dataReceived(self, bytes):
+        self.file.write(bytes)
+        self.so_far += len(bytes)
+        percent = float(self.so_far) / float(self.total)
+        self.progress.set_fraction(percent)
+        self.progress.set_text('Downloaded %2.1f%%' % (percent * 100.0))
+
+      def connectionLost(self, reason):
+        print 'Finished receiving body:', reason.getErrorMessage()
+        self.all_done(reason)
+
+    dl = FileDownloader(self.file_download, response.length, self.progressbar, self.response_finished)
+    response.deliverBody(dl)
+
+
+  def response_finished(self, msg):
+    print dir(msg)
+    if msg.check(ResponseDone):
+      self.file_download.close()
+      # next task!
+      self.run_task()
+
+    else:
+      print "FINISHED", msg
+      ## FIXME handle errors
+
 
   def download(self, name, url, path):
     # initialize the progress bar
@@ -275,17 +320,13 @@ class TorBrowserLauncher:
     self.progressbar.show()
     self.refresh_gtk()
 
-    # start the download
-    self.dl_response = urllib2.urlopen(url)
-    self.dl_total_size = self.dl_response.info().getheader('Content-Length').strip()
-    self.dl_total_size = int(self.dl_total_size)
-    self.dl_bytes_so_far = 0
-
-    # set a timer to download more chunks
-    self.timer = gobject.timeout_add(1, self.download_chunk, name)
+    agent = Agent(reactor)
+    d = agent.request('GET', url,
+                      Headers({'User-Agent': ['torbrowser-launcher']}),
+                      None)
 
-    # open a file to write to
     self.file_download = open(path, 'w')
+    d.addCallback(self.response_received)
 
   def download_chunk(self, name):
     # download 10kb a time

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-privacy/packages/torbrowser-launcher.git



More information about the Pkg-privacy-commits mailing list