import struct import time import zlib from auth0 import Auth0Error from flask import Response, stream_with_context from functools import wraps from marshmallow import Schema from src.config.auth import Auth0ManagementConfig from src.constants.http_status import HTTP_401_UNAUTHORIZED, HTTP_429_TOO_MANY_REQUESTS from src.legacy.auth.exceptions import ManagementAPIInvalidResponse auth0_config = Auth0ManagementConfig() def streaming(output_schema: Schema, use_compression: bool = True) -> Response: def decorator(func): @wraps(func) def wrapper(*args, **kwargs): def compress(compressor, item, crc, length): item = item.encode() chunk = compressor.compress(item) crc = zlib.crc32(item, crc) & 0xFFFFFFFF length += len(item) return chunk, crc, length def get_values(item: dict): return "," + ",".join( list( map( lambda s: str(s) if isinstance(s, int) else '"' + str(s) + '"', output_schema.dump(item).values(), ) ) ) def streamer(data): if use_compression: yield b"\037\213\010\000" + struct.pack("