Skip to content

Commit

Permalink
Directory client hookup + File client Hookup (#6040)
Browse files Browse the repository at this point in the history
* file hookup

* changes
  • Loading branch information
Rakshith Bhyravabhotla authored Jun 23, 2019
1 parent 6033e96 commit f9a9d16
Show file tree
Hide file tree
Showing 8 changed files with 1,228 additions and 26 deletions.
80 changes: 78 additions & 2 deletions sdk/storage/azure-storage-file/azure/storage/file/_share_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
# license information.
# --------------------------------------------------------------------------

from .models import ShareProperties
from .models import ShareProperties, DirectoryProperties, FileProperty
from ._shared.utils import return_response_headers
from ._upload_chunking import _upload_file_chunks
from ._generated.models import StorageErrorException
from ._shared.utils import process_storage_error


def deserialize_metadata(response, obj, headers):
Expand All @@ -17,4 +21,76 @@ def deserialize_share_properties(response, obj, headers):
metadata=metadata,
**headers
)
return share_properties
return share_properties

def deserialize_directory_properties(response, obj, headers):
metadata = deserialize_metadata(response, obj, headers)
directory_properties = DirectoryProperties(
metadata=metadata,
**headers
)
return directory_properties

def deserialize_file_properties(response, obj, headers):
metadata = deserialize_metadata(response, obj, headers)
file_properties = FileProperty(
metadata=metadata,
**headers
)
return file_properties

def upload_file_helper(
client,
share_name,
directory_name,
file_name,
stream,
size,
headers,
file_http_headers,
validate_content,
timeout,
max_connections,
file_settings,
encryption_data,
**kwargs):
try:
if size is None or size < 0:
raise ValueError("A content size must be specified for a File.")
if size % 512 != 0:
raise ValueError("Invalidfile size: {0}. "
"The size must be aligned to a 512-byte boundary.".format(size))
if encryption_data is not None:
headers['x-ms-meta-encryptiondata'] = encryption_data
response = client.create(
file_content_length=size,
timeout=timeout,
file_http_headers=file_http_headers,
headers=headers,
cls=return_response_headers,
**kwargs)
if size == 0:
return response

return _upload_file_chunks(
file_service=client,
file_size=size,
share_name=share_name,
directory_name=directory_name,
file_name=file_name,
block_size=file_settings.max_page_size,
stream=stream,
max_connections=max_connections,
validate_content=validate_content,
timeout=timeout,
**kwargs)
except StorageErrorException as error:
process_storage_error(error)

class StorageStreamDownloader(object): # pylint: disable=too-many-instance-attributes

def __init__(
self, name, share_name, directory_name, service, config, length, validate_content,
timeout, require_encryption, key_encryption_key, key_resolver_function, **kwargs
):
pass
Loading

0 comments on commit f9a9d16

Please sign in to comment.