mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 17:15:35 +00:00
make config options actually do stuff
This commit is contained in:
@@ -116,12 +116,12 @@ import vcr
|
|||||||
|
|
||||||
MySerializer(object):
|
MySerializer(object):
|
||||||
"""
|
"""
|
||||||
Must implement serialize() and deserialize() functions
|
Must implement serialize() and deserialize() classmethods
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
my_vcr = VCR()
|
my_vcr = VCR()
|
||||||
my_vcr.register_serializer(MySerializer)
|
my_vcr.register_serializer('my', MySerializer)
|
||||||
```
|
```
|
||||||
|
|
||||||
##Installation
|
##Installation
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class Cassette(object):
|
|||||||
new_cassette._load()
|
new_cassette._load()
|
||||||
return new_cassette
|
return new_cassette
|
||||||
|
|
||||||
def __init__(self, path, serializer="yaml"):
|
def __init__(self, path, serializer):
|
||||||
self._path = path
|
self._path = path
|
||||||
self._serializer = serializer
|
self._serializer = serializer
|
||||||
self.data = OrderedDict()
|
self.data = OrderedDict()
|
||||||
|
|||||||
@@ -1,9 +1,37 @@
|
|||||||
from .cassette import Cassette
|
from .cassette import Cassette
|
||||||
|
from .serializers.yamlserializer import YamlSerializer
|
||||||
|
from .serializers.jsonserializer import JSONSerializer
|
||||||
|
|
||||||
class VCR(object):
|
class VCR(object):
|
||||||
def __init__(self, serializer='yaml', cassette_library_dir=None):
|
def __init__(self, serializer='yaml', cassette_library_dir=None):
|
||||||
self.serializer = serializer
|
self.serializer = serializer
|
||||||
self.cassette_library_dir = cassette_library_dir
|
self.cassette_library_dir = cassette_library_dir
|
||||||
|
self.serializers = {
|
||||||
|
'yaml': YamlSerializer,
|
||||||
|
'json': JSONSerializer,
|
||||||
|
}
|
||||||
|
|
||||||
|
def _get_serializer(self, serializer_name):
|
||||||
|
try:
|
||||||
|
serializer = self.serializers[serializer_name]
|
||||||
|
except KeyError:
|
||||||
|
print "Serializer {0} doesn't exist or isn't registered".format(serializer_name)
|
||||||
|
raise KeyError
|
||||||
|
return serializer
|
||||||
|
|
||||||
def use_cassette(self, path, **kwargs):
|
def use_cassette(self, path, **kwargs):
|
||||||
return Cassette.load(path, **kwargs)
|
serializer_name = kwargs.get('serializer', self.serializer)
|
||||||
|
cassette_library_dir = kwargs.get('cassette_library_dir', self.cassette_library_dir)
|
||||||
|
|
||||||
|
if cassette_library_dir:
|
||||||
|
path = os.path.join(cassette_library_dir, path)
|
||||||
|
|
||||||
|
merged_config = {
|
||||||
|
"serializer": self._get_serializer(serializer_name),
|
||||||
|
}
|
||||||
|
|
||||||
|
return Cassette.load(path, **merged_config)
|
||||||
|
|
||||||
|
def register_serializer(self, name, serializer):
|
||||||
|
self.serializers[name] = serializer
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +1,8 @@
|
|||||||
from .persisters.filesystem import FilesystemPersister
|
from .persisters.filesystem import FilesystemPersister
|
||||||
from .serializers.yamlserializer import YamlSerializer
|
|
||||||
from .serializers.jsonserializer import JSONSerializer
|
|
||||||
|
|
||||||
def _get_serializer_cls(serializer):
|
|
||||||
serializer_cls = {
|
|
||||||
'yaml': YamlSerializer,
|
|
||||||
'json': JSONSerializer,
|
|
||||||
}.get(serializer)
|
|
||||||
if not serializer_cls:
|
|
||||||
raise ImportError('Invalid serializer %s' % serializer)
|
|
||||||
return serializer_cls
|
|
||||||
|
|
||||||
def load_cassette(cassette_path, serializer):
|
def load_cassette(cassette_path, serializer):
|
||||||
serializer_cls = _get_serializer_cls(serializer)
|
return serializer.load(cassette_path)
|
||||||
return serializer_cls.load(cassette_path)
|
|
||||||
|
|
||||||
def save_cassette(cassette_path, requests, responses, serializer):
|
def save_cassette(cassette_path, requests, responses, serializer):
|
||||||
serializer_cls = _get_serializer_cls(serializer)
|
data = serializer.dumps(requests, responses)
|
||||||
data = serializer_cls.dumps(requests, responses)
|
|
||||||
FilesystemPersister.write(cassette_path, data)
|
FilesystemPersister.write(cassette_path, data)
|
||||||
|
|||||||
Reference in New Issue
Block a user