mirror of
https://github.com/AynaLivePlayer/liveroom-sdk.git
synced 2026-03-15 14:03:18 +08:00
update interface
This commit is contained in:
@@ -13,7 +13,7 @@ const apiServer = "http://0.0.0.0:9090"
|
||||
|
||||
func main() {
|
||||
provider := openblive.NewOpenBLiveClientProvider(apiServer, 1661006726438)
|
||||
room, _ := provider(liveroom.LiveRoomConfig{
|
||||
room, _ := provider.CreateLiveRoom(liveroom.LiveRoomConfig{
|
||||
Room: "YOUR_CLIENT_KEY",
|
||||
Provider: openblive.ProviderName,
|
||||
})
|
||||
|
||||
@@ -13,7 +13,7 @@ const apiServer = "http://0.0.0.0:9090"
|
||||
|
||||
func main() {
|
||||
provider := webdm.NewWebDanmuClientProvider(apiServer)
|
||||
room, _ := provider(liveroom.LiveRoomConfig{
|
||||
room, _ := provider.CreateLiveRoom(liveroom.LiveRoomConfig{
|
||||
Room: "7777",
|
||||
Provider: webdm.ProviderName,
|
||||
})
|
||||
|
||||
28
liveroom.go
28
liveroom.go
@@ -5,7 +5,33 @@ type LiveRoomConfig struct {
|
||||
Room string `json:"room"` // RoomID is the unique identifier of the live room
|
||||
}
|
||||
|
||||
type LiveRoomProvider func(cfg LiveRoomConfig) (LiveRoom, error)
|
||||
func (l *LiveRoomConfig) Identifier() string {
|
||||
return l.Provider + "_" + l.Room
|
||||
}
|
||||
|
||||
type ILiveRoomProvider interface {
|
||||
GetName() string
|
||||
GetDescription() string
|
||||
CreateLiveRoom(cfg LiveRoomConfig) (LiveRoom, error)
|
||||
}
|
||||
|
||||
type LiveRoomProvider struct {
|
||||
Name string
|
||||
Description string
|
||||
Func func(cfg LiveRoomConfig) (LiveRoom, error)
|
||||
}
|
||||
|
||||
func (l *LiveRoomProvider) GetName() string {
|
||||
return l.Name
|
||||
}
|
||||
|
||||
func (l *LiveRoomProvider) GetDescription() string {
|
||||
return l.Name
|
||||
}
|
||||
|
||||
func (l *LiveRoomProvider) CreateLiveRoom(cfg LiveRoomConfig) (LiveRoom, error) {
|
||||
return l.Func(cfg)
|
||||
}
|
||||
|
||||
type UserMedal struct {
|
||||
Name string `json:"name"`
|
||||
|
||||
@@ -20,15 +20,19 @@ type OpenBLiveClient struct {
|
||||
onStatusChange func(connected bool)
|
||||
}
|
||||
|
||||
func NewOpenBLiveClientProvider(apiServer string, appId int64) liveroom.LiveRoomProvider {
|
||||
return func(cfg liveroom.LiveRoomConfig) (liveroom.LiveRoom, error) {
|
||||
if cfg.Provider != ProviderName {
|
||||
return nil, errors.New("invalid provider name")
|
||||
}
|
||||
return &OpenBLiveClient{
|
||||
cfg: cfg,
|
||||
openbliveClient: openblive.NewBliveClient(appId, cfg.Room, newRemoteApiClient(apiServer)),
|
||||
}, nil
|
||||
func NewOpenBLiveClientProvider(apiServer string, appId int64) liveroom.ILiveRoomProvider {
|
||||
return &liveroom.LiveRoomProvider{
|
||||
Name: ProviderName,
|
||||
Description: "open bilibili live protocol. enter client key to connect.",
|
||||
Func: func(cfg liveroom.LiveRoomConfig) (liveroom.LiveRoom, error) {
|
||||
if cfg.Provider != ProviderName {
|
||||
return nil, errors.New("invalid provider name")
|
||||
}
|
||||
return &OpenBLiveClient{
|
||||
cfg: cfg,
|
||||
openbliveClient: openblive.NewBliveClient(appId, cfg.Room, newRemoteApiClient(apiServer)),
|
||||
}, nil
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,21 +20,25 @@ type WebDanmuClient struct {
|
||||
onStatusChange func(connected bool)
|
||||
}
|
||||
|
||||
func NewWebDanmuClientProvider(apiServer string) liveroom.LiveRoomProvider {
|
||||
return func(cfg liveroom.LiveRoomConfig) (liveroom.LiveRoom, error) {
|
||||
if cfg.Provider != ProviderName {
|
||||
return nil, errors.New("invalid provider name")
|
||||
}
|
||||
roomId, err := cast.ToIntE(cfg.Room)
|
||||
if err != nil {
|
||||
return nil, errors.New("invalid room id, should be integer")
|
||||
}
|
||||
room := &WebDanmuClient{
|
||||
cfg: cfg,
|
||||
webDmClient: client.NewClientWithApi(roomId, &remoteApi{client: resty.New().SetBaseURL(apiServer)}),
|
||||
}
|
||||
room.webDmClient.OnDanmaku(room.danmuHandler)
|
||||
return room, nil
|
||||
func NewWebDanmuClientProvider(apiServer string) liveroom.ILiveRoomProvider {
|
||||
return &liveroom.LiveRoomProvider{
|
||||
Name: ProviderName,
|
||||
Description: "default web protocol. enter room id to connect.",
|
||||
Func: func(cfg liveroom.LiveRoomConfig) (liveroom.LiveRoom, error) {
|
||||
if cfg.Provider != ProviderName {
|
||||
return nil, errors.New("invalid provider name")
|
||||
}
|
||||
roomId, err := cast.ToIntE(cfg.Room)
|
||||
if err != nil {
|
||||
return nil, errors.New("invalid room id, should be integer")
|
||||
}
|
||||
room := &WebDanmuClient{
|
||||
cfg: cfg,
|
||||
webDmClient: client.NewClientWithApi(roomId, &remoteApi{client: resty.New().SetBaseURL(apiServer)}),
|
||||
}
|
||||
room.webDmClient.OnDanmaku(room.danmuHandler)
|
||||
return room, nil
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package liveroom
|
||||
|
||||
var _providers map[string]LiveRoomProvider = make(map[string]LiveRoomProvider)
|
||||
var _providers map[string]ILiveRoomProvider = make(map[string]ILiveRoomProvider)
|
||||
|
||||
func RegisterProvider(name string, provider LiveRoomProvider) {
|
||||
func RegisterProvider(name string, provider ILiveRoomProvider) {
|
||||
if _, ok := _providers[name]; ok {
|
||||
panic("provider " + name + " already exists")
|
||||
return
|
||||
@@ -10,7 +10,7 @@ func RegisterProvider(name string, provider LiveRoomProvider) {
|
||||
_providers[name] = provider
|
||||
}
|
||||
|
||||
func GetProvider(name string) (LiveRoomProvider, bool) {
|
||||
func GetProvider(name string) (ILiveRoomProvider, bool) {
|
||||
provider, ok := _providers[name]
|
||||
return provider, ok
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user