Skip to content

Commit

Permalink
add an undo endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
Laurent2916 authored and deltheil committed Jan 29, 2025
1 parent 9692644 commit 1156140
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
7 changes: 7 additions & 0 deletions examples/chatgpt/src/chatgpt_bridge/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from chatgpt_bridge.skills.object_eraser import _object_eraser
from chatgpt_bridge.skills.object_recolor import _object_recolor
from chatgpt_bridge.skills.object_shadow import _object_shadow
from chatgpt_bridge.skills.undo import _undo
from chatgpt_bridge.utils import json_error, require_basic_auth_token

ctx = EditorAPIContext(
Expand Down Expand Up @@ -122,3 +123,9 @@ async def object_recolor() -> Any:
@require_basic_auth_token(CHATGPT_AUTH_TOKEN)
async def object_shadow() -> Any:
return await _object_shadow(ctx, request)


@app.post("/undo")
@require_basic_auth_token(CHATGPT_AUTH_TOKEN)
async def undo() -> Any:
return await _undo(ctx, request)
44 changes: 44 additions & 0 deletions examples/chatgpt/src/chatgpt_bridge/skills/undo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from finegrain import EditorAPIContext
from pydantic import BaseModel
from quart import Request, Response, jsonify
from quart import current_app as app

from chatgpt_bridge.utils import json_error


class UndoParams(BaseModel):
stateid: str


class UndoOutput(BaseModel):
openaiFileResponse: list[str] # noqa: N815
stateid_output_img: str


async def _undo(ctx: EditorAPIContext, request: Request) -> Response:
# parse input data
input_json = await request.get_json()
app.logger.debug(f"json payload: {input_json}")
input_data = UndoParams(**input_json)
app.logger.debug(f"parsed payload: {input_data}")

# check the stateid
if not input_data.stateid:
return json_error("stateid is required", 400)

# queue state/get-public-link
stateid_link = await ctx.get_public_link(input_data.stateid)
app.logger.debug(f"stateid_link: {stateid_link}")

# get the public link
metadata_link = await ctx.get_meta(stateid_link)
app.logger.debug(f"metadata_link: {metadata_link}")

# build output response
output_data = UndoOutput(
openaiFileResponse=[metadata_link["public_link"]],
stateid_output_img=input_data.stateid,
)
app.logger.debug(f"output payload: {output_data}")
output_response = jsonify(output_data.model_dump())
return output_response

0 comments on commit 1156140

Please sign in to comment.