antigravity_subscription_service.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package service
  2. import (
  3. "strings"
  4. "github.com/Wei-Shaw/sub2api/internal/pkg/antigravity"
  5. )
  6. const antigravitySubscriptionAbnormal = "abnormal"
  7. // AntigravitySubscriptionResult 表示订阅检测后的规范化结果。
  8. type AntigravitySubscriptionResult struct {
  9. PlanType string
  10. SubscriptionStatus string
  11. SubscriptionError string
  12. }
  13. // NormalizeAntigravitySubscription 从 LoadCodeAssistResponse 提取 plan_type + 异常状态。
  14. // 使用 GetTier()(返回 tier ID)+ TierIDToPlanType 映射。
  15. func NormalizeAntigravitySubscription(resp *antigravity.LoadCodeAssistResponse) AntigravitySubscriptionResult {
  16. if resp == nil {
  17. return AntigravitySubscriptionResult{PlanType: "Free"}
  18. }
  19. tierID := resp.GetTier()
  20. planType := antigravity.TierIDToPlanType(tierID)
  21. if len(resp.IneligibleTiers) > 0 {
  22. if planType == "" || planType == "Free" {
  23. planType = "Abnormal"
  24. }
  25. result := AntigravitySubscriptionResult{
  26. PlanType: planType,
  27. SubscriptionStatus: antigravitySubscriptionAbnormal,
  28. }
  29. if resp.IneligibleTiers[0] != nil {
  30. result.SubscriptionError = strings.TrimSpace(resp.IneligibleTiers[0].ReasonMessage)
  31. }
  32. return result
  33. }
  34. return AntigravitySubscriptionResult{
  35. PlanType: planType,
  36. }
  37. }