import struct import time import zlib from functools import wraps from auth0.v3 import Auth0Error from flask import Response, stream_with_context from marshmallow import Schema from auth.config import Auth0ManagementConfig from auth.exceptions import ManagementAPIInvalidResponse from core.http_status import HTTP_401_UNAUTHORIZED, HTTP_429_TOO_MANY_REQUESTS 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).data.values(), ) ) ) def streamer(data): if use_compression: yield b"\037\213\010\000" + struct.pack("