Revision 7812e1f9 pithos/lib/client.py
b/pithos/lib/client.py | ||
---|---|---|
365 | 365 |
return self.post(path, data, headers=headers) |
366 | 366 |
|
367 | 367 |
def _change_obj_location(self, src_container, src_object, dst_container, |
368 |
dst_object, remove=False, public=False, **meta):
|
|
368 |
dst_object, remove=False, meta={}, **headers):
|
|
369 | 369 |
path = '/%s/%s' % (dst_container, dst_object) |
370 |
headers = {} |
|
370 |
headers = {} if not headers else headers
|
|
371 | 371 |
for k, v in meta.items(): |
372 | 372 |
headers['x-object-meta-%s' % k] = v |
373 | 373 |
if remove: |
374 | 374 |
headers['x-move-from'] = '/%s/%s' % (src_container, src_object) |
375 | 375 |
else: |
376 | 376 |
headers['x-copy-from'] = '/%s/%s' % (src_container, src_object) |
377 |
self._set_public_header(headers, public) |
|
378 |
self.headers = headers if headers else None |
|
379 |
headers['content-length'] = 0 |
|
377 |
headers['content_length'] = 0 |
|
380 | 378 |
return self.put(path, headers=headers) |
381 | 379 |
|
382 |
def copy_object(self, src_container, src_object, dst_container, |
|
383 |
dst_object, public=False, **meta): |
|
380 |
def copy_object(self, src_container, src_object, dst_container, dst_object, |
|
381 |
meta, **headers): |
|
382 |
"""copies an object""" |
|
384 | 383 |
return self._change_obj_location(src_container, src_object, |
385 |
dst_container, dst_object, False, |
|
386 |
public, **meta)
|
|
384 |
dst_container, dst_object, remove=False,
|
|
385 |
meta=meta, **headers)
|
|
387 | 386 |
|
388 | 387 |
def move_object(self, src_container, src_object, dst_container, |
389 |
dst_object, public=False, **meta): |
|
388 |
dst_object, meta={}, **headers): |
|
389 |
"""moves an object""" |
|
390 | 390 |
return self._change_obj_location(src_container, src_object, |
391 |
dst_container, dst_object, True,
|
|
392 |
public, **meta)
|
|
391 |
dst_container, dst_object, remove=True,
|
|
392 |
meta=meta, **headers)
|
|
393 | 393 |
|
394 | 394 |
def delete_object(self, container, object, params={}): |
395 |
"""deletes an object""" |
|
395 | 396 |
return self.delete('/%s/%s' % (container, object), params=params) |
396 | 397 |
|
397 | 398 |
def retrieve_object_metadata(self, container, object, restricted=False, |
... | ... | |
757 | 758 |
"""restores a trashed object""" |
758 | 759 |
return self.delete_object_metadata(container, object, ['trash']) |
759 | 760 |
|
760 |
def _set_public_header(self, headers, public=False): |
|
761 |
"""sets the public header""" |
|
762 |
if not headers: |
|
763 |
headers = {} |
|
764 |
if public == None: |
|
765 |
return |
|
766 |
else: |
|
767 |
headers['x-object-public'] = public if public else '' |
|
768 |
|
|
769 | 761 |
def publish_object(self, container, object): |
770 | 762 |
"""sets a previously created object publicly accessible""" |
771 | 763 |
path = '/%s/%s' % (container, object) |
772 | 764 |
headers = {'content_range':'bytes */*'} |
773 |
self._set_public_header(headers, public=True)
|
|
765 |
headers['x_object_public'] = True
|
|
774 | 766 |
return self.post(path, headers=headers) |
775 | 767 |
|
776 | 768 |
def unpublish_object(self, container, object): |
777 | 769 |
"""unpublish an object""" |
778 | 770 |
path = '/%s/%s' % (container, object) |
779 | 771 |
headers = {'content_range':'bytes */*'} |
780 |
self._set_public_header(headers, public=False)
|
|
772 |
headers['x_object_public'] = False
|
|
781 | 773 |
return self.post(path, headers=headers) |
774 |
|
|
775 |
def _change_obj_location(self, src_container, src_object, dst_container, |
|
776 |
dst_object, remove=False, meta={}, **headers): |
|
777 |
path = '/%s/%s' % (dst_container, dst_object) |
|
778 |
headers = {} if not headers else headers |
|
779 |
for k, v in meta.items(): |
|
780 |
headers['x-object-meta-%s' % k] = v |
|
781 |
if remove: |
|
782 |
headers['x-move-from'] = '/%s/%s' % (src_container, src_object) |
|
783 |
else: |
|
784 |
headers['x-copy-from'] = '/%s/%s' % (src_container, src_object) |
|
785 |
headers['content_length'] = 0 |
|
786 |
return self.put(path, headers=headers) |
|
787 |
|
|
788 |
def copy_object(self, src_container, src_object, dst_container, dst_object, |
|
789 |
meta={}, public=False, version=None): |
|
790 |
"""copies an object""" |
|
791 |
headers = {} |
|
792 |
headers['x_object_public'] = public |
|
793 |
if version: |
|
794 |
headers['x_object_version'] = version |
|
795 |
return OOS_Client.copy_object(self, src_container, src_object, |
|
796 |
dst_container, dst_object, meta=meta, |
|
797 |
**headers) |
|
798 |
|
|
799 |
def move_object(self, src_container, src_object, dst_container, |
|
800 |
dst_object, meta={}, public=False, version=None): |
|
801 |
"""moves an object""" |
|
802 |
headers = {} |
|
803 |
headers['x_object_public'] = public |
|
804 |
if version: |
|
805 |
headers['x_object_version'] = version |
|
806 |
return OOS_Client.move_object(self, src_container, src_object, |
|
807 |
dst_container, dst_object, meta=meta, |
|
808 |
**headers) |
Also available in: Unified diff