neko/internal/types/session.go

57 lines
1.3 KiB
Go
Raw Normal View History

package types
2020-11-01 18:39:12 +01:00
import "net/http"
type MemberProfile struct {
2020-11-27 19:59:54 +01:00
ID string
Secret string
Name string
2020-11-25 22:35:54 +01:00
IsAdmin bool
//Enabled bool
2020-11-25 22:35:54 +01:00
//CanControl bool
//CanWatch bool
//ClipboardAccess bool
}
type Session interface {
ID() string
Name() string
Admin() bool
IsHost() bool
Connected() bool
2020-11-27 19:59:54 +01:00
VerifySecret(secret string) bool
2020-10-31 21:46:29 +01:00
SetName(name string)
2020-11-25 18:36:33 +01:00
SetWebSocketPeer(websocket_peer WebSocketPeer)
2020-11-25 20:02:53 +01:00
SetWebSocketConnected(connected bool)
2020-11-25 18:41:40 +01:00
SetWebRTCPeer(webrtc_peer WebRTCPeer)
2020-11-25 20:02:53 +01:00
SetWebRTCConnected(connected bool)
2020-11-01 16:09:48 +01:00
Disconnect(reason string) error
Send(v interface{}) error
SignalAnswer(sdp string) error
}
type SessionManager interface {
2020-11-27 19:59:54 +01:00
Create(id string, profile MemberProfile) Session
2020-11-01 16:09:48 +01:00
Get(id string) (Session, bool)
2020-11-25 22:06:13 +01:00
Delete(id string) error
2020-11-01 16:09:48 +01:00
HasHost() bool
2020-11-01 16:09:48 +01:00
SetHost(host Session)
GetHost() Session
ClearHost()
2020-11-01 16:09:48 +01:00
Admins() []Session
Members() []Session
2020-11-18 20:30:33 +01:00
Broadcast(v interface{}, exclude interface{})
AdminBroadcast(v interface{}, exclude interface{})
2020-11-01 16:09:48 +01:00
2020-10-31 23:03:37 +01:00
OnHost(listener func(session Session))
OnHostCleared(listener func(session Session))
OnCreated(listener func(session Session))
OnConnected(listener func(session Session))
2020-11-01 20:53:25 +01:00
OnDisconnected(listener func(session Session))
2020-11-01 18:39:12 +01:00
// auth
2020-11-01 20:23:09 +01:00
Authenticate(r *http.Request) (Session, error)
}