Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/hg.py @ 752:c693eafd5967
Simplify content type checking
author | mpm@selenic.com |
---|---|
date | Thu, 21 Jul 2005 18:19:20 -0500 |
parents | 0b245edec124 |
children | 8760d0c83b9b |
comparison
equal
deleted
inserted
replaced
751:0b245edec124 | 752:c693eafd5967 |
---|---|
1741 self.ui.debug("sending %s command\n" % cmd) | 1741 self.ui.debug("sending %s command\n" % cmd) |
1742 q = {"cmd": cmd} | 1742 q = {"cmd": cmd} |
1743 q.update(args) | 1743 q.update(args) |
1744 qs = urllib.urlencode(q) | 1744 qs = urllib.urlencode(q) |
1745 cu = "%s?%s" % (self.url, qs) | 1745 cu = "%s?%s" % (self.url, qs) |
1746 return urllib2.urlopen(cu) | 1746 resp = urllib2.urlopen(cu) |
1747 | |
1748 if not resp.headers['content-type'].startswith('application/hg'): | |
1749 raise RepoError("'%s' does not appear to be an hg repository" | |
1750 % self.url) | |
1751 | |
1752 return resp | |
1747 | 1753 |
1748 def heads(self): | 1754 def heads(self): |
1749 d = self.do_cmd("heads").read() | 1755 d = self.do_cmd("heads").read() |
1750 try: | 1756 try: |
1751 return map(bin, d[:-1].split(" ")) | 1757 return map(bin, d[:-1].split(" ")) |
1752 except: | 1758 except: |
1753 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") | 1759 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") |
1754 raise | 1760 raise |
1755 | 1761 |
1756 def verify_hg_repo(self, resp): | |
1757 if (resp.headers['content-type'] == 'application/hg-0.1'): | |
1758 pass | |
1759 else: | |
1760 msg = """'%s' does not appear to be a valid hg repository - | |
1761 missing a 'Content-type: application/hg-0.1' HTTP header""" % (self.url,) | |
1762 raise RepoError(msg) | |
1763 | |
1764 def branches(self, nodes): | 1762 def branches(self, nodes): |
1765 n = " ".join(map(hex, nodes)) | 1763 n = " ".join(map(hex, nodes)) |
1766 resp = self.do_cmd("branches", nodes=n); | 1764 d = self.do_cmd("branches", nodes=n).read() |
1767 self.verify_hg_repo(resp); | |
1768 try: | 1765 try: |
1769 d = resp.read() | |
1770 br = [ tuple(map(bin, b.split(" "))) for b in d.splitlines() ] | 1766 br = [ tuple(map(bin, b.split(" "))) for b in d.splitlines() ] |
1771 return br | 1767 return br |
1772 except: | 1768 except: |
1773 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") | 1769 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") |
1774 raise | 1770 raise |
1775 | 1771 |
1776 def between(self, pairs): | 1772 def between(self, pairs): |
1777 n = "\n".join(["-".join(map(hex, p)) for p in pairs]) | 1773 n = "\n".join(["-".join(map(hex, p)) for p in pairs]) |
1778 resp = self.do_cmd("between", pairs=n) | 1774 d = self.do_cmd("between", pairs=n).read() |
1779 self.verify_hg_repo(resp) | |
1780 try: | 1775 try: |
1781 d = resp.read() | |
1782 p = [ l and map(bin, l.split(" ")) or [] for l in d.splitlines() ] | 1776 p = [ l and map(bin, l.split(" ")) or [] for l in d.splitlines() ] |
1783 return p | 1777 return p |
1784 except: | 1778 except: |
1785 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") | 1779 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") |
1786 raise | 1780 raise |
1787 | 1781 |
1788 def changegroup(self, nodes): | 1782 def changegroup(self, nodes): |
1789 n = " ".join(map(hex, nodes)) | 1783 n = " ".join(map(hex, nodes)) |
1790 resp = self.do_cmd("changegroup", roots=n) | 1784 f = self.do_cmd("changegroup", roots=n) |
1791 self.verify_hg_repo(resp) | |
1792 bytes = 0 | 1785 bytes = 0 |
1793 | 1786 |
1794 class zread: | 1787 class zread: |
1795 def __init__(self, f): | 1788 def __init__(self, f): |
1796 self.zd = zlib.decompressobj() | 1789 self.zd = zlib.decompressobj() |
1805 self.buf += self.zd.flush() | 1798 self.buf += self.zd.flush() |
1806 break | 1799 break |
1807 d, self.buf = self.buf[:l], self.buf[l:] | 1800 d, self.buf = self.buf[:l], self.buf[l:] |
1808 return d | 1801 return d |
1809 | 1802 |
1810 return zread(resp) | 1803 return zread(f) |
1811 | 1804 |
1812 class remotelock: | 1805 class remotelock: |
1813 def __init__(self, repo): | 1806 def __init__(self, repo): |
1814 self.repo = repo | 1807 self.repo = repo |
1815 def release(self): | 1808 def release(self): |