2020-10-23 03:54:50 +13:00
|
|
|
package types
|
|
|
|
|
2021-02-06 06:14:45 +13:00
|
|
|
import "net/http"
|
2020-11-02 06:39:12 +13:00
|
|
|
|
2020-11-26 10:07:05 +13:00
|
|
|
type MemberProfile struct {
|
2020-12-09 03:14:20 +13:00
|
|
|
Secret string `json:"secret,omitempty"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
IsAdmin bool `json:"is_admin"`
|
|
|
|
CanLogin bool `json:"can_login"`
|
|
|
|
CanConnect bool `json:"can_connect"`
|
|
|
|
CanWatch bool `json:"can_watch"`
|
|
|
|
CanHost bool `json:"can_host"`
|
|
|
|
CanAccessClipboard bool `json:"can_access_clipboard"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type MemberState struct {
|
|
|
|
IsConnected bool `json:"is_connected"`
|
|
|
|
IsWatching bool `json:"is_watching"`
|
2020-11-26 10:07:05 +13:00
|
|
|
}
|
|
|
|
|
2020-12-06 12:21:09 +13:00
|
|
|
type MembersDatabase interface {
|
2020-12-07 06:11:11 +13:00
|
|
|
Connect() error
|
|
|
|
Disconnect() error
|
|
|
|
|
2021-02-15 02:40:17 +13:00
|
|
|
Insert(id string, profile MemberProfile) error
|
|
|
|
Update(id string, profile MemberProfile) error
|
|
|
|
Delete(id string) error
|
2020-12-07 06:11:11 +13:00
|
|
|
Select() (map[string]MemberProfile, error)
|
2020-12-06 12:21:09 +13:00
|
|
|
}
|
|
|
|
|
2020-10-23 03:54:50 +13:00
|
|
|
type Session interface {
|
|
|
|
ID() string
|
2020-12-03 05:29:38 +13:00
|
|
|
|
2020-12-09 03:37:48 +13:00
|
|
|
// profile
|
2020-12-03 05:29:38 +13:00
|
|
|
VerifySecret(secret string) bool
|
2020-10-23 03:54:50 +13:00
|
|
|
Name() string
|
2020-12-03 04:49:51 +13:00
|
|
|
IsAdmin() bool
|
2020-12-03 05:29:38 +13:00
|
|
|
CanLogin() bool
|
|
|
|
CanConnect() bool
|
|
|
|
CanWatch() bool
|
|
|
|
CanHost() bool
|
|
|
|
CanAccessClipboard() bool
|
2020-12-09 03:37:48 +13:00
|
|
|
GetProfile() MemberProfile
|
2020-12-03 05:29:38 +13:00
|
|
|
|
2020-12-09 03:37:48 +13:00
|
|
|
// state
|
2020-11-01 09:20:42 +13:00
|
|
|
IsHost() bool
|
2020-12-03 04:49:51 +13:00
|
|
|
IsConnected() bool
|
2020-12-07 07:02:33 +13:00
|
|
|
IsWatching() bool
|
2020-12-09 03:37:48 +13:00
|
|
|
GetState() MemberState
|
2020-12-03 05:29:38 +13:00
|
|
|
|
2020-12-09 03:37:48 +13:00
|
|
|
// websocket
|
2020-11-26 06:36:33 +13:00
|
|
|
SetWebSocketPeer(websocket_peer WebSocketPeer)
|
2020-11-26 08:02:53 +13:00
|
|
|
SetWebSocketConnected(connected bool)
|
2020-12-03 05:29:38 +13:00
|
|
|
Send(v interface{}) error
|
2020-12-09 03:37:48 +13:00
|
|
|
Disconnect(reason string) error
|
2020-12-03 05:29:38 +13:00
|
|
|
|
2020-12-09 03:37:48 +13:00
|
|
|
// webrtc
|
2020-11-26 06:41:40 +13:00
|
|
|
SetWebRTCPeer(webrtc_peer WebRTCPeer)
|
2020-11-26 08:02:53 +13:00
|
|
|
SetWebRTCConnected(connected bool)
|
2021-02-06 06:14:45 +13:00
|
|
|
GetWebRTCPeer() WebRTCPeer
|
2020-10-23 03:54:50 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
type SessionManager interface {
|
2020-12-07 06:11:11 +13:00
|
|
|
Connect() error
|
|
|
|
Disconnect() error
|
|
|
|
|
2020-12-06 11:05:46 +13:00
|
|
|
Create(id string, profile MemberProfile) (Session, error)
|
2020-12-06 10:18:45 +13:00
|
|
|
Update(id string, profile MemberProfile) error
|
2020-11-02 04:09:48 +13:00
|
|
|
Get(id string) (Session, bool)
|
2020-11-26 10:06:13 +13:00
|
|
|
Delete(id string) error
|
2020-11-02 04:09:48 +13:00
|
|
|
|
|
|
|
SetHost(host Session)
|
2020-11-01 11:53:19 +13:00
|
|
|
GetHost() Session
|
2020-10-23 03:54:50 +13:00
|
|
|
ClearHost()
|
2020-11-02 04:09:48 +13:00
|
|
|
|
2020-12-03 05:36:06 +13:00
|
|
|
HasConnectedMembers() bool
|
2020-11-02 04:09:48 +13:00
|
|
|
Members() []Session
|
2020-11-19 08:30:33 +13:00
|
|
|
Broadcast(v interface{}, exclude interface{})
|
2020-11-19 09:34:39 +13:00
|
|
|
AdminBroadcast(v interface{}, exclude interface{})
|
2020-11-02 04:09:48 +13:00
|
|
|
|
2020-11-01 11:03:37 +13:00
|
|
|
OnHost(listener func(session Session))
|
|
|
|
OnHostCleared(listener func(session Session))
|
2020-12-03 06:59:32 +13:00
|
|
|
OnCreated(listener func(session Session))
|
|
|
|
OnDeleted(listener func(session Session))
|
2020-11-01 11:03:37 +13:00
|
|
|
OnConnected(listener func(session Session))
|
2020-11-02 08:53:25 +13:00
|
|
|
OnDisconnected(listener func(session Session))
|
2020-12-04 04:10:52 +13:00
|
|
|
OnProfileChanged(listener func(session Session))
|
|
|
|
OnStateChanged(listener func(session Session))
|
2020-12-03 05:29:38 +13:00
|
|
|
|
2020-12-02 23:24:20 +13:00
|
|
|
ImplicitHosting() bool
|
2020-11-02 06:39:12 +13:00
|
|
|
|
2021-01-30 10:22:14 +13:00
|
|
|
AuthenticateRequest(r *http.Request) (Session, error)
|
|
|
|
Authenticate(id string, secret string) (Session, error)
|
2020-10-23 03:54:50 +13:00
|
|
|
}
|