Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ box = "waterbutler.providers.box:BoxProvider"
googledrive = "waterbutler.providers.googledrive:GoogleDriveProvider"
onedrive = "waterbutler.providers.onedrive:OneDriveProvider"
googlecloud = "waterbutler.providers.googlecloud:GoogleCloudProvider"
azureblobstorage = "waterbutler.providers.azureblobstorage:AzureBlobStorageProvider"

[tool.pytest.ini_options]
asyncio_default_fixture_loop_scope = "function"
Expand Down
6 changes: 3 additions & 3 deletions tests/providers/azureblobstorage/test_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def test_file_metadata_from_headers(self, blob_properties_headers):
"""Test creating file metadata from HTTP headers"""
path = WaterButlerPath('/test-file.xlsx')

metadata = AzureBlobStorageFileMetadataHeaders(path.path, blob_properties_headers)
metadata = AzureBlobStorageFileMetadataHeaders(blob_properties_headers, path.path)

assert metadata.name == 'test-file.xlsx'
assert metadata.path == '/test-file.xlsx'
Expand Down Expand Up @@ -74,7 +74,7 @@ def test_file_metadata_minimal(self):
}

path = WaterButlerPath('/minimal.txt')
metadata = AzureBlobStorageFileMetadataHeaders(path.path, headers)
metadata = AzureBlobStorageFileMetadataHeaders(headers, path.path)

assert metadata.name == 'minimal.txt'
assert metadata.size == 100
Expand Down Expand Up @@ -108,7 +108,7 @@ def test_file_metadata_serialization(self):
}

path = WaterButlerPath('/report.pdf')
metadata = AzureBlobStorageFileMetadataHeaders(path.path, headers)
metadata = AzureBlobStorageFileMetadataHeaders(headers, path.path)

assert metadata.name == 'report.pdf'
assert metadata.size == 2048000
Expand Down
16 changes: 12 additions & 4 deletions waterbutler/providers/azureblobstorage/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

from waterbutler.core import utils
from waterbutler.core import metadata
import logging

logger = logging.getLogger(__name__)


def strip_char(str, chars):
Expand All @@ -30,10 +27,21 @@ def created_utc(self):

class AzureBlobStorageFileMetadataHeaders(AzureBlobStorageMetadata, metadata.BaseFileMetadata):

def __init__(self, path, headers):
def __init__(self, headers, path):
self._path = path
super().__init__(dict(headers))

def _dehydrate(self):
payload = super()._dehydrate()
payload['_path'] = self._path
return payload

@classmethod
def _rehydrate(cls, payload):
args = super()._rehydrate(payload)
args.append(payload['_path'])
return args

@property
def path(self):
return '/' + strip_char(self._path, self.raw.get('base_folder', ''))
Expand Down
3 changes: 1 addition & 2 deletions waterbutler/providers/azureblobstorage/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ async def _metadata_file(self, path, revision=None):
expects=(200,), throws=exceptions.MetadataError
)

return AzureBlobStorageFileMetadataHeaders(path.path, resp.headers)
return AzureBlobStorageFileMetadataHeaders(resp.headers, path.path)

async def _metadata_folder(self, path):
"""Get metadata for a folder (list contents)."""
Expand Down Expand Up @@ -462,7 +462,6 @@ def _convert_xml_to_blob_list(self, xml_body):
name_elem = prefix.find('Name')
if name_elem is not None:
result['BlobPrefix'].append({'Name': name_elem.text})
logger.info(f'Parsed XML to blob list: {result}')
return result

except ET.ParseError as e:
Expand Down