diff options
Diffstat (limited to 'chromium/third_party/skia/tools/pyutils/url_utils.py')
-rwxr-xr-x | chromium/third_party/skia/tools/pyutils/url_utils.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/chromium/third_party/skia/tools/pyutils/url_utils.py b/chromium/third_party/skia/tools/pyutils/url_utils.py new file mode 100755 index 00000000000..b107f560db7 --- /dev/null +++ b/chromium/third_party/skia/tools/pyutils/url_utils.py @@ -0,0 +1,63 @@ +#!/usr/bin/python + +""" +Copyright 2014 Google Inc. + +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. + +Utilities for working with URLs. + +TODO(epoger): move this into tools/utils for broader use? +""" + +# System-level imports +import contextlib +import os +import shutil +import urllib +import urlparse + + +def create_filepath_url(filepath): + """ Returns a file:/// URL pointing at the given filepath on local disk. + + Args: + filepath: string; path to a file on local disk (may be absolute or relative, + and the file does not need to exist) + + Returns: + A file:/// URL pointing at the file. Regardless of whether filepath was + specified as a relative or absolute path, the URL will contain an + absolute path to the file. + + Raises: + An Exception, if filepath is already a URL. + """ + if urlparse.urlparse(filepath).scheme: + raise Exception('"%s" is already a URL' % filepath) + return urlparse.urljoin( + 'file:', urllib.pathname2url(os.path.abspath(filepath))) + + +def copy_contents(source_url, dest_path, create_subdirs_if_needed=False): + """ Copies the full contents of the URL 'source_url' into + filepath 'dest_path'. + + Args: + source_url: string; complete URL to read from + dest_path: string; complete filepath to write to (may be absolute or + relative) + create_subdirs_if_needed: boolean; whether to create subdirectories as + needed to create dest_path + + Raises: + Some subclass of Exception if unable to read source_url or write dest_path. + """ + if create_subdirs_if_needed: + dest_dir = os.path.dirname(dest_path) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + with contextlib.closing(urllib.urlopen(source_url)) as source_handle: + with open(dest_path, 'wb') as dest_handle: + shutil.copyfileobj(fsrc=source_handle, fdst=dest_handle) |