From ee171bc563318f9fc7636961321759d2f9e43102 Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Mon, 29 Dec 2025 02:42:29 +0800 Subject: [PATCH] feat(api): add ManagementTokenRequester interface for management token request endpoints --- internal/api/handlers/management/handler.go | 5 ++ sdk/api/management.go | 62 +++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 sdk/api/management.go diff --git a/internal/api/handlers/management/handler.go b/internal/api/handlers/management/handler.go index 39e6b7fd..d3ccbda6 100644 --- a/internal/api/handlers/management/handler.go +++ b/internal/api/handlers/management/handler.go @@ -59,6 +59,11 @@ func NewHandler(cfg *config.Config, configFilePath string, manager *coreauth.Man } } +// NewHandler creates a new management handler instance. +func NewHandlerWithoutConfigFilePath(cfg *config.Config, manager *coreauth.Manager) *Handler { + return NewHandler(cfg, "", manager) +} + // SetConfig updates the in-memory config reference when the server hot-reloads. func (h *Handler) SetConfig(cfg *config.Config) { h.cfg = cfg } diff --git a/sdk/api/management.go b/sdk/api/management.go new file mode 100644 index 00000000..7197c7c9 --- /dev/null +++ b/sdk/api/management.go @@ -0,0 +1,62 @@ +// Package api exposes helpers for embedding CLIProxyAPI. +// +// It wraps internal management handler types so external projects can integrate +// management endpoints without importing internal packages. +package api + +import ( + "github.com/gin-gonic/gin" + internalmanagement "github.com/router-for-me/CLIProxyAPI/v6/internal/api/handlers/management" + coreauth "github.com/router-for-me/CLIProxyAPI/v6/sdk/cliproxy/auth" + "github.com/router-for-me/CLIProxyAPI/v6/sdk/config" +) + +// ManagementTokenRequester exposes a limited subset of management endpoints for requesting tokens. +type ManagementTokenRequester interface { + RequestAnthropicToken(*gin.Context) + RequestGeminiCLIToken(*gin.Context) + RequestCodexToken(*gin.Context) + RequestAntigravityToken(*gin.Context) + RequestQwenToken(*gin.Context) + RequestIFlowToken(*gin.Context) + RequestIFlowCookieToken(*gin.Context) +} + +type managementTokenRequester struct { + handler *internalmanagement.Handler +} + +// NewManagementTokenRequester creates a limited management handler exposing only token request endpoints. +func NewManagementTokenRequester(cfg *config.Config, manager *coreauth.Manager) ManagementTokenRequester { + return &managementTokenRequester{ + handler: internalmanagement.NewHandlerWithoutConfigFilePath(cfg, manager), + } +} + +func (m *managementTokenRequester) RequestAnthropicToken(c *gin.Context) { + m.handler.RequestAnthropicToken(c) +} + +func (m *managementTokenRequester) RequestGeminiCLIToken(c *gin.Context) { + m.handler.RequestGeminiCLIToken(c) +} + +func (m *managementTokenRequester) RequestCodexToken(c *gin.Context) { + m.handler.RequestCodexToken(c) +} + +func (m *managementTokenRequester) RequestAntigravityToken(c *gin.Context) { + m.handler.RequestAntigravityToken(c) +} + +func (m *managementTokenRequester) RequestQwenToken(c *gin.Context) { + m.handler.RequestQwenToken(c) +} + +func (m *managementTokenRequester) RequestIFlowToken(c *gin.Context) { + m.handler.RequestIFlowToken(c) +} + +func (m *managementTokenRequester) RequestIFlowCookieToken(c *gin.Context) { + m.handler.RequestIFlowCookieToken(c) +}