jayparmr's picture
Upload folder using huggingface_hub
a3d6c18
from typing import Union
from fastapi import Header
from fastapi.responses import Response, JSONResponse
from carvekit.web.deps import config
def Authenticate(x_api_key: Union[str, None] = Header(None)) -> Union[bool, str]:
if x_api_key in config.auth.allowed_tokens:
return "allowed"
elif x_api_key == config.auth.admin_token:
return "admin"
elif config.auth.auth is False:
return "allowed"
else:
return False
def handle_response(response, original_image) -> Response:
"""
Response handler from TaskQueue
:param response: TaskQueue response
:param original_image: Original PIL image
:return: Complete flask response
"""
response_object = None
if isinstance(response, dict):
if response["type"] == "jpg":
response_object = Response(
content=response["data"][0].read(), media_type="image/jpeg"
)
elif response["type"] == "png":
response_object = Response(
content=response["data"][0].read(), media_type="image/png"
)
elif response["type"] == "zip":
response_object = Response(
content=response["data"][0], media_type="application/zip"
)
response_object.headers[
"Content-Disposition"
] = "attachment; filename='no-bg.zip'"
# Add headers to output result
response_object.headers["X-Credits-Charged"] = "0"
response_object.headers["X-Type"] = "other" # TODO Make support for this
response_object.headers["X-Max-Width"] = str(original_image.size[0])
response_object.headers["X-Max-Height"] = str(original_image.size[1])
response_object.headers[
"X-Ratelimit-Limit"
] = "500" # TODO Make ratelimit support
response_object.headers["X-Ratelimit-Remaining"] = "500"
response_object.headers["X-Ratelimit-Reset"] = "1"
response_object.headers["X-Width"] = str(response["data"][1][0])
response_object.headers["X-Height"] = str(response["data"][1][1])
else:
response = JSONResponse(content=response[0])
response.headers["X-Credits-Charged"] = "0"
return response_object