Revision 6b6b6c1e pithos/api/functions.py
b/pithos/api/functions.py | ||
---|---|---|
46 | 46 |
|
47 | 47 |
from pithos.api.faults import (Fault, NotModified, BadRequest, Unauthorized, Forbidden, ItemNotFound, Conflict, |
48 | 48 |
LengthRequired, PreconditionFailed, RequestEntityTooLarge, RangeNotSatisfiable, UnprocessableEntity) |
49 |
from pithos.api.util import (rename_meta_key, format_header_key, printable_header_dict, get_account_headers,
|
|
50 |
put_account_headers, get_container_headers, put_container_headers, get_object_headers, put_object_headers,
|
|
51 |
update_manifest_meta, update_sharing_meta, update_public_meta, validate_modification_preconditions,
|
|
52 |
validate_matching_preconditions, split_container_object_string, copy_or_move_object,
|
|
53 |
get_int_parameter, get_content_length, get_content_range, socket_read_iterator, SaveToBackendHandler,
|
|
54 |
object_data_response, put_object_block, hashmap_md5, api_method, json_encode_decimal)
|
|
49 |
from pithos.api.util import (json_encode_decimal, rename_meta_key, format_header_key, printable_header_dict,
|
|
50 |
get_account_headers, put_account_headers, get_container_headers, put_container_headers, get_object_headers,
|
|
51 |
put_object_headers, update_manifest_meta, update_sharing_meta, update_public_meta,
|
|
52 |
validate_modification_preconditions, validate_matching_preconditions, split_container_object_string,
|
|
53 |
copy_or_move_object, get_int_parameter, get_content_length, get_content_range, socket_read_iterator,
|
|
54 |
SaveToBackendHandler, object_data_response, put_object_block, hashmap_md5, object_conflict_response, api_method)
|
|
55 | 55 |
from pithos.backends.base import NotAllowedError, QuotaError |
56 | 56 |
|
57 | 57 |
|
... | ... | |
853 | 853 |
except NotAllowedError: |
854 | 854 |
raise Forbidden('Not allowed') |
855 | 855 |
except IndexError, e: |
856 |
raise Conflict('\n'.join(e.data) + '\n')
|
|
856 |
raise Conflict(object_conflict_response(request, e.data))
|
|
857 | 857 |
except NameError: |
858 | 858 |
raise ItemNotFound('Container does not exist') |
859 | 859 |
except ValueError: |
860 | 860 |
raise BadRequest('Invalid sharing header') |
861 | 861 |
except AttributeError, e: |
862 |
raise Conflict('\n'.join(e.data) + '\n')
|
|
862 |
raise Conflict(object_conflict_response(request, e.data))
|
|
863 | 863 |
except QuotaError: |
864 | 864 |
raise RequestEntityTooLarge('Quota exceeded') |
865 | 865 |
if 'ETag' not in meta: |
... | ... | |
919 | 919 |
response['X-Object-Version'] = version_id |
920 | 920 |
return response |
921 | 921 |
|
922 |
@api_method('COPY') |
|
922 |
@api_method('COPY', format_allowed=True)
|
|
923 | 923 |
def object_copy(request, v_account, v_container, v_object): |
924 | 924 |
# Normal Response Codes: 201 |
925 | 925 |
# Error Response Codes: internalServerError (500), |
... | ... | |
956 | 956 |
response['X-Object-Version'] = version_id |
957 | 957 |
return response |
958 | 958 |
|
959 |
@api_method('MOVE') |
|
959 |
@api_method('MOVE', format_allowed=True)
|
|
960 | 960 |
def object_move(request, v_account, v_container, v_object): |
961 | 961 |
# Normal Response Codes: 201 |
962 | 962 |
# Error Response Codes: internalServerError (500), |
... | ... | |
992 | 992 |
response['X-Object-Version'] = version_id |
993 | 993 |
return response |
994 | 994 |
|
995 |
@api_method('POST') |
|
995 |
@api_method('POST', format_allowed=True)
|
|
996 | 996 |
def object_update(request, v_account, v_container, v_object): |
997 | 997 |
# Normal Response Codes: 202, 204 |
998 | 998 |
# Error Response Codes: internalServerError (500), |
... | ... | |
1044 | 1044 |
except ValueError: |
1045 | 1045 |
raise BadRequest('Invalid sharing header') |
1046 | 1046 |
except AttributeError, e: |
1047 |
raise Conflict('\n'.join(e.data) + '\n')
|
|
1047 |
raise Conflict(object_conflict_response(request, e.data))
|
|
1048 | 1048 |
if public is not None: |
1049 | 1049 |
try: |
1050 | 1050 |
request.backend.update_object_public(request.user_uniq, v_account, |
... | ... | |
1190 | 1190 |
except ValueError: |
1191 | 1191 |
raise BadRequest('Invalid sharing header') |
1192 | 1192 |
except AttributeError, e: |
1193 |
raise Conflict('\n'.join(e.data) + '\n')
|
|
1193 |
raise Conflict(object_conflict_response(request, e.data))
|
|
1194 | 1194 |
except QuotaError: |
1195 | 1195 |
raise RequestEntityTooLarge('Quota exceeded') |
1196 | 1196 |
if public is not None: |
Also available in: Unified diff