equal
deleted
inserted
replaced
28 def __init__(self, ui, path): |
28 def __init__(self, ui, path): |
29 self.path = path |
29 self.path = path |
30 self.caps = None |
30 self.caps = None |
31 self.handler = None |
31 self.handler = None |
32 self.urlopener = None |
32 self.urlopener = None |
|
33 self.requestbuilder = None |
33 u = util.url(path) |
34 u = util.url(path) |
34 if u.query or u.fragment: |
35 if u.query or u.fragment: |
35 raise util.Abort(_('unsupported URL component: "%s"') % |
36 raise util.Abort(_('unsupported URL component: "%s"') % |
36 (u.query or u.fragment)) |
37 (u.query or u.fragment)) |
37 |
38 |
40 |
41 |
41 self.ui = ui |
42 self.ui = ui |
42 self.ui.debug('using %s\n' % self._url) |
43 self.ui.debug('using %s\n' % self._url) |
43 |
44 |
44 self.urlopener = url.opener(ui, authinfo) |
45 self.urlopener = url.opener(ui, authinfo) |
|
46 self.requestbuilder = urllib2.Request |
45 |
47 |
46 def __del__(self): |
48 def __del__(self): |
47 if self.urlopener: |
49 if self.urlopener: |
48 for h in self.urlopener.handlers: |
50 for h in self.urlopener.handlers: |
49 h.close() |
51 h.close() |
109 headers['Vary'] = ','.join(varyheaders) |
111 headers['Vary'] = ','.join(varyheaders) |
110 else: |
112 else: |
111 q += sorted(args.items()) |
113 q += sorted(args.items()) |
112 qs = '?%s' % urllib.urlencode(q) |
114 qs = '?%s' % urllib.urlencode(q) |
113 cu = "%s%s" % (self._url, qs) |
115 cu = "%s%s" % (self._url, qs) |
114 req = urllib2.Request(cu, data, headers) |
116 req = self.requestbuilder(cu, data, headers) |
115 if data is not None: |
117 if data is not None: |
116 self.ui.debug("sending %s bytes\n" % size) |
118 self.ui.debug("sending %s bytes\n" % size) |
117 req.add_unredirected_header('Content-Length', '%d' % size) |
119 req.add_unredirected_header('Content-Length', '%d' % size) |
118 try: |
120 try: |
119 resp = self.urlopener.open(req) |
121 resp = self.urlopener.open(req) |