| # -*- coding: utf-8 -*- |
| # Copyright 2012 Google Inc. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| """Class that holds state for instantiating StorageUri objects. |
| |
| The StorageUri func defined in this class uses that state |
| (bucket_storage_uri_class and debug) needed plus gsutil default flag values to |
| instantiate this frequently constructed object with just one param for most |
| cases. |
| """ |
| |
| from __future__ import absolute_import |
| |
| import boto |
| |
| |
| class StorageUriBuilder(object): |
| """Class for instantiating StorageUri objects.""" |
| |
| def __init__(self, debug, bucket_storage_uri_class): |
| """Initializes the builder. |
| |
| Args: |
| debug: Debug level to pass in to boto connection (range 0..3). |
| bucket_storage_uri_class: Class to instantiate for cloud StorageUris. |
| Settable for testing/mocking. |
| """ |
| self.bucket_storage_uri_class = bucket_storage_uri_class |
| self.debug = debug |
| |
| def StorageUri(self, uri_str): |
| """Instantiates StorageUri using class state and gsutil default flag values. |
| |
| Args: |
| uri_str: StorageUri naming bucket or object. |
| |
| Returns: |
| boto.StorageUri for given uri_str. |
| |
| Raises: |
| InvalidUriError: if uri_str not valid. |
| """ |
| return boto.storage_uri( |
| uri_str, 'file', debug=self.debug, validate=False, |
| bucket_storage_uri_class=self.bucket_storage_uri_class, |
| suppress_consec_slashes=False) |