from django.utils.encoding import smart_str
from xml.dom import minidom
+from pithos.lib.filter import parse_filters
+
from pithos.api.faults import (Fault, NotModified, BadRequest, Unauthorized, Forbidden, ItemNotFound, Conflict,
LengthRequired, PreconditionFailed, RequestEntityTooLarge, RangeNotSatisfiable, UnprocessableEntity)
from pithos.api.util import (rename_meta_key, format_header_key, printable_header_dict, get_account_headers,
uri = uri[:uri.find('?')]
response['X-Auth-Token'] = x_auth_key
- response['X-Storage-Url'] = uri + (uri.endswith('/') and '' or '/') + x_auth_user
+ response['X-Storage-Url'] = uri + ('' if uri.endswith('/') else '/') + x_auth_user
return response
@api_method('GET', format_allowed=True)
keys = request.GET.get('meta')
if keys:
- keys = keys.split(',')
- l = [smart_str(x) for x in keys if x.strip() != '']
- keys = [format_header_key('X-Object-Meta-' + x.strip()) for x in l]
+ keys = [smart_str(x.strip()) for x in keys.split(',') if x.strip() != '']
+ included, excluded, opers = parse_filters(keys)
+ keys = []
+ keys += [format_header_key('X-Object-Meta-' + x) for x in included]
+ keys += ['!'+format_header_key('X-Object-Meta-' + x) for x in excluded]
+ keys += ['%s%s%s' % (format_header_key('X-Object-Meta-' + k), o, v) for k, o, v in opers]
else:
keys = []
# itemNotFound (404),
# forbidden (403),
# badRequest (400)
+
meta, permissions, public = get_object_headers(request)
content_type = meta.get('Content-Type')
if content_type: