Exemple #1
0
def parse_binary(string=None, fname=None, suffix=None, okext=OKEXT,
                 tryagain=True, **xargs):
    """
    Parse a binary file or string.
    """
    stringbool = bool(string)
    if (not stringbool) and bool(fname) and (get_file_suffixes(fname) in okext):
        return parse_binary_from_file(fname)
    elif fname and (not suffix) and stringbool:
        suffix = auto_unicode_dang_it('.' +
                                      fname.split('.')[-1]).encode('ascii')
    elif (not suffix) and stringbool:
        suffix = guess_ext_from_mime(string)
    else:
        if (suffix not in okext) or (fname and
                                     (get_file_suffixes(fname) not in okext)):
            return None
        else:
            raise ValueError('Did not provide string or fname')

    if suffix.lower() not in okext:
        if not fname:
            fname = ''
        return None
    prsd = parse_binary_from_string(string=string, suffix=suffix)
    if tryagain and not (len(prsd) > 0):
        try:
            extbymime = guess_ext_from_mime(string)
        except KeyError:
            extbymime = None
        if extbymime and (extbymime.lower() in okext):
            try:
                return parse_binary_from_string(string,
                                                suffix=extbymime)
            except ValueError:
                LOG.debug('body len=0, and mime ' +
                          'derived ext resulted in ValueError, giving up.\t' +
                          'Supplied ext:\t' + suffix + '\t' +
                          'Mime derived ext:\t' + str(extbymime) + '\t' +
                          'Filename:\t' + str(fname))
        else:
            pass
    else:
        pass
    return prsd
Exemple #2
0
def parse_binary_from_string(string, suffix=None, **xargs):
    """
    suffix = extension
    """
    if not suffix:
        LOG.debug('Extension not provided, trying guess based on mime time.')
        suffix = guess_ext_from_mime(string)
    return write_and_op_on_tmp(data=string,
                               function=parse_binary_from_file,
                               suffix=suffix)