mirror of
https://github.com/invariantlabs-ai/invariant-gateway.git
synced 2026-05-19 21:58:05 +02:00
Remove custom compression and rely on starlette_compress to perform the compression as a middleware.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
fastapi==0.115.7
|
||||
httpx==0.28.1
|
||||
uvicorn==0.34.0
|
||||
invariant-sdk
|
||||
invariant-sdk
|
||||
starlette-compress==1.4.0
|
||||
+6
-22
@@ -1,8 +1,6 @@
|
||||
"""Proxy service to forward requests to the OpenAI APIs"""
|
||||
|
||||
import gzip
|
||||
import json
|
||||
from io import BytesIO
|
||||
|
||||
import httpx
|
||||
from fastapi import APIRouter, Depends, Header, HTTPException, Request, Response
|
||||
@@ -84,27 +82,13 @@ async def openai_proxy(
|
||||
status_code=500, detail=FAILED_TO_PUSH_TRACE + str(e)
|
||||
) from e
|
||||
|
||||
# Detect if original request expects gzip encoding
|
||||
if "gzip" in request.headers.get("accept-encoding", "").lower():
|
||||
# Compress the response using gzip
|
||||
gzip_buffer = BytesIO()
|
||||
with gzip.GzipFile(mode="wb", fileobj=gzip_buffer) as gz:
|
||||
gz.write(response.content)
|
||||
compressed_response = gzip_buffer.getvalue()
|
||||
response_headers = dict(response.headers)
|
||||
response_headers.pop("Content-Encoding", None)
|
||||
response_headers.pop("Content-Length", None)
|
||||
|
||||
response_headers = dict(response.headers)
|
||||
response_headers.pop("Content-Encoding", None)
|
||||
response_headers.pop("Content-Length", None)
|
||||
response_headers["Content-Encoding"] = "gzip"
|
||||
response_headers["Content-Length"] = str(len(compressed_response))
|
||||
|
||||
return Response(
|
||||
content=compressed_response,
|
||||
status_code=response.status_code,
|
||||
headers=response_headers,
|
||||
)
|
||||
return Response(
|
||||
content=response.content,
|
||||
content=json.dumps(response.json()),
|
||||
status_code=response.status_code,
|
||||
headers=dict(response.headers),
|
||||
media_type="application/json",
|
||||
headers=response_headers,
|
||||
)
|
||||
|
||||
@@ -4,8 +4,10 @@ import fastapi
|
||||
import uvicorn
|
||||
from routes.anthropic import proxy as anthropic_proxy
|
||||
from routes.open_ai import proxy as open_ai_proxy
|
||||
from starlette_compress import CompressMiddleware
|
||||
|
||||
app = fastapi.FastAPI()
|
||||
app.add_middleware(CompressMiddleware)
|
||||
|
||||
router = fastapi.APIRouter(prefix="/api/v1")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user