Package restkit
[hide private]
[frames] | no frames]

Source Code for Package restkit

 1  # -*- coding: utf-8 - 
 2  # 
 3  # This file is part of restkit released under the MIT license.  
 4  # See the NOTICE for more information. 
 5   
 6   
 7   
 8  version_info = (2, 3, 0) 
 9  __version__ =  ".".join(map(str, version_info)) 
10   
11  try: 
12      from restkit.errors import ResourceNotFound, Unauthorized, RequestFailed,\ 
13  RedirectLimit, RequestError, InvalidUrl, ResponseError, ProxyError, ResourceError 
14      from restkit.client import HttpRequest, HttpResponse, MAX_FOLLOW_REDIRECTS 
15      from restkit.resource import Resource 
16      from restkit.conn import get_default_manager, set_default_manager_class 
17      from restkit.conn import TConnectionManager 
18      from restkit.filters import BasicAuth, SimpleProxy, OAuthFilter 
19  except ImportError: 
20      import traceback 
21      traceback.print_exc() 
22   
23  import urlparse 
24  import logging     
25   
26  LOG_LEVELS = { 
27      "critical": logging.CRITICAL, 
28      "error": logging.ERROR, 
29      "warning": logging.WARNING, 
30      "info": logging.INFO, 
31      "debug": logging.DEBUG 
32  } 
33   
34 -def set_logging(level, handler=None):
35 """ 36 Set level of logging, and choose where to display/save logs 37 (file or standard output). 38 """ 39 if not handler: 40 handler = logging.StreamHandler() 41 42 loglevel = LOG_LEVELS.get(level, logging.INFO) 43 logger = logging.getLogger('restkit') 44 logger.setLevel(loglevel) 45 format = r"%(asctime)s [%(process)d] [%(levelname)s] %(message)s" 46 datefmt = r"%Y-%m-%d %H:%M:%S" 47 48 handler.setFormatter(logging.Formatter(format, datefmt)) 49 logger.addHandler(handler)
50 51 from restkit.util.sock import _GLOBAL_DEFAULT_TIMEOUT 52
53 -def request(url, method='GET', body=None, headers=None, 54 timeout=_GLOBAL_DEFAULT_TIMEOUT, filters=None, follow_redirect=False, 55 force_follow_redirect=False, max_follow_redirect=MAX_FOLLOW_REDIRECTS, 56 decompress=True, pool_instance=None, response_class=None, **ssl_args):
57 """ Quick shortcut method to pass a request 58 59 :param url: str, url string 60 :param method: str, by default GET. http verbs 61 :param body: the body, could be a string, an iterator or a file-like object 62 :param headers: dict or list of tupple, http headers 63 :pool intance: instance inherited from `restkit.pool.PoolInterface`. 64 It allows you to share and reuse connections connections. 65 :param follow_redirect: boolean, by default is false. If true, 66 if the HTTP status is 301, 302 or 303 the client will follow 67 the location. 68 :param filters: list, list of http filters. see the doc of http filters 69 for more info 70 :param ssl_args: ssl arguments. See http://docs.python.org/library/ssl.html 71 for more information. 72 73 """ 74 # detect credentials from url 75 u = urlparse.urlparse(url) 76 if u.username is not None: 77 password = u.password or "" 78 filters = filters or [] 79 url = urlparse.urlunparse((u.scheme, u.netloc.split("@")[-1], 80 u.path, u.params, u.query, u.fragment)) 81 filters.append(BasicAuth(u.username, password)) 82 83 http_client = HttpRequest( 84 timeout=timeout, 85 filters=filters, 86 follow_redirect=follow_redirect, 87 force_follow_redirect=force_follow_redirect, 88 max_follow_redirect=max_follow_redirect, 89 decompress=decompress, 90 pool_instance=pool_instance, 91 response_class=response_class, 92 **ssl_args) 93 return http_client.request(url, method=method, body=body, 94 headers=headers)
95