feat: add official Gemini v1beta API routes

Replace /v1/gemini with proper Gemini API paths:
- POST /v1beta/models/{model}:generateContent (sync)
- POST /v1beta/models/{model}:streamGenerateContent (streaming)

Model is extracted from URL path. Uses axum wildcard
catch-all since colons in path segments are not supported.
This commit is contained in:
Nikketryhard
2026-02-16 21:46:52 -06:00
parent eb4c846b24
commit 34799fa2a9
3 changed files with 293 additions and 183 deletions

View File

@@ -43,7 +43,10 @@ pub fn router(state: Arc<AppState>) -> Router {
"/v1/chat/completions",
post(completions::handle_completions),
)
.route("/v1/gemini", post(gemini::handle_gemini))
.route(
"/v1beta/{*path}",
post(gemini::handle_gemini_v1beta),
)
.route("/v1/models", get(handle_models))
.route("/v1/sessions", get(handle_list_sessions))
.route("/v1/sessions/{id}", delete(handle_delete_session))
@@ -67,7 +70,8 @@ async fn handle_root() -> Json<serde_json::Value> {
"endpoints": [
"/v1/chat/completions",
"/v1/responses",
"/v1/gemini",
"/v1beta/models/{model}:generateContent",
"/v1beta/models/{model}:streamGenerateContent",
"/v1/models",
"/v1/sessions",