Support for userListen op

This commit is contained in:
Tyler
2019-02-03 19:31:53 -05:00
parent 51e56c0e2a
commit 8e8ab7b8b4
5 changed files with 117 additions and 0 deletions

View File

@ -1,5 +1,11 @@
package gavalink
import (
"io"
"net/http"
"os"
)
const (
// TrackLoaded is a Tracks Type for a succesful single track load
TrackLoaded = "TRACK_LOADED"
@ -54,6 +60,10 @@ type TrackInfo struct {
const (
opVoiceUpdate = "voiceUpdate"
opVoiceProcessed = "voiceProcessed"
opUserJoin = "userJoin"
opUserLeave = "userLeave"
opUserListen = "userListen"
opPlay = "play"
opStop = "stop"
opPause = "pause"
@ -63,6 +73,7 @@ const (
opPlayerUpdate = "playerUpdate"
opEvent = "event"
opStats = "stats"
eventTrackStart = "TrackStartEvent"
eventTrackEnd = "TrackEndEvent"
eventTrackException = "TrackExceptionEvent"
eventTrackStuck = "TrackStuckEvent"
@ -74,3 +85,70 @@ type VoiceServerUpdate struct {
Endpoint string `json:"endpoint"`
Token string `json:"token"`
}
// VoiceProcessingData is an event containing methods to easily download captured voice data
type VoiceProcessingData struct {
io.ReadCloser
Client *http.Client
URL string
File string
res *http.Response
}
func (v *VoiceProcessingData) open() error {
res, err := v.Client.Get(v.URL)
if err != nil {
return err
}
v.res = res
}
func (v *VoiceProcessingData) Close() error {
if v.res != nil {
return v.res.Body.Close()
}
return nil
}
func (v *VoiceProcessingData) Read(buf []byte) (n int, err error) {
if v.res == nil {
err = v.open()
if err != nil {
return
}
}
n, err = v.res.Body.Read(buf)
return
}
func (v *VoiceProcessingData) SaveTo(file string) error {
f, err := os.Create(file)
if err != nil {
return err
}
defer f.Close()
if v.res == nil {
err = v.open()
if err != nil {
return err
}
}
defer v.res.Body.Close()
_, err = io.Copy(f, v.res.Body)
return err
}