- return dict([(format_meta_key(k[5:]), v) for k, v in request.META.iteritems() if k.startswith(prefix) and len(k) > len(prefix)])
-
-def get_account_meta(request):
- """Get metadata from an account request."""
-
- meta = get_meta_prefix(request, 'X-Account-Meta-')
- return meta
-
-def put_account_meta(response, meta):
- """Put metadata in an account response."""
-
- response['X-Account-Container-Count'] = meta['count']
- response['X-Account-Bytes-Used'] = meta['bytes']
- if 'modified' in meta:
- response['Last-Modified'] = http_date(int(meta['modified']))
+ # TODO: Document or remove '~' replacing.
+ return dict([(format_header_key(k[5:]), v.replace('~', '')) for k, v in request.META.iteritems() if k.startswith(prefix) and len(k) > len(prefix)])
+
+def get_account_headers(request):
+ meta = get_header_prefix(request, 'X-Account-Meta-')
+ groups = {}
+ for k, v in get_header_prefix(request, 'X-Account-Group-').iteritems():
+ n = k[16:].lower()
+ if '-' in n or '_' in n:
+ raise BadRequest('Bad characters in group name')
+ groups[n] = v.replace(' ', '').split(',')
+ if '' in groups[n]:
+ groups[n].remove('')
+ return meta, groups
+
+def put_account_headers(response, meta, groups):
+ if 'count' in meta:
+ response['X-Account-Container-Count'] = meta['count']
+ if 'bytes' in meta:
+ response['X-Account-Bytes-Used'] = meta['bytes']
+ response['Last-Modified'] = http_date(int(meta['modified']))