diff --git a/README.md b/README.md index 1087a7f..912c7cd 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ X-API-Key: ], "proxy": "socks5://user:pass@host:port", "screen": "1280x920", - "user-agent": "Firefox", + "user_agent": "Firefox", "timeout": 120 } ``` diff --git a/src/main.py b/src/main.py index 6d7c6d9..e77f49f 100644 --- a/src/main.py +++ b/src/main.py @@ -1,13 +1,32 @@ from fastapi import FastAPI +from pydantic import BaseModel + + +class ActionRequest(BaseModel): + type: str + selector: str | None = None + value: str | None = None + timeout: int | None = None + + +class SolveRequest(BaseModel): + url: str + proxy: str + actions: list[ActionRequest] + timeout: int | None = None + screen: str | None = None + user_agent: str | None = None + captcha: str | None = None + app = FastAPI() @app.get("/") async def root(): - return {"message": "Hello World"} + return {"message": "Hello World"} -@app.get("/hello/{name}") -async def say_hello(name: str): - return {"message": f"Hello {name}"} +@app.post("/v1/solve") +async def solve(payload: SolveRequest): + return {"message": payload.model_dump(exclude_none=True)} diff --git a/tests/test_main.http b/tests/test_main.http index a2d81a9..8566871 100644 --- a/tests/test_main.http +++ b/tests/test_main.http @@ -9,3 +9,27 @@ GET http://127.0.0.1:8000/hello/User Accept: application/json ### + +POST http://127.0.0.1:8000/v1/solve +Accept: application/json +Content-Type: application/json +X-API-Key: + + +{ + "captcha": "token", + "url": "https://example.com/login", + "actions": [ + {"type": "fill", "selector": "#email", "value": "user@example.com"}, + {"type": "fill", "selector": "#password", "value": "..."}, + {"type": "mouse_move", "selector": "#submit"}, + {"type": "click", "selector": "#submit"}, + {"type": "wait_for", "selector": ".dashboard", "timeout": 30} + ], + "proxy": "socks5://user:pass@host:port", + "screen": "1280x920", + "user_agent": "Firefox", + "timeout": 120 +} + +###