moved logic to Session object and added test case
authordaftshady <daftonshady@gmail.com>
Mon, 4 Nov 2013 13:32:17 +0000 (22:32 +0900)
committerdaftshady <daftonshady@gmail.com>
Mon, 4 Nov 2013 13:32:17 +0000 (22:32 +0900)
requests/api.py
requests/sessions.py
test_requests.py

index 33b7b2a..baf43dd 100644 (file)
@@ -12,7 +12,7 @@ This module implements the Requests API.
 """
 
 from . import sessions
-from .compat import builtin_str
+
 
 def request(method, url, **kwargs):
     """Constructs and sends a :class:`Request <Request>`.
@@ -41,7 +41,7 @@ def request(method, url, **kwargs):
     """
 
     session = sessions.Session()
-    return session.request(method=builtin_str(method), url=url, **kwargs)
+    return session.request(method=method, url=url, **kwargs)
 
 
 def get(url, **kwargs):
index cc72f65..175712f 100644 (file)
@@ -12,7 +12,7 @@ import os
 from collections import Mapping
 from datetime import datetime
 
-from .compat import cookielib, OrderedDict, urljoin, urlparse, urlunparse
+from .compat import cookielib, OrderedDict, urljoin, urlparse, urlunparse, builtin_str
 from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar
 from .models import Request, PreparedRequest
 from .hooks import default_hooks, dispatch_hook
@@ -309,6 +309,9 @@ class Session(SessionRedirectMixin):
         :param cert: (optional) if String, path to ssl client cert file (.pem).
             If Tuple, ('cert', 'key') pair.
         """
+
+        method = builtin_str(method)
+
         # Create the Request.
         req = Request(
             method = method.upper(),
index a593db3..754581e 100755 (executable)
@@ -433,6 +433,11 @@ class RequestsTestCase(unittest.TestCase):
         prep = r.prepare()
         assert b'name="stuff"' in prep.body
         assert b'name="b\'stuff\'"' not in prep.body
+    
+    def test_unicode_method_name(self):
+        files = {'file': open('test_requests.py', 'rb')}
+        r = requests.request(method=u'POST', url=httpbin('post'), files=files)
+        assert r.status_code == 200
 
     def test_custom_content_type(self):
         r = requests.post(httpbin('post'),