/
opt
/
gsutil
/
gslib
/
utils
/
__pycache__
/
up file
home
a +(Wg� � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlZddlZddl m Z ddlmZ dd d �Z ddd�Zdd d�Zdd� ZdS )z/Helper functions for Cloud API implementations.� )�absolute_import)�print_function)�division)�unicode_literalsN)�ArgumentException)�AddQueryParamToUrlc C s |p| j S )a� Gets a gsutil Cloud API instance. Since Cloud API implementations are not guaranteed to be thread-safe, each thread needs its own instance. These instances are passed to each thread via the thread pool logic in command. Args: cls: Command class to be used for single-threaded case. thread_state: Per thread state from this thread containing a gsutil Cloud API instance. Returns: gsutil Cloud API instance. )� gsutil_api)�clsZthread_state� r �+/opt/gsutil/gslib/utils/cloud_api_helper.py�GetCloudApiInstance s r c C sJ | j }|rt|d|�}tjr0t|t�r0|�d�}d|| j|d�}t� |�S )a� Returns download serialization data. There are five entries: auto_transfer: JSON-specific field, always False. progress: How much of the download has already been completed. total_size: Total object size. url: Implementation-specific field used for saving a metadata get call. For JSON, this the download URL of the object. For XML, this is a pickled boto key. user_project: Project to be billed to, added as query param. Args: src_obj_metadata: Object to be downloaded. progress: See above. user_project: User project to add to query string. Returns: Serialization data for use with Cloud API GetObjectMedia. �userProject�ascii�False)� auto_transfer�progress� total_size�url) � mediaLinkr �six�PY3� isinstance�bytes�decode�size�json�dumps)�src_obj_metadatar �user_projectr �serialization_dictr r r �GetDownloadSerializationData1 s �r c C s: | r6t � }| D ]"}|dv rq|�t�dd|�� q|S dS )a Removes 'items/' from the input fields and converts it to a set. Args: list_fields: Iterable fields usable in ListBuckets/ListObjects calls. Returns: Set of fields usable in GetBucket/GetObjectMetadata calls (None implies all fields should be returned). )�kind� nextPageToken�prefixeszitems/� N)�set�add�re�sub)�list_fields� get_fields�fieldr r r �ListToGetFieldsZ s r, c C s, | st d��| jst d��| js(t d��dS )z�Ensures dst_obj_metadata supplies the needed fields for copy and insert. Args: dst_obj_metadata: Metadata to validate. Raises: ArgumentException if metadata is invalid. z3No object metadata supplied for destination object.zCObject metadata supplied for destination object had no object name.zCObject metadata supplied for destination object had no bucket name.N)r �name�bucket)�dst_obj_metadatar r r �ValidateDstObjectMetadatao s ���r0 )N)r N)N)�__doc__� __future__r r r r r r'