| package admin |
|
|
| import ( |
| "github.com/Wei-Shaw/sub2api/internal/pkg/response" |
| "github.com/Wei-Shaw/sub2api/internal/service" |
| "github.com/gin-gonic/gin" |
| ) |
|
|
| type AntigravityOAuthHandler struct { |
| antigravityOAuthService *service.AntigravityOAuthService |
| } |
|
|
| func NewAntigravityOAuthHandler(antigravityOAuthService *service.AntigravityOAuthService) *AntigravityOAuthHandler { |
| return &AntigravityOAuthHandler{antigravityOAuthService: antigravityOAuthService} |
| } |
|
|
| type AntigravityGenerateAuthURLRequest struct { |
| ProxyID *int64 `json:"proxy_id"` |
| } |
|
|
| |
| |
| func (h *AntigravityOAuthHandler) GenerateAuthURL(c *gin.Context) { |
| var req AntigravityGenerateAuthURLRequest |
| if err := c.ShouldBindJSON(&req); err != nil { |
| response.BadRequest(c, "请求无效: "+err.Error()) |
| return |
| } |
|
|
| result, err := h.antigravityOAuthService.GenerateAuthURL(c.Request.Context(), req.ProxyID) |
| if err != nil { |
| response.InternalError(c, "生成授权链接失败: "+err.Error()) |
| return |
| } |
|
|
| response.Success(c, result) |
| } |
|
|
| type AntigravityExchangeCodeRequest struct { |
| SessionID string `json:"session_id" binding:"required"` |
| State string `json:"state" binding:"required"` |
| Code string `json:"code" binding:"required"` |
| ProxyID *int64 `json:"proxy_id"` |
| } |
|
|
| |
| |
| func (h *AntigravityOAuthHandler) ExchangeCode(c *gin.Context) { |
| var req AntigravityExchangeCodeRequest |
| if err := c.ShouldBindJSON(&req); err != nil { |
| response.BadRequest(c, "请求无效: "+err.Error()) |
| return |
| } |
|
|
| tokenInfo, err := h.antigravityOAuthService.ExchangeCode(c.Request.Context(), &service.AntigravityExchangeCodeInput{ |
| SessionID: req.SessionID, |
| State: req.State, |
| Code: req.Code, |
| ProxyID: req.ProxyID, |
| }) |
| if err != nil { |
| response.BadRequest(c, "Token 交换失败: "+err.Error()) |
| return |
| } |
|
|
| response.Success(c, tokenInfo) |
| } |
|
|
| |
| type AntigravityRefreshTokenRequest struct { |
| RefreshToken string `json:"refresh_token" binding:"required"` |
| ProxyID *int64 `json:"proxy_id"` |
| } |
|
|
| |
| |
| func (h *AntigravityOAuthHandler) RefreshToken(c *gin.Context) { |
| var req AntigravityRefreshTokenRequest |
| if err := c.ShouldBindJSON(&req); err != nil { |
| response.BadRequest(c, "请求无效: "+err.Error()) |
| return |
| } |
|
|
| tokenInfo, err := h.antigravityOAuthService.ValidateRefreshToken(c.Request.Context(), req.RefreshToken, req.ProxyID) |
| if err != nil { |
| response.ErrorFrom(c, err) |
| return |
| } |
|
|
| response.Success(c, tokenInfo) |
| } |
|
|