mirror of
				https://github.com/songquanpeng/one-api.git
				synced 2025-11-04 07:43:41 +08:00 
			
		
		
		
	feat: support API /dashboard/billing/credit_grants now (#45)
				
					
				
			This commit is contained in:
		@@ -75,6 +75,30 @@ func GetToken(c *gin.Context) {
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetTokenStatus(c *gin.Context) {
 | 
			
		||||
	tokenId := c.GetInt("token_id")
 | 
			
		||||
	userId := c.GetInt("id")
 | 
			
		||||
	token, err := model.GetTokenByIds(tokenId, userId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		c.JSON(http.StatusOK, gin.H{
 | 
			
		||||
			"success": false,
 | 
			
		||||
			"message": err.Error(),
 | 
			
		||||
		})
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	expiredAt := token.ExpiredTime
 | 
			
		||||
	if expiredAt == -1 {
 | 
			
		||||
		expiredAt = 0
 | 
			
		||||
	}
 | 
			
		||||
	c.JSON(http.StatusOK, gin.H{
 | 
			
		||||
		"object":          "credit_summary",
 | 
			
		||||
		"total_granted":   token.RemainQuota,
 | 
			
		||||
		"total_used":      0, // not supported currently
 | 
			
		||||
		"total_available": token.RemainQuota,
 | 
			
		||||
		"expires_at":      expiredAt * 1000,
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func AddToken(c *gin.Context) {
 | 
			
		||||
	isAdmin := c.GetInt("role") >= common.RoleAdminUser
 | 
			
		||||
	token := model.Token{}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								router/dashboard.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								router/dashboard.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
package router
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/gin-contrib/gzip"
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
	"one-api/controller"
 | 
			
		||||
	"one-api/middleware"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func SetDashboardRouter(router *gin.Engine) {
 | 
			
		||||
	apiRouter := router.Group("/dashboard")
 | 
			
		||||
	apiRouter.Use(gzip.Gzip(gzip.DefaultCompression))
 | 
			
		||||
	apiRouter.Use(middleware.GlobalAPIRateLimit())
 | 
			
		||||
	apiRouter.Use(middleware.TokenAuth())
 | 
			
		||||
	{
 | 
			
		||||
		apiRouter.GET("/billing/credit_grants", controller.GetTokenStatus)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -7,6 +7,7 @@ import (
 | 
			
		||||
 | 
			
		||||
func SetRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) {
 | 
			
		||||
	SetApiRouter(router)
 | 
			
		||||
	SetDashboardRouter(router)
 | 
			
		||||
	SetRelayRouter(router)
 | 
			
		||||
	setWebRouter(router, buildFS, indexPage)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -35,9 +35,4 @@ func SetRelayRouter(router *gin.Engine) {
 | 
			
		||||
		relayV1Router.DELETE("/models/:model", controller.RelayNotImplemented)
 | 
			
		||||
		relayV1Router.POST("/moderations", controller.RelayNotImplemented)
 | 
			
		||||
	}
 | 
			
		||||
	relayDashboardRouter := router.Group("/dashboard") // TODO: return system's own token info
 | 
			
		||||
	relayDashboardRouter.Use(middleware.TokenAuth(), middleware.Distribute())
 | 
			
		||||
	{
 | 
			
		||||
		relayDashboardRouter.Any("/*path", controller.Relay)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user