(self)
| 476 | log(f"GET error: {e}") |
| 477 | |
| 478 | def do_POST(self): |
| 479 | try: |
| 480 | if self.path.startswith("/v1/") and not self._authorized(): |
| 481 | self.send_json({"error": {"message": "invalid api key"}}, 401) |
| 482 | return |
| 483 | length = int(self.headers.get("Content-Length", 0)) |
| 484 | body = self.rfile.read(length) if length else b"" |
| 485 | if self.path == "/v1/chat/completions": |
| 486 | self.handle_chat(body) |
| 487 | elif self.path == "/v1/responses": |
| 488 | self.handle_responses(body) |
| 489 | elif ":generateContent" in self.path: |
| 490 | self._handle_google_generate(body, stream=False) |
| 491 | elif ":streamGenerateContent" in self.path: |
| 492 | self._handle_google_generate(body, stream=True) |
| 493 | else: |
| 494 | self.send_json({"error": "not found"}, 404) |
| 495 | except (BrokenPipeError, ConnectionResetError): |
| 496 | pass |
| 497 | except Exception as e: |
| 498 | log(f"POST error: {e}") |
| 499 | try: |
| 500 | self.send_json({"error": {"message": str(e)}}, 500) |
| 501 | except: |
| 502 | pass |
| 503 | |
| 504 | def _resolve_model(self, model_name): |
| 505 | think_override = None |
nothing calls this directly
no test coverage detected