| Index: chrome/common/extensions/docs/server2/example_zipper.py
|
| diff --git a/chrome/common/extensions/docs/server2/example_zipper.py b/chrome/common/extensions/docs/server2/example_zipper.py
|
| index a7e94c1cb06e8f3adfd23518765a21e61bcb28a1..eb672156c5085bf8e48be78b1e22e0f4820e9548 100644
|
| --- a/chrome/common/extensions/docs/server2/example_zipper.py
|
| +++ b/chrome/common/extensions/docs/server2/example_zipper.py
|
| @@ -15,12 +15,14 @@ _VERSION = 1
|
| class ExampleZipper(object):
|
| """This class creates a zip file given a samples directory.
|
| """
|
| - def __init__(self, file_system, compiled_fs_factory, base_path):
|
| + def __init__(self, compiled_fs_factory, base_path):
|
| self._base_path = base_path.rstrip('/')
|
| + # Use an IdentityFileSystem here so that it shares a cache with the samples
|
| + # data source. Otherwise we'd need to fetch the zip files from the cron job.
|
| + self._file_cache = compiled_fs_factory.GetOrCreateIdentity()
|
| self._zip_cache = compiled_fs_factory.Create(self._MakeZipFile,
|
| ExampleZipper,
|
| version=_VERSION)
|
| - self._file_system = file_system
|
|
|
| def _MakeZipFile(self, base_dir, files):
|
| if 'manifest.json' not in files:
|
| @@ -28,14 +30,17 @@ class ExampleZipper(object):
|
| zip_bytes = BytesIO()
|
| zip_file = ZipFile(zip_bytes, mode='w')
|
| try:
|
| - for name, file_contents in (
|
| - self._file_system.Read(['%s%s' % (base_dir, f) for f in files],
|
| - binary=True).Get().iteritems()):
|
| + for file_name in files:
|
| + file_path = '%s%s' % (base_dir, file_name)
|
| + file_contents = self._file_cache.GetFromFile(file_path, binary=True)
|
| + if isinstance(file_contents, unicode):
|
| + # Data is sometimes already cached as unicode.
|
| + file_contents = file_contents.encode('utf8')
|
| # We want e.g. basic.zip to expand to basic/manifest.json etc, not
|
| # chrome/common/extensions/.../basic/manifest.json, so only use the
|
| # end of the path component when writing into the zip file.
|
| redundant_prefix = '%s/' % base_dir.rstrip('/').rsplit('/', 1)[0]
|
| - zip_file.writestr(name[len(redundant_prefix):], file_contents)
|
| + zip_file.writestr(file_path[len(redundant_prefix):], file_contents)
|
| finally:
|
| zip_file.close()
|
| return zip_bytes.getvalue()
|
|
|