parsedmarc/__init__.py
def extract_xml(input_):
    """
    Extracts xml from a zip or gzip file at the given path, file-like object,
    or bytes.

    Args:
        input_: A path to a file, a file like object, or bytes

    Returns:
        str: The extracted XML

    """
    if type(input_) == str:
        file_object = open(input_, "rb")
    elif type(input_) == bytes:
        file_object = BytesIO(input_)
    else:
        file_object = input_
    try:
        header = file_object.read(6)
        file_object.seek(0)
        if header.startswith(MAGIC_ZIP):
            _zip = zipfile.ZipFile(file_object)
            xml = _zip.open(_zip.namelist()[0]).read().decode()
        elif header.startswith(MAGIC_GZIP):
            xml = GzipFile(fileobj=file_object).read().decode()
        elif header.startswith(MAGIC_XML):
            xml = file_object.read().decode()
        else:
            file_object.close()
            raise InvalidAggregateReport("Not a valid zip, gzip, or xml file")

        file_object.close()

    except UnicodeDecodeError:
        raise InvalidAggregateReport("File objects must be opened in binary "
                                     "(rb) mode")
    except Exception as error:
        raise InvalidAggregateReport(
            "Invalid archive file: {0}".format(error.__str__()))

    return xml
def extract_xml(input_):
    """
    Extracts xml from a zip or gzip file at the given path, file-like object,
    or bytes.

    Args:
        input_: A path to a file, a file like object, or bytes

    Returns:
        str: The extracted XML

    """
    if type(input_) == str:
        file_object = open(input_, "rb")
    elif type(input_) == bytes:
        file_object = BytesIO(input_)
    else:
        file_object = input_
    try:
        header = file_object.read(6)
        file_object.seek(0)
        if header.startswith(MAGIC_ZIP):
            _zip = zipfile.ZipFile(file_object)
            xml = _zip.open(_zip.namelist()[0]).read().decode()
        elif header.startswith(MAGIC_GZIP):
            xml = GzipFile(fileobj=file_object).read().decode()
        elif header.startswith(MAGIC_XML):
            xml = file_object.read().decode()
        else:
            file_object.close()
            raise InvalidAggregateReport("Not a valid zip, gzip, or xml file")

        file_object.close()

    except UnicodeDecodeError:
        raise InvalidAggregateReport("File objects must be opened in binary "
                                     "(rb) mode")
    except Exception as error:
        raise InvalidAggregateReport(
            "Invalid archive file: {0}".format(error.__str__()))

    return xml
def extract_xml ( input_ ) : if type ( input_ ) == str : file_object = open ( input_ , "rb" ) elif type ( input_ ) == bytes : file_object = BytesIO ( input_ ) else : file_object = input_ try : header = file_object . read ( 6 ) file_object . seek ( 0 ) if header . startswith ( MAGIC_ZIP ) : _zip = zipfile . ZipFile ( file_object ) xml = _zip . open ( _zip . namelist ( ) [ 0 ] ) . read ( ) . decode ( ) elif header . startswith ( MAGIC_GZIP ) : xml = GzipFile ( fileobj = file_object ) . read ( ) . decode ( ) elif header . startswith ( MAGIC_XML ) : xml = file_object . read ( ) . decode ( ) else : file_object . close ( ) raise InvalidAggregateReport ( "Not a valid zip, gzip, or xml file" ) file_object . close ( ) except UnicodeDecodeError : raise InvalidAggregateReport ( "File objects must be opened in binary " "(rb) mode" ) except Exception as error : raise InvalidAggregateReport ( "Invalid archive file: {0}" . format ( error . __str__ ( ) ) ) return xml
Extracts xml from a zip or gzip file at the given path, file-like object,
    or bytes.

    Args:
        input_: A path to a file, a file like object, or bytes

    Returns:
        str: The extracted XML
Extracts xml from a zip or gzip file at the given path file - like object or bytes .