mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-10 17:45:35 +00:00
add back the secure write
This commit is contained in:
16
vcr/files.py
16
vcr/files.py
@@ -1,3 +1,4 @@
|
|||||||
|
import tempfile
|
||||||
import os
|
import os
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
@@ -7,13 +8,22 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from yaml import Loader, Dumper
|
from yaml import Loader, Dumper
|
||||||
|
|
||||||
|
def _secure_write(path, contents):
|
||||||
|
"""
|
||||||
|
We'll overwrite the old version securely by writing out a temporary
|
||||||
|
version and then moving it to replace the old version
|
||||||
|
"""
|
||||||
|
dirname, filename = os.path.split(path)
|
||||||
|
fd, name = tempfile.mkstemp(dir=dirname, prefix=filename)
|
||||||
|
with os.fdopen(fd, 'w') as fout:
|
||||||
|
fout.write(contents)
|
||||||
|
os.rename(name, path)
|
||||||
|
|
||||||
def load_cassette(cassette_path):
|
def load_cassette(cassette_path):
|
||||||
return yaml.load(open(cassette_path), Loader=Loader)
|
return yaml.load(open(cassette_path), Loader=Loader)
|
||||||
|
|
||||||
def save_cassette(cassette_path, data):
|
def save_cassette(cassette_path, data):
|
||||||
#TODO: safe overwrite using tmpfile
|
|
||||||
dirname, filename = os.path.split(cassette_path)
|
dirname, filename = os.path.split(cassette_path)
|
||||||
if not os.path.exists(dirname):
|
if not os.path.exists(dirname):
|
||||||
os.makedirs(dirname)
|
os.makedirs(dirname)
|
||||||
with open(cassette_path, 'w') as cassette_file:
|
_secure_write(cassette_path, yaml.dump(data, Dumper=Dumper))
|
||||||
cassette_file.write(yaml.dump(data, Dumper=Dumper))
|
|
||||||
|
|||||||
Reference in New Issue
Block a user