Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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