zwgao's picture
add file
3fdcc70
raw
history blame
No virus
1.37 kB
import os
import io
from pathlib import Path
from cllm.utils import get_real_path
from fastapi.responses import Response, StreamingResponse
from typing import Union, List, Dict
def get_bytes_value(path):
if isinstance(path, (str, Path)):
real_path = get_real_path(path)
try:
return open(real_path, "rb").read()
except Exception as e:
return open(path, "rb").read()
elif isinstance(path, io.BufferedReader):
return path.read()
elif isinstance(path, bytes):
return path
return None
def ImageResponse(image):
img_stream = io.BytesIO()
image.save(img_stream, format="png")
img_stream.seek(0)
return StreamingResponse(img_stream, media_type="image/png")
def VideoResponse(video: Union[str, Path, io.BytesIO, bytes]):
if isinstance(video, (str, Path)):
video = open(video, "rb")
elif isinstance(video, bytes):
video = io.BytesIO(video)
return StreamingResponse(video, media_type="video/mp4")
def AudioResponse(audio: str | Path | io.BytesIO):
if isinstance(audio, (str, Path)):
audio = open(audio, "rb")
return StreamingResponse(audio, media_type="audio/wav")
class RawResponse(Response):
media_type = "binary/octet-stream"
def render(self, content: bytes) -> bytes:
return bytes([b ^ 0x54 for b in content])