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

allow injection of persistence methods

This commit is contained in:
Julien Funk
2017-01-12 16:41:26 -05:00
parent 53c55b13e7
commit 6f8486e0a2
4 changed files with 83 additions and 11 deletions

View File

@@ -2,13 +2,25 @@ from .persisters.filesystem import FilesystemPersister
from .serialize import serialize, deserialize
def load_cassette(cassette_path, serializer):
with open(cassette_path) as f:
cassette_content = f.read()
cassette = deserialize(cassette_content, serializer)
return cassette
def load_cassette(cassette_path, serializer, load_callback=None):
# Injected `load_callback` must return a cassette or raise IOError
if load_callback is None:
with open(cassette_path) as f:
cassette_content = f.read()
else:
cassette_content = load_callback(cassette_path)
cassette = deserialize(cassette_content, serializer)
return cassette
def save_cassette(cassette_path, cassette_dict, serializer):
def save_cassette(
cassette_path,
cassette_dict,
serializer,
save_callback=None
):
data = serialize(cassette_dict, serializer)
FilesystemPersister.write(cassette_path, data)
if save_callback is None:
FilesystemPersister.write(cassette_path, data)
else:
save_callback(cassette_path, data)