143 |
143 |
if not limit:
|
144 |
144 |
limit = 10000
|
145 |
145 |
|
146 |
|
accounts = request.backend.list_accounts(request.user, marker, limit)
|
|
146 |
accounts = request.backend.list_accounts(request.user_uniq, marker, limit)
|
147 |
147 |
|
148 |
148 |
if request.serialization == 'text':
|
149 |
149 |
if len(accounts) == 0:
|
... | ... | |
157 |
157 |
account_meta = []
|
158 |
158 |
for x in accounts:
|
159 |
159 |
try:
|
160 |
|
meta = request.backend.get_account_meta(request.user, x)
|
161 |
|
groups = request.backend.get_account_groups(request.user, x)
|
|
160 |
meta = request.backend.get_account_meta(request.user_uniq, x)
|
|
161 |
groups = request.backend.get_account_groups(request.user_uniq, x)
|
162 |
162 |
except NotAllowedError:
|
163 |
163 |
raise Forbidden('Not allowed')
|
164 |
164 |
else:
|
... | ... | |
184 |
184 |
|
185 |
185 |
until = get_int_parameter(request.GET.get('until'))
|
186 |
186 |
try:
|
187 |
|
meta = request.backend.get_account_meta(request.user, v_account, until)
|
188 |
|
groups = request.backend.get_account_groups(request.user, v_account)
|
189 |
|
policy = request.backend.get_account_policy(request.user, v_account)
|
|
187 |
meta = request.backend.get_account_meta(request.user_uniq, v_account, until)
|
|
188 |
groups = request.backend.get_account_groups(request.user_uniq, v_account)
|
|
189 |
policy = request.backend.get_account_policy(request.user_uniq, v_account)
|
190 |
190 |
except NotAllowedError:
|
191 |
191 |
raise Forbidden('Not allowed')
|
192 |
192 |
|
... | ... | |
209 |
209 |
replace = False
|
210 |
210 |
if groups:
|
211 |
211 |
try:
|
212 |
|
request.backend.update_account_groups(request.user, v_account,
|
|
212 |
request.backend.update_account_groups(request.user_uniq, v_account,
|
213 |
213 |
groups, replace)
|
214 |
214 |
except NotAllowedError:
|
215 |
215 |
raise Forbidden('Not allowed')
|
... | ... | |
217 |
217 |
raise BadRequest('Invalid groups header')
|
218 |
218 |
if meta or replace:
|
219 |
219 |
try:
|
220 |
|
request.backend.update_account_meta(request.user, v_account, meta,
|
|
220 |
request.backend.update_account_meta(request.user_uniq, v_account, meta,
|
221 |
221 |
replace)
|
222 |
222 |
except NotAllowedError:
|
223 |
223 |
raise Forbidden('Not allowed')
|
... | ... | |
233 |
233 |
|
234 |
234 |
until = get_int_parameter(request.GET.get('until'))
|
235 |
235 |
try:
|
236 |
|
meta = request.backend.get_account_meta(request.user, v_account, until)
|
237 |
|
groups = request.backend.get_account_groups(request.user, v_account)
|
238 |
|
policy = request.backend.get_account_policy(request.user, v_account)
|
|
236 |
meta = request.backend.get_account_meta(request.user_uniq, v_account, until)
|
|
237 |
groups = request.backend.get_account_groups(request.user_uniq, v_account)
|
|
238 |
policy = request.backend.get_account_policy(request.user_uniq, v_account)
|
239 |
239 |
except NotAllowedError:
|
240 |
240 |
raise Forbidden('Not allowed')
|
241 |
241 |
|
... | ... | |
254 |
254 |
shared = True
|
255 |
255 |
|
256 |
256 |
try:
|
257 |
|
containers = request.backend.list_containers(request.user, v_account,
|
|
257 |
containers = request.backend.list_containers(request.user_uniq, v_account,
|
258 |
258 |
marker, limit, shared, until)
|
259 |
259 |
except NotAllowedError:
|
260 |
260 |
raise Forbidden('Not allowed')
|
... | ... | |
273 |
273 |
container_meta = []
|
274 |
274 |
for x in containers:
|
275 |
275 |
try:
|
276 |
|
meta = request.backend.get_container_meta(request.user, v_account,
|
|
276 |
meta = request.backend.get_container_meta(request.user_uniq, v_account,
|
277 |
277 |
x, until)
|
278 |
|
policy = request.backend.get_container_policy(request.user,
|
|
278 |
policy = request.backend.get_container_policy(request.user_uniq,
|
279 |
279 |
v_account, x)
|
280 |
280 |
except NotAllowedError:
|
281 |
281 |
raise Forbidden('Not allowed')
|
... | ... | |
305 |
305 |
|
306 |
306 |
until = get_int_parameter(request.GET.get('until'))
|
307 |
307 |
try:
|
308 |
|
meta = request.backend.get_container_meta(request.user, v_account,
|
|
308 |
meta = request.backend.get_container_meta(request.user_uniq, v_account,
|
309 |
309 |
v_container, until)
|
310 |
|
meta['object_meta'] = request.backend.list_object_meta(request.user,
|
|
310 |
meta['object_meta'] = request.backend.list_object_meta(request.user_uniq,
|
311 |
311 |
v_account, v_container, until)
|
312 |
|
policy = request.backend.get_container_policy(request.user, v_account,
|
|
312 |
policy = request.backend.get_container_policy(request.user_uniq, v_account,
|
313 |
313 |
v_container)
|
314 |
314 |
except NotAllowedError:
|
315 |
315 |
raise Forbidden('Not allowed')
|
... | ... | |
333 |
333 |
meta, policy = get_container_headers(request)
|
334 |
334 |
|
335 |
335 |
try:
|
336 |
|
request.backend.put_container(request.user, v_account, v_container, policy)
|
|
336 |
request.backend.put_container(request.user_uniq, v_account, v_container, policy)
|
337 |
337 |
ret = 201
|
338 |
338 |
except NotAllowedError:
|
339 |
339 |
raise Forbidden('Not allowed')
|
... | ... | |
344 |
344 |
|
345 |
345 |
if ret == 202 and policy:
|
346 |
346 |
try:
|
347 |
|
request.backend.update_container_policy(request.user, v_account,
|
|
347 |
request.backend.update_container_policy(request.user_uniq, v_account,
|
348 |
348 |
v_container, policy, replace=False)
|
349 |
349 |
except NotAllowedError:
|
350 |
350 |
raise Forbidden('Not allowed')
|
... | ... | |
354 |
354 |
raise BadRequest('Invalid policy header')
|
355 |
355 |
if meta:
|
356 |
356 |
try:
|
357 |
|
request.backend.update_container_meta(request.user, v_account,
|
|
357 |
request.backend.update_container_meta(request.user_uniq, v_account,
|
358 |
358 |
v_container, meta, replace=False)
|
359 |
359 |
except NotAllowedError:
|
360 |
360 |
raise Forbidden('Not allowed')
|
... | ... | |
377 |
377 |
replace = False
|
378 |
378 |
if policy:
|
379 |
379 |
try:
|
380 |
|
request.backend.update_container_policy(request.user, v_account,
|
|
380 |
request.backend.update_container_policy(request.user_uniq, v_account,
|
381 |
381 |
v_container, policy, replace)
|
382 |
382 |
except NotAllowedError:
|
383 |
383 |
raise Forbidden('Not allowed')
|
... | ... | |
387 |
387 |
raise BadRequest('Invalid policy header')
|
388 |
388 |
if meta or replace:
|
389 |
389 |
try:
|
390 |
|
request.backend.update_container_meta(request.user, v_account,
|
|
390 |
request.backend.update_container_meta(request.user_uniq, v_account,
|
391 |
391 |
v_container, meta, replace)
|
392 |
392 |
except NotAllowedError:
|
393 |
393 |
raise Forbidden('Not allowed')
|
... | ... | |
422 |
422 |
|
423 |
423 |
until = get_int_parameter(request.GET.get('until'))
|
424 |
424 |
try:
|
425 |
|
request.backend.delete_container(request.user, v_account, v_container,
|
|
425 |
request.backend.delete_container(request.user_uniq, v_account, v_container,
|
426 |
426 |
until)
|
427 |
427 |
except NotAllowedError:
|
428 |
428 |
raise Forbidden('Not allowed')
|
... | ... | |
442 |
442 |
|
443 |
443 |
until = get_int_parameter(request.GET.get('until'))
|
444 |
444 |
try:
|
445 |
|
meta = request.backend.get_container_meta(request.user, v_account,
|
|
445 |
meta = request.backend.get_container_meta(request.user_uniq, v_account,
|
446 |
446 |
v_container, until)
|
447 |
|
meta['object_meta'] = request.backend.list_object_meta(request.user,
|
|
447 |
meta['object_meta'] = request.backend.list_object_meta(request.user_uniq,
|
448 |
448 |
v_account, v_container, until)
|
449 |
|
policy = request.backend.get_container_policy(request.user, v_account,
|
|
449 |
policy = request.backend.get_container_policy(request.user_uniq, v_account,
|
450 |
450 |
v_container)
|
451 |
451 |
except NotAllowedError:
|
452 |
452 |
raise Forbidden('Not allowed')
|
... | ... | |
494 |
494 |
shared = True
|
495 |
495 |
|
496 |
496 |
try:
|
497 |
|
objects = request.backend.list_objects(request.user, v_account,
|
|
497 |
objects = request.backend.list_objects(request.user_uniq, v_account,
|
498 |
498 |
v_container, prefix, delimiter, marker,
|
499 |
499 |
limit, virtual, keys, shared, until)
|
500 |
500 |
except NotAllowedError:
|
... | ... | |
518 |
518 |
object_meta.append({'subdir': x[0]})
|
519 |
519 |
else:
|
520 |
520 |
try:
|
521 |
|
meta = request.backend.get_object_meta(request.user, v_account,
|
|
521 |
meta = request.backend.get_object_meta(request.user_uniq, v_account,
|
522 |
522 |
v_container, x[0], x[1])
|
523 |
523 |
if until is None:
|
524 |
524 |
permissions = request.backend.get_object_permissions(
|
525 |
|
request.user, v_account, v_container, x[0])
|
526 |
|
public = request.backend.get_object_public(request.user,
|
|
525 |
request.user_uniq, v_account, v_container, x[0])
|
|
526 |
public = request.backend.get_object_public(request.user_uniq,
|
527 |
527 |
v_account, v_container, x[0])
|
528 |
528 |
else:
|
529 |
529 |
permissions = None
|
... | ... | |
558 |
558 |
|
559 |
559 |
version = request.GET.get('version')
|
560 |
560 |
try:
|
561 |
|
meta = request.backend.get_object_meta(request.user, v_account,
|
|
561 |
meta = request.backend.get_object_meta(request.user_uniq, v_account,
|
562 |
562 |
v_container, v_object, version)
|
563 |
563 |
if version is None:
|
564 |
|
permissions = request.backend.get_object_permissions(request.user,
|
|
564 |
permissions = request.backend.get_object_permissions(request.user_uniq,
|
565 |
565 |
v_account, v_container, v_object)
|
566 |
|
public = request.backend.get_object_public(request.user, v_account,
|
|
566 |
public = request.backend.get_object_public(request.user_uniq, v_account,
|
567 |
567 |
v_container, v_object)
|
568 |
568 |
else:
|
569 |
569 |
permissions = None
|
... | ... | |
611 |
611 |
raise BadRequest('No format specified for version list.')
|
612 |
612 |
|
613 |
613 |
try:
|
614 |
|
v = request.backend.list_versions(request.user, v_account,
|
|
614 |
v = request.backend.list_versions(request.user_uniq, v_account,
|
615 |
615 |
v_container, v_object)
|
616 |
616 |
except NotAllowedError:
|
617 |
617 |
raise Forbidden('Not allowed')
|
... | ... | |
627 |
627 |
return response
|
628 |
628 |
|
629 |
629 |
try:
|
630 |
|
meta = request.backend.get_object_meta(request.user, v_account,
|
|
630 |
meta = request.backend.get_object_meta(request.user_uniq, v_account,
|
631 |
631 |
v_container, v_object, version)
|
632 |
632 |
if version is None:
|
633 |
|
permissions = request.backend.get_object_permissions(request.user,
|
|
633 |
permissions = request.backend.get_object_permissions(request.user_uniq,
|
634 |
634 |
v_account, v_container, v_object)
|
635 |
|
public = request.backend.get_object_public(request.user, v_account,
|
|
635 |
public = request.backend.get_object_public(request.user_uniq, v_account,
|
636 |
636 |
v_container, v_object)
|
637 |
637 |
else:
|
638 |
638 |
permissions = None
|
... | ... | |
662 |
662 |
if 'X-Object-Manifest' in meta:
|
663 |
663 |
try:
|
664 |
664 |
src_container, src_name = split_container_object_string('/' + meta['X-Object-Manifest'])
|
665 |
|
objects = request.backend.list_objects(request.user, v_account,
|
|
665 |
objects = request.backend.list_objects(request.user_uniq, v_account,
|
666 |
666 |
src_container, prefix=src_name, virtual=False)
|
667 |
667 |
except NotAllowedError:
|
668 |
668 |
raise Forbidden('Not allowed')
|
... | ... | |
673 |
673 |
|
674 |
674 |
try:
|
675 |
675 |
for x in objects:
|
676 |
|
s, h = request.backend.get_object_hashmap(request.user,
|
|
676 |
s, h = request.backend.get_object_hashmap(request.user_uniq,
|
677 |
677 |
v_account, src_container, x[0], x[1])
|
678 |
678 |
sizes.append(s)
|
679 |
679 |
hashmaps.append(h)
|
... | ... | |
685 |
685 |
raise ItemNotFound('Version does not exist')
|
686 |
686 |
else:
|
687 |
687 |
try:
|
688 |
|
s, h = request.backend.get_object_hashmap(request.user, v_account,
|
|
688 |
s, h = request.backend.get_object_hashmap(request.user_uniq, v_account,
|
689 |
689 |
v_container, v_object, version)
|
690 |
690 |
sizes.append(s)
|
691 |
691 |
hashmaps.append(h)
|
... | ... | |
733 |
733 |
# Evaluate conditions.
|
734 |
734 |
if request.META.get('HTTP_IF_MATCH') or request.META.get('HTTP_IF_NONE_MATCH'):
|
735 |
735 |
try:
|
736 |
|
meta = request.backend.get_object_meta(request.user, v_account,
|
|
736 |
meta = request.backend.get_object_meta(request.user_uniq, v_account,
|
737 |
737 |
v_container, v_object)
|
738 |
738 |
except NotAllowedError:
|
739 |
739 |
raise Forbidden('Not allowed')
|
... | ... | |
748 |
748 |
|
749 |
749 |
src_account = smart_unicode(request.META.get('HTTP_X_SOURCE_ACCOUNT'), strings_only=True)
|
750 |
750 |
if not src_account:
|
751 |
|
src_account = request.user
|
|
751 |
src_account = request.user_uniq
|
752 |
752 |
if move_from:
|
753 |
753 |
try:
|
754 |
754 |
src_container, src_name = split_container_object_string(move_from)
|
... | ... | |
825 |
825 |
raise UnprocessableEntity('Object ETag does not match')
|
826 |
826 |
|
827 |
827 |
try:
|
828 |
|
version_id = request.backend.update_object_hashmap(request.user,
|
|
828 |
version_id = request.backend.update_object_hashmap(request.user_uniq,
|
829 |
829 |
v_account, v_container, v_object, size, hashmap, meta,
|
830 |
830 |
True, permissions)
|
831 |
831 |
except NotAllowedError:
|
... | ... | |
842 |
842 |
raise RequestEntityTooLarge('Quota exceeded')
|
843 |
843 |
if public is not None:
|
844 |
844 |
try:
|
845 |
|
request.backend.update_object_public(request.user, v_account,
|
|
845 |
request.backend.update_object_public(request.user_uniq, v_account,
|
846 |
846 |
v_container, v_object, public)
|
847 |
847 |
except NotAllowedError:
|
848 |
848 |
raise Forbidden('Not allowed')
|
... | ... | |
880 |
880 |
meta['hash'] = md5.hexdigest().lower()
|
881 |
881 |
|
882 |
882 |
try:
|
883 |
|
version_id = request.backend.update_object_hashmap(request.user,
|
|
883 |
version_id = request.backend.update_object_hashmap(request.user_uniq,
|
884 |
884 |
v_account, v_container, v_object, size, hashmap, meta, True)
|
885 |
885 |
except NotAllowedError:
|
886 |
886 |
raise Forbidden('Not allowed')
|
... | ... | |
904 |
904 |
|
905 |
905 |
dest_account = smart_unicode(request.META.get('HTTP_DESTINATION_ACCOUNT'), strings_only=True)
|
906 |
906 |
if not dest_account:
|
907 |
|
dest_account = request.user
|
|
907 |
dest_account = request.user_uniq
|
908 |
908 |
dest_path = smart_unicode(request.META.get('HTTP_DESTINATION'), strings_only=True)
|
909 |
909 |
if not dest_path:
|
910 |
910 |
raise BadRequest('Missing Destination header')
|
... | ... | |
917 |
917 |
if request.META.get('HTTP_IF_MATCH') or request.META.get('HTTP_IF_NONE_MATCH'):
|
918 |
918 |
src_version = request.META.get('HTTP_X_SOURCE_VERSION')
|
919 |
919 |
try:
|
920 |
|
meta = request.backend.get_object_meta(request.user, v_account,
|
|
920 |
meta = request.backend.get_object_meta(request.user_uniq, v_account,
|
921 |
921 |
v_container, v_object, src_version)
|
922 |
922 |
except NotAllowedError:
|
923 |
923 |
raise Forbidden('Not allowed')
|
... | ... | |
941 |
941 |
|
942 |
942 |
dest_account = smart_unicode(request.META.get('HTTP_DESTINATION_ACCOUNT'), strings_only=True)
|
943 |
943 |
if not dest_account:
|
944 |
|
dest_account = request.user
|
|
944 |
dest_account = request.user_uniq
|
945 |
945 |
dest_path = smart_unicode(request.META.get('HTTP_DESTINATION'), strings_only=True)
|
946 |
946 |
if not dest_path:
|
947 |
947 |
raise BadRequest('Missing Destination header')
|
... | ... | |
953 |
953 |
# Evaluate conditions.
|
954 |
954 |
if request.META.get('HTTP_IF_MATCH') or request.META.get('HTTP_IF_NONE_MATCH'):
|
955 |
955 |
try:
|
956 |
|
meta = request.backend.get_object_meta(request.user, v_account,
|
|
956 |
meta = request.backend.get_object_meta(request.user_uniq, v_account,
|
957 |
957 |
v_container, v_object)
|
958 |
958 |
except NotAllowedError:
|
959 |
959 |
raise Forbidden('Not allowed')
|
... | ... | |
981 |
981 |
del(meta['Content-Type']) # Do not allow changing the Content-Type.
|
982 |
982 |
|
983 |
983 |
try:
|
984 |
|
prev_meta = request.backend.get_object_meta(request.user, v_account,
|
|
984 |
prev_meta = request.backend.get_object_meta(request.user_uniq, v_account,
|
985 |
985 |
v_container, v_object)
|
986 |
986 |
except NotAllowedError:
|
987 |
987 |
raise Forbidden('Not allowed')
|
... | ... | |
1009 |
1009 |
# Do permissions first, as it may fail easier.
|
1010 |
1010 |
if permissions is not None:
|
1011 |
1011 |
try:
|
1012 |
|
request.backend.update_object_permissions(request.user,
|
|
1012 |
request.backend.update_object_permissions(request.user_uniq,
|
1013 |
1013 |
v_account, v_container, v_object, permissions)
|
1014 |
1014 |
except NotAllowedError:
|
1015 |
1015 |
raise Forbidden('Not allowed')
|
... | ... | |
1021 |
1021 |
raise Conflict('\n'.join(e.data) + '\n')
|
1022 |
1022 |
if public is not None:
|
1023 |
1023 |
try:
|
1024 |
|
request.backend.update_object_public(request.user, v_account,
|
|
1024 |
request.backend.update_object_public(request.user_uniq, v_account,
|
1025 |
1025 |
v_container, v_object, public)
|
1026 |
1026 |
except NotAllowedError:
|
1027 |
1027 |
raise Forbidden('Not allowed')
|
... | ... | |
1029 |
1029 |
raise ItemNotFound('Object does not exist')
|
1030 |
1030 |
if meta or replace:
|
1031 |
1031 |
try:
|
1032 |
|
version_id = request.backend.update_object_meta(request.user,
|
|
1032 |
version_id = request.backend.update_object_meta(request.user_uniq,
|
1033 |
1033 |
v_account, v_container, v_object, meta, replace)
|
1034 |
1034 |
except NotAllowedError:
|
1035 |
1035 |
raise Forbidden('Not allowed')
|
... | ... | |
1050 |
1050 |
raise RangeNotSatisfiable('Invalid Content-Range header')
|
1051 |
1051 |
|
1052 |
1052 |
try:
|
1053 |
|
size, hashmap = request.backend.get_object_hashmap(request.user,
|
|
1053 |
size, hashmap = request.backend.get_object_hashmap(request.user_uniq,
|
1054 |
1054 |
v_account, v_container, v_object)
|
1055 |
1055 |
except NotAllowedError:
|
1056 |
1056 |
raise Forbidden('Not allowed')
|
... | ... | |
1065 |
1065 |
if src_object:
|
1066 |
1066 |
src_account = smart_unicode(request.META.get('HTTP_X_SOURCE_ACCOUNT'), strings_only=True)
|
1067 |
1067 |
if not src_account:
|
1068 |
|
src_account = request.user
|
|
1068 |
src_account = request.user_uniq
|
1069 |
1069 |
src_container, src_name = split_container_object_string(src_object)
|
1070 |
1070 |
src_container = smart_unicode(src_container, strings_only=True)
|
1071 |
1071 |
src_name = smart_unicode(src_name, strings_only=True)
|
1072 |
1072 |
src_version = request.META.get('HTTP_X_SOURCE_VERSION')
|
1073 |
1073 |
try:
|
1074 |
|
src_size, src_hashmap = request.backend.get_object_hashmap(request.user,
|
|
1074 |
src_size, src_hashmap = request.backend.get_object_hashmap(request.user_uniq,
|
1075 |
1075 |
src_account, src_container, src_name, src_version)
|
1076 |
1076 |
except NotAllowedError:
|
1077 |
1077 |
raise Forbidden('Not allowed')
|
... | ... | |
1156 |
1156 |
hashmap = hashmap[:(int((size - 1) / request.backend.block_size) + 1)]
|
1157 |
1157 |
meta.update({'hash': hashmap_hash(request, hashmap)}) # Update ETag.
|
1158 |
1158 |
try:
|
1159 |
|
version_id = request.backend.update_object_hashmap(request.user,
|
|
1159 |
version_id = request.backend.update_object_hashmap(request.user_uniq,
|
1160 |
1160 |
v_account, v_container, v_object, size, hashmap, meta,
|
1161 |
1161 |
replace, permissions)
|
1162 |
1162 |
except NotAllowedError:
|
... | ... | |
1171 |
1171 |
raise RequestEntityTooLarge('Quota exceeded')
|
1172 |
1172 |
if public is not None:
|
1173 |
1173 |
try:
|
1174 |
|
request.backend.update_object_public(request.user, v_account,
|
|
1174 |
request.backend.update_object_public(request.user_uniq, v_account,
|
1175 |
1175 |
v_container, v_object, public)
|
1176 |
1176 |
except NotAllowedError:
|
1177 |
1177 |
raise Forbidden('Not allowed')
|
... | ... | |
1193 |
1193 |
|
1194 |
1194 |
until = get_int_parameter(request.GET.get('until'))
|
1195 |
1195 |
try:
|
1196 |
|
request.backend.delete_object(request.user, v_account, v_container,
|
|
1196 |
request.backend.delete_object(request.user_uniq, v_account, v_container,
|
1197 |
1197 |
v_object, until)
|
1198 |
1198 |
except NotAllowedError:
|
1199 |
1199 |
raise Forbidden('Not allowed')
|