Source code for contentful_management.uploads_proxy
from .client_proxy import ClientProxy
from .upload import Upload
from .utils import str_type
"""
contentful_management.uploads_proxy
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This module implements the UploadsProxy class.
API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/uploads
:copyright: (c) 2018 by Contentful GmbH.
:license: MIT, see LICENSE for more details.
"""
[docs]class UploadsProxy(ClientProxy):
"""
API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/uploads
"""
@property
def _resource_class(self):
return Upload
[docs] def all(*args, **kwargs):
"""
Not supported.
"""
raise Exception("Not supported")
[docs] def create(self, file_or_path, **kwargs):
"""
Creates an upload for the given file or path.
"""
opened = False
if isinstance(file_or_path, str_type()):
file_or_path = open(file_or_path, 'rb')
opened = True
elif not getattr(file_or_path, 'read', False):
raise Exception("A file or path to a file is required for this operation.")
try:
return self.client._post(
self._url(),
file_or_path,
headers=self._resource_class.create_headers({}),
file_upload=True
)
finally:
if opened:
file_or_path.close()
[docs] def find(self, upload_id, **kwargs):
"""
Finds an upload by ID.
"""
return super(UploadsProxy, self).find(upload_id, file_upload=True)
[docs] def delete(self, upload_id):
"""
Deletes an upload by ID.
"""
return super(UploadsProxy, self).delete(upload_id, file_upload=True)