forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			77 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import requests
 | |
| import sys
 | |
| 
 | |
| from .adapters import UnixAdapter
 | |
| 
 | |
| DEFAULT_SCHEME = 'http+unix://'
 | |
| 
 | |
| 
 | |
| class Session(requests.Session):
 | |
|     def __init__(self, url_scheme=DEFAULT_SCHEME, *args, **kwargs):
 | |
|         super(Session, self).__init__(*args, **kwargs)
 | |
|         self.mount(url_scheme, UnixAdapter())
 | |
| 
 | |
| 
 | |
| class monkeypatch(object):
 | |
|     def __init__(self, url_scheme=DEFAULT_SCHEME):
 | |
|         self.session = Session()
 | |
|         requests = self._get_global_requests_module()
 | |
| 
 | |
|         # Methods to replace
 | |
|         self.methods = ('request', 'get', 'head', 'post',
 | |
|                         'patch', 'put', 'delete', 'options')
 | |
|         # Store the original methods
 | |
|         self.orig_methods = dict(
 | |
|             (m, requests.__dict__[m]) for m in self.methods)
 | |
|         # Monkey patch
 | |
|         g = globals()
 | |
|         for m in self.methods:
 | |
|             requests.__dict__[m] = g[m]
 | |
| 
 | |
|     def _get_global_requests_module(self):
 | |
|         return sys.modules['requests']
 | |
| 
 | |
|     def __enter__(self):
 | |
|         return self
 | |
| 
 | |
|     def __exit__(self, *args):
 | |
|         requests = self._get_global_requests_module()
 | |
|         for m in self.methods:
 | |
|             requests.__dict__[m] = self.orig_methods[m]
 | |
| 
 | |
| 
 | |
| # These are the same methods defined for the global requests object
 | |
| def request(method, url, **kwargs):
 | |
|     session = Session()
 | |
|     return session.request(method=method, url=url, **kwargs)
 | |
| 
 | |
| 
 | |
| def get(url, **kwargs):
 | |
|     kwargs.setdefault('allow_redirects', True)
 | |
|     return request('get', url, **kwargs)
 | |
| 
 | |
| 
 | |
| def head(url, **kwargs):
 | |
|     kwargs.setdefault('allow_redirects', False)
 | |
|     return request('head', url, **kwargs)
 | |
| 
 | |
| 
 | |
| def post(url, data=None, json=None, **kwargs):
 | |
|     return request('post', url, data=data, json=json, **kwargs)
 | |
| 
 | |
| 
 | |
| def patch(url, data=None, **kwargs):
 | |
|     return request('patch', url, data=data, **kwargs)
 | |
| 
 | |
| 
 | |
| def put(url, data=None, **kwargs):
 | |
|     return request('put', url, data=data, **kwargs)
 | |
| 
 | |
| 
 | |
| def delete(url, **kwargs):
 | |
|     return request('delete', url, **kwargs)
 | |
| 
 | |
| 
 | |
| def options(url, **kwargs):
 | |
|     kwargs.setdefault('allow_redirects', True)
 | |
|     return request('options', url, **kwargs)
 | 
