Skip to content
Snippets Groups Projects
Commit baaf58a6 authored by BIRK Renaud's avatar BIRK Renaud
Browse files

feat: API POST /upload

parent 5d80edd8
No related branches found
No related tags found
No related merge requests found
.env
__pycache__
service_account.json
dotenv>=0.9.9
Flask>=2.0.3
flask-cors>=5.0.1
dotenv>=0.9.9
google-api-python-client>=2.161.0
google-auth>=2.38.0
gradio_client>=1.7.0
pydantic>=1.8.2
requests>=2.26.0
import os
from flask import jsonify, Response
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
from google.oauth2 import service_account
class GDriveController:
def __init__(self):
SERVICE_ACCOUNT_FILE = "service_account.json"
SCOPES = ["https://www.googleapis.com/auth/drive.file"]
creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
self.drive_service = build("drive", "v3", credentials=creds)
def post_gdrive(self, local_file_path: str, folder_id: str) -> Response:
if not local_file_path or not folder_id:
return jsonify({"error": "Missing local_file_path or folder_id"}), 400
if not os.path.exists(local_file_path):
return jsonify({"error": "File not found"}), 404
file_metadata = {
"name": os.path.basename(local_file_path),
"parents": [folder_id]
}
media = MediaFileUpload(local_file_path, resumable=True)
file = self.drive_service.files().create(
body=file_metadata,
media_body=media,
fields="id, webViewLink"
).execute()
return jsonify({"file_url": file.get('webViewLink')})
from flask import Blueprint, request
from flask import Blueprint, Response, request
from controllers.gdrive_controller import GDriveController
from controllers.glb_controller import GlbController
from controllers.render_controller import RenderController
from controllers.suggest_controller import SuggestController
gdrive_bp = Blueprint('gdrive', __name__)
glb_bp = Blueprint('glb', __name__)
render_bp = Blueprint('render', __name__)
suggest_bp = Blueprint('suggest', __name__)
gdrive_controller = GDriveController()
glb_controller = GlbController()
render_controller = RenderController()
suggest_controller = SuggestController()
......@@ -14,7 +17,7 @@ suggest_controller = SuggestController()
def setup_routes(app):
@app.route('/glb', methods=['GET'])
# Image to model
def get_glb():
def get_glb() -> Response:
hf_token = request.args.get('hf_token', '', type=str)
base_image_url = request.args.get('base_image_url', type=str)
ss_guidance_strength = request.args.get('ss_guidance_strength', 7.5, type=float)
......@@ -30,9 +33,9 @@ def setup_routes(app):
slat_sampling_steps, multiimage_algo,
mesh_simplify, texture_size)
# Text to image
# Text + Sketch to image
@app.route('/render', methods=['GET'])
def get_render():
def get_render() -> Response:
hf_token = request.args.get('hf_token', '', type=str)
base_image_url = request.args.get('base_image_url', '', type=str)
prompt = request.args.get('prompt', 'A realistic photo of a building', type=str)
......@@ -46,7 +49,7 @@ def setup_routes(app):
# Suggest
@app.route('/suggest', methods=['GET'])
def get_suggest():
def get_suggest() -> Response:
hf_token = request.args.get('hf_token', '', type=str)
message = request.args.get('message', 'Hello!!', type=str)
system_prompt = request.args.get('system_prompt', 'You are a helpful assistant. First recognize the user request and then reply carefully with thinking.', type=str)
......@@ -60,3 +63,11 @@ def setup_routes(app):
temperature, max_new_tokens,
top_k_sampling, repetition_penalty,
top_p_sampling)
# Upload to Google Drive
@app.route('/upload', methods=['POST'])
def post_gdrive() -> Response:
local_file_path = request.form.get('local_file_path', '', type=str)
folder_id = request.form.get('folder_id', '', type=str)
return gdrive_controller.post_gdrive(local_file_path, folder_id)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment