mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 01:03:24 +00:00
make config options actually do stuff
This commit is contained in:
@@ -116,12 +116,12 @@ import vcr
|
||||
|
||||
MySerializer(object):
|
||||
"""
|
||||
Must implement serialize() and deserialize() functions
|
||||
Must implement serialize() and deserialize() classmethods
|
||||
"""
|
||||
pass
|
||||
|
||||
my_vcr = VCR()
|
||||
my_vcr.register_serializer(MySerializer)
|
||||
my_vcr.register_serializer('my', MySerializer)
|
||||
```
|
||||
|
||||
##Installation
|
||||
|
||||
@@ -21,7 +21,7 @@ class Cassette(object):
|
||||
new_cassette._load()
|
||||
return new_cassette
|
||||
|
||||
def __init__(self, path, serializer="yaml"):
|
||||
def __init__(self, path, serializer):
|
||||
self._path = path
|
||||
self._serializer = serializer
|
||||
self.data = OrderedDict()
|
||||
|
||||
@@ -1,9 +1,37 @@
|
||||
from .cassette import Cassette
|
||||
from .serializers.yamlserializer import YamlSerializer
|
||||
from .serializers.jsonserializer import JSONSerializer
|
||||
|
||||
class VCR(object):
|
||||
def __init__(self, serializer='yaml', cassette_library_dir=None):
|
||||
self.serializer = serializer
|
||||
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):
|
||||
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 .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):
|
||||
serializer_cls = _get_serializer_cls(serializer)
|
||||
return serializer_cls.load(cassette_path)
|
||||
|
||||
return serializer.load(cassette_path)
|
||||
|
||||
def save_cassette(cassette_path, requests, responses, serializer):
|
||||
serializer_cls = _get_serializer_cls(serializer)
|
||||
data = serializer_cls.dumps(requests, responses)
|
||||
data = serializer.dumps(requests, responses)
|
||||
FilesystemPersister.write(cassette_path, data)
|
||||
|
||||
Reference in New Issue
Block a user