Revision 16fd4b63
b/pithos/api/functions.py | ||
---|---|---|
423 | 423 |
if 'Content-Type' not in meta: |
424 | 424 |
raise LengthRequired('Missing Content-Type header') |
425 | 425 |
|
426 |
sock = raw_input_socket(request) |
|
427 | 426 |
md5 = hashlib.md5() |
428 |
offset = 0 |
|
429 |
for data in socket_read_iterator(sock, content_length): |
|
430 |
# TODO: Raise 408 (Request Timeout) if this takes too long. |
|
431 |
# TODO: Raise 499 (Client Disconnect) if a length is defined and we stop before getting this much data. |
|
432 |
md5.update(data) |
|
427 |
if content_length == 0: |
|
433 | 428 |
try: |
434 |
backend.update_object(request.user, v_container, v_object, data, offset)
|
|
429 |
backend.update_object(request.user, v_container, v_object, '')
|
|
435 | 430 |
except NameError: |
436 |
raise ItemNotFound('Object does not exist') |
|
437 |
offset += len(data) |
|
431 |
raise ItemNotFound('Container does not exist') |
|
432 |
else: |
|
433 |
sock = raw_input_socket(request) |
|
434 |
offset = 0 |
|
435 |
for data in socket_read_iterator(sock, content_length): |
|
436 |
# TODO: Raise 408 (Request Timeout) if this takes too long. |
|
437 |
# TODO: Raise 499 (Client Disconnect) if a length is defined and we stop before getting this much data. |
|
438 |
md5.update(data) |
|
439 |
try: |
|
440 |
backend.update_object(request.user, v_container, v_object, data, offset) |
|
441 |
except NameError: |
|
442 |
raise ItemNotFound('Container does not exist') |
|
443 |
offset += len(data) |
|
438 | 444 |
|
439 | 445 |
meta['hash'] = md5.hexdigest().lower() |
440 | 446 |
etag = request.META.get('HTTP_ETAG') |
b/pithos/backends/simple.py | ||
---|---|---|
38 | 38 |
return {'name': account, 'count': 0, 'bytes': 0} |
39 | 39 |
contents = os.listdir(fullname) |
40 | 40 |
count = len(contents) |
41 |
size = sum((os.path.getsize(os.path.join(fullname, x)) for x in os.listdir(fullname))) |
|
41 |
size = 0 |
|
42 |
for y in (os.path.join(fullname, z) for z in contents): |
|
43 |
size += sum((os.path.getsize(os.path.join(y, x)) for x in os.listdir(y))) |
|
42 | 44 |
meta = self._get_metadata(account) |
43 | 45 |
meta.update({'name': account, 'count': count, 'bytes': size}) |
44 | 46 |
return meta |
... | ... | |
81 | 83 |
fullname = self._get_containerinfo(account, name) |
82 | 84 |
contents = os.listdir(fullname) |
83 | 85 |
count = len(contents) |
84 |
size = os.stat(fullname).st_size
|
|
86 |
size = sum((os.path.getsize(os.path.join(fullname, x)) for x in contents))
|
|
85 | 87 |
meta = self._get_metadata(os.path.join(account, name)) |
86 | 88 |
meta.update({'name': name, 'count': count, 'bytes': size}) |
87 | 89 |
return meta |
Also available in: Unified diff