Revision cd6ada1d pithos/lib/client.py
b/pithos/lib/client.py | ||
---|---|---|
94 | 94 |
kwargs['headers']['X-Auth-Token'] = self.token |
95 | 95 |
if body: |
96 | 96 |
kwargs['body'] = body |
97 |
kwargs['headers'].setdefault('content-type', |
|
98 |
'application/octet-stream') |
|
97 | 99 |
kwargs['headers'].setdefault('content-length', len(body) if body else 0) |
98 |
kwargs['headers'].setdefault('content-type', 'application/octet-stream') |
|
99 | 100 |
try: |
100 | 101 |
#print '*', method, full_path, kwargs |
101 | 102 |
conn.request(method, full_path, **kwargs) |
... | ... | |
118 | 119 |
|
119 | 120 |
|
120 | 121 |
if int(resp.status) in ERROR_CODES.keys(): |
122 |
#print '**', resp.status |
|
121 | 123 |
raise Fault(data, int(resp.status)) |
122 | 124 |
|
123 |
#print '*', resp.status, headers, data |
|
125 |
#print '**', resp.status, headers, data
|
|
124 | 126 |
return resp.status, headers, data |
125 | 127 |
|
126 | 128 |
def delete(self, path, format='text', params={}): |
... | ... | |
146 | 148 |
if format == 'json': |
147 | 149 |
data = json.loads(data) if data else '' |
148 | 150 |
elif format == 'xml': |
149 |
print '#', data |
|
150 | 151 |
data = minidom.parseString(data) |
151 | 152 |
else: |
152 | 153 |
data = data.strip().split('\n') if data else '' |
... | ... | |
190 | 191 |
for k,v in ex_meta.items(): |
191 | 192 |
k = '%s%s' % (prefix, k) |
192 | 193 |
headers[k] = v |
193 |
return self.post(path, headers=headers, params=params)
|
|
194 |
return self.post(path, headers=headers) |
|
194 | 195 |
|
195 | 196 |
def _reset_metadata(self, path, entity, **meta): |
196 | 197 |
""" |
... | ... | |
309 | 310 |
h = {'Content-Type':'application/directory'} |
310 | 311 |
return self.create_zero_length_object(container, object, **h) |
311 | 312 |
|
313 |
def create_directory_marker(self, container, object): |
|
314 |
"""creates a dierectory marker""" |
|
315 |
return self.create_object(container, object, f=None) |
|
316 |
|
|
312 | 317 |
def create_object(self, container, object, f=stdin, format='text', meta={}, |
313 | 318 |
etag=None, content_type=None, content_encoding=None, |
314 | 319 |
content_disposition=None, **headers): |
315 |
"""creates an object"""
|
|
320 |
"""creates a zero-length object"""
|
|
316 | 321 |
path = '/%s/%s' % (container, object) |
317 | 322 |
for k, v in headers.items(): |
318 | 323 |
if not v: |
... | ... | |
328 | 333 |
data = f.read() if f else None |
329 | 334 |
return self.put(path, data, format, headers=headers) |
330 | 335 |
|
336 |
def create_zero_length_object(self, container, object, meta={}, etag=None, |
|
337 |
content_type=None, content_encoding=None, |
|
338 |
content_disposition=None, **headers): |
|
339 |
args = locals() |
|
340 |
for elem in ['self', 'container', 'headers']: |
|
341 |
args.pop(elem) |
|
342 |
args.update(headers) |
|
343 |
return self.create_object(container, f=None, **args) |
|
344 |
|
|
331 | 345 |
def update_object(self, container, object, f=stdin, offset=None, meta={}, |
332 | 346 |
content_length=None, content_type=None, |
333 | 347 |
content_encoding=None, content_disposition=None, |
... | ... | |
537 | 551 |
params = {'update':None} |
538 | 552 |
return self.post('', headers=headers, params=params) |
539 | 553 |
|
554 |
def reset_account_groups(self, **groups): |
|
555 |
"""overrides account groups""" |
|
556 |
headers = {} |
|
557 |
for key, val in groups.items(): |
|
558 |
headers['x-account-group-%s' % key] = val |
|
559 |
meta = self.retrieve_account_metadata() |
|
560 |
headers.update(meta) |
|
561 |
return self.post('', headers=headers) |
|
562 |
|
|
540 | 563 |
# Storage Container Services |
541 | 564 |
|
542 | 565 |
def list_objects(self, container, format='text', limit=10000, marker=None, |
... | ... | |
614 | 637 |
return self.retrieve_object_version(container, object, version='list', |
615 | 638 |
detail=True, **args) |
616 | 639 |
|
640 |
def create_zero_length_object(self, container, object, meta={}, |
|
641 |
etag=None, content_type=None, content_encoding=None, |
|
642 |
content_disposition=None, x_object_manifest=None, |
|
643 |
x_object_sharing=None, x_object_public=None): |
|
644 |
"""createas a zero length object""" |
|
645 |
args = locals() |
|
646 |
for elem in ['self', 'container', 'object']: |
|
647 |
args.pop(elem) |
|
648 |
return OOS_Client.create_zero_length_object(self, container, object, |
|
649 |
**args) |
|
650 |
|
|
617 | 651 |
def create_object(self, container, object, f=stdin, meta={}, |
618 | 652 |
etag=None, content_type=None, content_encoding=None, |
619 | 653 |
content_disposition=None, x_object_manifest=None, |
Also available in: Unified diff