github.com/qiniu/go-sdk/v7@v7.27.0/examples/rtc/main.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"io"
     7  	"net/http"
     8  	"os"
     9  	"strings"
    10  	"time"
    11  
    12  	"github.com/qiniu/go-sdk/v7/auth"
    13  	"github.com/qiniu/go-sdk/v7/rtc"
    14  )
    15  
    16  var manager *rtc.Manager
    17  
    18  func init() {
    19  	accessKey := os.Getenv("QINIU_ACCESS_KEY")
    20  	secretKey := os.Getenv("QINIU_SECRET_KEY")
    21  
    22  	mac := auth.New(accessKey, secretKey)
    23  	manager = rtc.NewManager(mac)
    24  }
    25  
    26  func getRoomToken(appId, roomName, userID string) (token string, err error) {
    27  	token, err = manager.GetRoomToken(rtc.RoomAccess{AppID: appId, RoomName: roomName, UserID: userID, ExpireAt: time.Now().Unix() + 3600})
    28  	return
    29  }
    30  
    31  func dosomethingbyRoomToken(token string, appId, roomName, userID string) (err error) {
    32  	url := fmt.Sprintf("https://rtc.qiniuapi.com/v3/apps/%v/rooms/%v/auth?user=%v&token=%v", appId, "roomName", "userID", token)
    33  	req, err := http.NewRequest("GET", url, strings.NewReader(""))
    34  	if err != nil {
    35  		return
    36  	}
    37  	res, err := http.DefaultClient.Do(req)
    38  	if err != nil {
    39  		return
    40  	}
    41  	defer res.Body.Close()
    42  	resData, err := io.ReadAll(res.Body)
    43  	if err != nil {
    44  		return
    45  	}
    46  	fmt.Println(string(resData))
    47  	jn, err := json.MarshalIndent(res.Header, "  ", "  ")
    48  	fmt.Println(string(jn))
    49  	return
    50  }
    51  
    52  func createApp() (rtc.App, error) {
    53  	hubName := "hailong"
    54  	appReq := rtc.AppInitConf{Hub: hubName, Title: "gosdk-test", MaxUsers: 3, NoAutoKickUser: true}
    55  	app, err := manager.CreateApp(appReq)
    56  	return app, err
    57  }
    58  
    59  func updateApp(appID string) (rtc.App, error) {
    60  	appInfo := rtc.AppUpdateInfo{}
    61  	mergePublishRtmp := rtc.MergePublishRtmpInfo{}
    62  	mergePublishRtmp.Enable = &(&struct{ x bool }{true}).x
    63  
    64  	appInfo.NoAutoKickUser = &(&struct{ x bool }{false}).x
    65  	appInfo.MergePublishRtmp = &mergePublishRtmp
    66  
    67  	app, err := manager.UpdateApp(appID, appInfo)
    68  	return app, err
    69  }
    70  
    71  func min(a, b int) int {
    72  	if a > b {
    73  		return b
    74  	}
    75  	return a
    76  }
    77  
    78  func main() {
    79  	fmt.Println("\napp := createApp()")
    80  	app, err := createApp()
    81  	if err != nil {
    82  		fmt.Println(err)
    83  		return
    84  	}
    85  
    86  	fmt.Println("\nroomToken(app.AppID)")
    87  	token, err := getRoomToken(app.AppID, "roomName", "userID")
    88  	if err != nil {
    89  		fmt.Println(err)
    90  	}
    91  	if err == nil {
    92  		err = dosomethingbyRoomToken(token, app.AppID, "roomName", "userID")
    93  		if err != nil {
    94  			fmt.Println(err)
    95  		}
    96  	}
    97  
    98  	fmt.Println("\ngetApp(app.AppID)")
    99  	app, err = manager.GetApp(app.AppID)
   100  	if err != nil {
   101  		fmt.Println(err)
   102  	}
   103  	if err == nil {
   104  		j, _ := json.MarshalIndent(app, "  ", "  ")
   105  		fmt.Println(string(j))
   106  	}
   107  
   108  	fmt.Println("\nlistAllUser(app.AppID)")
   109  	rooms, err := manager.ListAllActiveRooms(app.AppID, "l")
   110  	if err != nil {
   111  		fmt.Println(err)
   112  	}
   113  	if err == nil {
   114  		fmt.Printf("Rooms: %v\n", rooms[:min(10, len(rooms))])
   115  	}
   116  
   117  	fmt.Println("\nlistUser(app.AppID)")
   118  	roomQuery, err := manager.ListActiveRooms(app.AppID, "l", 0, 1)
   119  	if err != nil {
   120  		fmt.Println(err)
   121  	}
   122  	if err == nil {
   123  		j, _ := json.MarshalIndent(roomQuery, "  ", "  ")
   124  		fmt.Println(string(j))
   125  	}
   126  
   127  	fmt.Println("\nkickUser(app.AppID)")
   128  	err = manager.KickUser(app.AppID, "roomName", "userID")
   129  	if err != nil {
   130  		fmt.Println(err)
   131  	}
   132  
   133  	fmt.Println("\nupdateApp(app.AppID)")
   134  	app, err = updateApp(app.AppID)
   135  	if err != nil {
   136  		fmt.Println(err)
   137  	}
   138  	if err == nil {
   139  		j, _ := json.MarshalIndent(app, "  ", "  ")
   140  		fmt.Println(string(j))
   141  	}
   142  }