def extract_headers_meta(headers, check=True): """ Extract chunk metadata from a dictionary of rawx response headers. :param headers: a dictionary of headers, as returned by a HEAD or GET request to a rawx service. :keyword check: if True (the default), raise FaultyChunk if one or several mandatory response headers are missing. :returns: a dictionary of chunk metadata. """ meta = {} missing = list() for mkey, hkey in CHUNK_HEADERS.items(): try: if mkey == 'full_path': meta[mkey] = headers[hkey] else: meta[mkey] = unquote(headers[hkey]) except KeyError: if check and mkey not in CHUNK_XATTR_KEYS_OPTIONAL: missing.append(exc.MissingAttribute(mkey)) if check and missing: raise exc.FaultyChunk(*missing) mtime = meta.get('chunk_mtime') if mtime: meta['chunk_mtime'] = mktime(parsedate(mtime)) return meta
def extract_headers_meta(headers): meta = {} for k in CHUNK_HEADERS.iterkeys(): try: if k == 'full_path': meta[k] = headers[CHUNK_HEADERS[k]] else: meta[k] = unquote(headers[CHUNK_HEADERS[k]]) except KeyError as err: if k not in chunk_xattr_keys_optional: raise err return meta
def extract_headers_meta(headers): meta = {} for k in CHUNK_HEADERS.iterkeys(): try: meta[k] = headers[CHUNK_HEADERS[k]] except KeyError as err: if k not in chunk_xattr_keys_optional: raise err if 'full_path' in meta: meta['full_path'] = meta['full_path'].split(',') return meta