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

Make Serializers Dumber

Let's have the serializer just worry about serializing the dict
that we hand it, and move the unicode stuff up to a serialize module.

This should hopefully let us move toward using a version string in
cassettes.
This commit is contained in:
Kevin McCarthy
2014-05-06 18:48:29 -10:00
parent 4ab46f9643
commit e50f917cf4
5 changed files with 42 additions and 47 deletions

View File

@@ -1,5 +1,3 @@
from vcr.request import Request
from . import compat
try:
import simplejson as json
except ImportError:
@@ -7,26 +5,16 @@ except ImportError:
def deserialize(cassette_string):
data = json.loads(cassette_string)
requests = [Request._from_dict(r['request']) for r in data]
responses = [compat.convert_to_bytes(r['response']) for r in data]
return requests, responses
return json.loads(cassette_string)
def serialize(cassette_dict):
data = ([{
'request': request._to_dict(),
'response': compat.convert_to_unicode(response),
} for request, response in zip(
cassette_dict['requests'],
cassette_dict['responses']
)])
try:
return json.dumps(data, indent=4)
return json.dumps(cassette_dict, indent=4)
except UnicodeDecodeError:
raise UnicodeDecodeError(
"Error serializing cassette to JSON. ",
"Does this HTTP interaction contain binary data? ",
"If so, use a different serializer (like the yaml serializer) for",
"If so, use a different serializer (like the yaml serializer) for ",
"this request"
)