From 868cd3d1cb86cf1b657e16dd00aa66d3ceb7fc1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Je=CC=81re=CC=81my=20Bethmont?= Date: Fri, 24 Jun 2011 12:21:25 +0200 Subject: [PATCH] Implemented idna (fixes #76). --- requests/models.py | 6 +++++- test_requests.py | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/requests/models.py b/requests/models.py index f9a2f5ab..6f794e27 100644 --- a/requests/models.py +++ b/requests/models.py @@ -12,7 +12,7 @@ import socket import zlib from urllib2 import HTTPError -from urlparse import urlparse +from urlparse import urlparse, urlunparse from datetime import datetime from .config import settings @@ -238,6 +238,10 @@ class Request(object): def _build_url(self): """Build the actual URL to use""" + parsed_url = list(urlparse(self.url)) + parsed_url[1] = parsed_url[1].encode('idna') + self.url = urlunparse(parsed_url) + if self._enc_params: if urlparse(self.url).query: return '%s&%s' % (self.url, self._enc_params) diff --git a/test_requests.py b/test_requests.py index 848297e4..f2aded24 100755 --- a/test_requests.py +++ b/test_requests.py @@ -321,6 +321,9 @@ class RequestsTestSuite(unittest.TestCase): self.assertEquals(rbody.get('form'), None) self.assertEquals(rbody.get('data'), 'foobar') + def test_idna(self): + r = requests.get(u'http://➡.ws/httpbin') + self.assertEqual(r.url, HTTPBIN_URL) if __name__ == '__main__':