Преглед изворни кода

Support streaming status updates.

Chris Rhodes пре 8 година
родитељ
комит
80c2158605
2 измењених фајлова са 18 додато и 10 уклоњено
  1. 2 0
      structs.go
  2. 16 10
      wsapi.go

+ 2 - 0
structs.go

@@ -253,6 +253,8 @@ type Presence struct {
 // A Game struct holds the name of the "playing .." game for a user
 type Game struct {
 	Name string `json:"name"`
+	Type int    `json:"type"`
+	URL  string `json:"url"`
 }
 
 // A Member stores user information for Guild members.

+ 16 - 10
wsapi.go

@@ -306,13 +306,9 @@ func (s *Session) heartbeat(wsConn *websocket.Conn, listening <-chan interface{}
 	}
 }
 
-type updateStatusGame struct {
-	Name string `json:"name"`
-}
-
 type updateStatusData struct {
-	IdleSince *int              `json:"idle_since"`
-	Game      *updateStatusGame `json:"game"`
+	IdleSince *int  `json:"idle_since"`
+	Game      *Game `json:"game"`
 }
 
 type updateStatusOp struct {
@@ -320,10 +316,12 @@ type updateStatusOp struct {
 	Data updateStatusData `json:"d"`
 }
 
-// UpdateStatus is used to update the authenticated user's status.
-// If idle>0 then set status to idle.  If game>0 then set game.
+// UpdateStatus is used to update the user's status.
+// If idle>0 then set status to idle.
+// If game!="" then set game.
+// If game!="" and url!="" then set the status type to streaming with the URL set.
 // if otherwise, set status to active, and no game.
-func (s *Session) UpdateStatus(idle int, game string) (err error) {
+func (s *Session) UpdateStatus(idle int, game string, url string) (err error) {
 
 	s.log(LogInformational, "called")
 
@@ -339,7 +337,15 @@ func (s *Session) UpdateStatus(idle int, game string) (err error) {
 	}
 
 	if game != "" {
-		usd.Game = &updateStatusGame{game}
+		gameType := 0
+		if url != "" {
+			gameType = 1
+		}
+		usd.Game = &Game{
+			Name: game,
+			Type: gameType,
+			URL:  url,
+		}
 	}
 
 	s.wsMutex.Lock()