live-sfu-demo/internal/sfu/cloudflare/provider.go

43 lines
1.1 KiB
Go

package cloudflare
import "sync-live/gen"
// Provider 暴露 Cloudflare Realtime 后端的能力信息,并持有底层 REST 客户端。
type Provider struct {
client *Client
appID string
stun string
configured bool
}
func NewProvider(appID, appSecret, baseURL, stun string) *Provider {
return &Provider{
client: NewClient(appID, appSecret, baseURL),
appID: appID,
stun: stun,
configured: appID != "" && appSecret != "",
}
}
func (p *Provider) Name() string { return "cloudflare" }
func (p *Provider) Primary() bool { return true }
func (p *Provider) Configured() bool { return p.configured }
func (p *Provider) Client() *Client { return p.client }
func (p *Provider) AppID() string { return p.appID }
func (p *Provider) Stun() string {
if p.stun == "" {
return "stun:stun.cloudflare.com:3478"
}
return p.stun
}
func (p *Provider) BackendInfo() *gen.BackendInfo {
return &gen.BackendInfo{
Kind: gen.BackendKind_BACKEND_KIND_CLOUDFLARE,
Name: "Cloudflare Realtime",
Configured: p.configured,
Primary: true,
}
}