1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-10 17:45:35 +00:00

initial commit

This commit is contained in:
kevin1024
2012-05-28 17:18:22 -10:00
committed by Kevin McCarthy
commit 431e385ded
9 changed files with 175 additions and 0 deletions

55
vcr/stubs.py Normal file
View File

@@ -0,0 +1,55 @@
from httplib import HTTPConnection
from .files import save_cassette, load_cassette
from .cassette import Cassette
class VCRHTTPResponse(object):
def __init__(self,recorded_response):
self.recorded_response = recorded_response
self.msg = recorded_response['status']['message']
self.reason = recorded_response['status']['message']
self.status = recorded_response['status']['code']
def read(self,chunked=False):
return self.recorded_response['body']['string']
def getheaders(self):
return self.recorded_response['headers']
class VCRHTTPConnection(HTTPConnection):
def __init__(self,*args,**kwargs):
self._cassette = Cassette()
HTTPConnection.__init__(self,*args,**kwargs)
def _save_cassette(self):
save_cassette(self._vcr_cassette_path,self._cassette)
def request(self,method,url,body=None,headers={}):
old_cassette = load_cassette(self._vcr_cassette_path)
if old_cassette:
return
self._cassette.requests.append(dict(
method = method,
url = url,
body = body,
headers = headers
))
return HTTPConnection.request(self,method,url,body=body,headers=headers)
def getresponse(self,buffering=False):
old_cassette = load_cassette(self._vcr_cassette_path)
if old_cassette:
return VCRHTTPResponse(old_cassette[0]['response'])
response = HTTPConnection.getresponse(self,buffering=buffering)
self._cassette.responses.append({
'status':{'code':response.status,'message':response.reason},
'headers':dict(response.getheaders()),
'body':{'string':response.read()},
})
self._save_cassette()
return response
class VCRHTTPSConnection(VCRHTTPConnection):
pass