You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.7 KiB

package rtc
import (
"fmt"
"gowebsocket/common"
"gowebsocket/controllers"
"time"
"github.com/gin-gonic/gin"
"github.com/qiniu/api.v7/v7/auth"
)
var manager *Manager
func init() {
accessKey := "dzumJl3gfsMSR3fvfABL4e0kDpo6FJmrlcuTu8TF"
secretKey := "aqWegU2o8tTCe0JtIVfMDdOjC3-jvuv2eWFvKQOm"
fmt.Println("accessKey: secretKey: ", accessKey, secretKey)
mac := auth.New(accessKey, secretKey)
manager = NewManager(mac)
}
// TODO: 获取直播流地址
func GetRoomToken(c *gin.Context) {
if o := c.Request.Header.Get("Origin"); o != "" {
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Allow-Methods", "GET,POST,HEAD,PUT,DELETE,OPTIONS")
c.Writer.Header().Set("Access-Control-Expose-Headers", "Server,Range,Content-Length,Content-Range")
c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin,Range,Accept-Encoding,Referer,Cache-Control,X-Proxy-Authorization,X-Requested-With,Content-Type")
}
q := c.Request.URL.Query()
appID, roomName, userID, Permission := q.Get("app_id"), q.Get("room_name"), q.Get("user_id"), q.Get("permission")
roomAccess := RoomAccess{
AppID: appID,
RoomName: roomName,
UserID: userID,
ExpireAt: time.Now().Unix() + 3600,
Permission: Permission,
}
token, _ := manager.GetRoomToken(roomAccess)
url := fmt.Sprintf("https://rtc.qiniuapi.com/v3/apps/%v/rooms/%v/auth?user=%v&token=%v", roomAccess.AppID, roomAccess.RoomName, roomAccess.UserID, token)
fmt.Println("url: ", url)
data := gin.H{
"token": token,
}
controllers.Response(c, common.OK, "", data)
// url := fmt.Sprintf("https://rtc.qiniuapi.com/v3/apps/%v/rooms/%v/auth?user=%v&token=%v", roomAccess.AppID, roomAccess.RoomName, roomAccess.UserID, token)
}