Skip to content

Commit 68040eb

Browse files
authored
Merge pull request #34 from seymourtang/doc-cloudrecording
feat:Adjust cloudRecording service structure and add doc comment
2 parents e9975bd + 76306be commit 68040eb

File tree

29 files changed

+2420
-1023
lines changed

29 files changed

+2420
-1023
lines changed

examples/cloudrecording/base/base.go

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,39 @@ package base
33
import (
44
"github.com/AgoraIO-Community/agora-rest-client-go/agora/auth"
55
"github.com/AgoraIO-Community/agora-rest-client-go/agora/domain"
6+
agoraLogger "github.com/AgoraIO-Community/agora-rest-client-go/agora/log"
7+
"github.com/AgoraIO-Community/agora-rest-client-go/services/cloudrecording"
68
)
79

810
type Service struct {
9-
DomainArea domain.Area
10-
AppId string
11-
Cname string
12-
Uid string
13-
Credential auth.Credential
11+
DomainArea domain.Area
12+
AppId string
13+
Cname string
14+
Uid string
15+
Credential auth.Credential
16+
CloudRecordingClient *cloudrecording.Client
1417
}
1518

16-
func (s *Service) SetCredential(username, password string) {
17-
s.Credential = auth.NewBasicAuthCredential(username, password)
19+
func NewService(region domain.Area, appId, cname, uid string, username, password string) (*Service, error) {
20+
s := &Service{
21+
DomainArea: region,
22+
AppId: appId,
23+
Cname: cname,
24+
Uid: uid,
25+
Credential: auth.NewBasicAuthCredential(username, password),
26+
}
27+
28+
cloudRecordingClient, err := cloudrecording.NewClient(&cloudrecording.Config{
29+
AppID: s.AppId,
30+
Credential: s.Credential,
31+
DomainArea: s.DomainArea,
32+
Logger: agoraLogger.NewDefaultLogger(agoraLogger.DebugLevel),
33+
})
34+
if err != nil {
35+
return nil, err
36+
}
37+
38+
s.CloudRecordingClient = cloudRecordingClient
39+
40+
return s, nil
1841
}

examples/cloudrecording/individualrecording/service.go

Lines changed: 41 additions & 106 deletions
Large diffs are not rendered by default.

examples/cloudrecording/main.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strconv"
88

99
"github.com/AgoraIO-Community/agora-rest-client-go/agora/domain"
10+
"github.com/AgoraIO-Community/agora-rest-client-go/examples/cloudrecording/base"
1011
"github.com/AgoraIO-Community/agora-rest-client-go/examples/cloudrecording/individualrecording"
1112
"github.com/AgoraIO-Community/agora-rest-client-go/examples/cloudrecording/mixrecording"
1213
"github.com/AgoraIO-Community/agora-rest-client-go/examples/cloudrecording/webrecording"
@@ -106,10 +107,14 @@ func main() {
106107
web_scene := flag.String("web_scene", "web_recorder", "scene for web mode, options is web_recorder/web_recorder_and_rtmp_publish")
107108
flag.Parse()
108109

110+
svc, err := base.NewService(domainArea, appId, cname, uid, username, password)
111+
if err != nil {
112+
panic(err)
113+
}
114+
109115
switch *mode {
110116
case "mix":
111-
service := mixrecording.NewService(domainArea, appId, cname, uid)
112-
service.SetCredential(username, password)
117+
service := mixrecording.NewScenario(svc)
113118

114119
switch *mix_scene {
115120
case "hls":
@@ -120,8 +125,7 @@ func main() {
120125
panic("invalid mix_scene")
121126
}
122127
case "individual":
123-
service := individualrecording.NewService(domainArea, appId, cname, uid)
124-
service.SetCredential(username, password)
128+
service := individualrecording.NewScenario(svc)
125129

126130
switch *individual_scene {
127131
case "recording":
@@ -138,8 +142,7 @@ func main() {
138142
panic("invalid individual_scene")
139143
}
140144
case "web":
141-
service := webrecording.NewService(domainArea, appId, cname, uid)
142-
service.SetCredential(username, password)
145+
service := webrecording.NewScenario(svc)
143146

144147
switch *web_scene {
145148
case "web_recorder":

examples/cloudrecording/mixrecording/service.go

Lines changed: 23 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,27 @@ import (
55
"log"
66
"time"
77

8-
"github.com/AgoraIO-Community/agora-rest-client-go/agora"
9-
"github.com/AgoraIO-Community/agora-rest-client-go/agora/domain"
10-
agoraLogger "github.com/AgoraIO-Community/agora-rest-client-go/agora/log"
118
"github.com/AgoraIO-Community/agora-rest-client-go/examples/cloudrecording/base"
12-
"github.com/AgoraIO-Community/agora-rest-client-go/services/cloudrecording"
139
cloudRecordingAPI "github.com/AgoraIO-Community/agora-rest-client-go/services/cloudrecording/api"
14-
"github.com/AgoraIO-Community/agora-rest-client-go/services/cloudrecording/scenario/mixrecording"
10+
"github.com/AgoraIO-Community/agora-rest-client-go/services/cloudrecording/req"
1511
)
1612

17-
type Service struct {
18-
base.Service
13+
type Scenario struct {
14+
*base.Service
1915
}
2016

21-
func NewService(region domain.Area, appId, cname, uid string) *Service {
22-
return &Service{
23-
base.Service{
24-
DomainArea: region,
25-
AppId: appId,
26-
Cname: cname,
27-
Uid: uid,
28-
Credential: nil,
29-
},
17+
func NewScenario(s *base.Service) *Scenario {
18+
return &Scenario{
19+
Service: s,
3020
}
3121
}
3222

33-
func (s *Service) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageConfig) {
23+
func (s *Scenario) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageConfig) {
3424
ctx := context.Background()
35-
config := &agora.Config{
36-
AppID: s.AppId,
37-
Credential: s.Credential,
38-
DomainArea: s.DomainArea,
39-
Logger: agoraLogger.NewDefaultLogger(agoraLogger.DebugLevel),
40-
}
41-
42-
cloudRecordingClient, err := cloudrecording.NewClient(config)
43-
if err != nil {
44-
log.Fatalln(err)
45-
}
4625

4726
// acquire
48-
acquireResp, err := cloudRecordingClient.MixRecording().
49-
Acquire(ctx, s.Cname, s.Uid, &mixrecording.AcquireMixRecodingClientRequest{})
27+
acquireResp, err := s.CloudRecordingClient.MixRecording().
28+
Acquire(ctx, s.Cname, s.Uid, &req.AcquireMixRecodingClientRequest{})
5029
if err != nil {
5130
log.Println(err)
5231
return
@@ -60,7 +39,7 @@ func (s *Service) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageC
6039

6140
resourceId := acquireResp.SuccessRes.ResourceId
6241
// start
63-
startResp, err := cloudRecordingClient.MixRecording().Start(ctx, resourceId, s.Cname, s.Uid, &mixrecording.StartMixRecordingClientRequest{
42+
startResp, err := s.CloudRecordingClient.MixRecording().Start(ctx, resourceId, s.Cname, s.Uid, &req.StartMixRecordingClientRequest{
6443
Token: token,
6544
RecordingConfig: &cloudRecordingAPI.RecordingConfig{
6645
ChannelType: 1,
@@ -103,7 +82,7 @@ func (s *Service) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageC
10382
sid := startResp.SuccessResponse.Sid
10483
// stop
10584
defer func() {
106-
stopResp, err := cloudRecordingClient.MixRecording().Stop(ctx, resourceId, sid, s.Cname, s.Uid, false)
85+
stopResp, err := s.CloudRecordingClient.MixRecording().Stop(ctx, resourceId, sid, s.Cname, s.Uid, false)
10786
if err != nil {
10887
log.Println(err)
10988
return
@@ -118,7 +97,7 @@ func (s *Service) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageC
11897

11998
// query
12099
for i := 0; i < 3; i++ {
121-
queryResp, err := cloudRecordingClient.MixRecording().QueryHLS(ctx, resourceId, sid)
100+
queryResp, err := s.CloudRecordingClient.MixRecording().QueryHLS(ctx, resourceId, sid)
122101
if err != nil {
123102
log.Println(err)
124103
return
@@ -133,7 +112,7 @@ func (s *Service) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageC
133112
}
134113

135114
// update
136-
updateResp, err := cloudRecordingClient.MixRecording().Update(ctx, resourceId, sid, s.Cname, s.Uid, &mixrecording.UpdateMixRecordingClientRequest{
115+
updateResp, err := s.CloudRecordingClient.MixRecording().Update(ctx, resourceId, sid, s.Cname, s.Uid, &req.UpdateMixRecordingClientRequest{
137116
StreamSubscribe: &cloudRecordingAPI.UpdateStreamSubscribe{
138117
AudioUidList: &cloudRecordingAPI.UpdateAudioUIDList{
139118
SubscribeAudioUIDs: []string{
@@ -159,7 +138,7 @@ func (s *Service) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageC
159138
}
160139

161140
// updateLayout
162-
updateLayoutResp, err := cloudRecordingClient.MixRecording().UpdateLayout(ctx, resourceId, sid, s.Cname, s.Uid, &mixrecording.UpdateLayoutUpdateMixRecordingClientRequest{
141+
updateLayoutResp, err := s.CloudRecordingClient.MixRecording().UpdateLayout(ctx, resourceId, sid, s.Cname, s.Uid, &req.UpdateLayoutUpdateMixRecordingClientRequest{
163142
MixedVideoLayout: 1,
164143
BackgroundColor: "#FF0000",
165144
},
@@ -177,7 +156,7 @@ func (s *Service) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageC
177156

178157
// query
179158
for i := 0; i < 3; i++ {
180-
queryResp, err := cloudRecordingClient.MixRecording().QueryHLS(ctx, resourceId, sid)
159+
queryResp, err := s.CloudRecordingClient.MixRecording().QueryHLS(ctx, resourceId, sid)
181160
if err != nil {
182161
log.Println(err)
183162
return
@@ -192,22 +171,11 @@ func (s *Service) RunHLS(token string, storageConfig *cloudRecordingAPI.StorageC
192171
}
193172
}
194173

195-
func (s *Service) RunHLSAndMP4(token string, storageConfig *cloudRecordingAPI.StorageConfig) {
174+
func (s *Scenario) RunHLSAndMP4(token string, storageConfig *cloudRecordingAPI.StorageConfig) {
196175
ctx := context.Background()
197176

198-
config := &agora.Config{
199-
AppID: s.AppId,
200-
Credential: s.Credential,
201-
DomainArea: s.DomainArea,
202-
Logger: agoraLogger.NewDefaultLogger(agoraLogger.DebugLevel),
203-
}
204-
cloudRecordingClient, err := cloudrecording.NewClient(config)
205-
if err != nil {
206-
log.Fatalln(err)
207-
}
208-
209177
// acquire
210-
acquireResp, err := cloudRecordingClient.MixRecording().Acquire(ctx, s.Cname, s.Uid, &mixrecording.AcquireMixRecodingClientRequest{})
178+
acquireResp, err := s.CloudRecordingClient.MixRecording().Acquire(ctx, s.Cname, s.Uid, &req.AcquireMixRecodingClientRequest{})
211179
if err != nil {
212180
log.Println(err)
213181
return
@@ -221,7 +189,7 @@ func (s *Service) RunHLSAndMP4(token string, storageConfig *cloudRecordingAPI.St
221189

222190
resourceId := acquireResp.SuccessRes.ResourceId
223191
// start
224-
startResp, err := cloudRecordingClient.MixRecording().Start(ctx, resourceId, s.Cname, s.Uid, &mixrecording.StartMixRecordingClientRequest{
192+
startResp, err := s.CloudRecordingClient.MixRecording().Start(ctx, resourceId, s.Cname, s.Uid, &req.StartMixRecordingClientRequest{
225193
Token: token,
226194
RecordingConfig: &cloudRecordingAPI.RecordingConfig{
227195
ChannelType: 1,
@@ -265,7 +233,7 @@ func (s *Service) RunHLSAndMP4(token string, storageConfig *cloudRecordingAPI.St
265233
sid := startResp.SuccessResponse.Sid
266234
// stop
267235
defer func() {
268-
stopResp, err := cloudRecordingClient.MixRecording().Stop(ctx, resourceId, sid, s.Cname, s.Uid, false)
236+
stopResp, err := s.CloudRecordingClient.MixRecording().Stop(ctx, resourceId, sid, s.Cname, s.Uid, false)
269237
if err != nil {
270238
log.Println(err)
271239
return
@@ -280,7 +248,7 @@ func (s *Service) RunHLSAndMP4(token string, storageConfig *cloudRecordingAPI.St
280248

281249
// query
282250
for i := 0; i < 3; i++ {
283-
queryResp, err := cloudRecordingClient.MixRecording().QueryHLSAndMP4(ctx, resourceId, sid)
251+
queryResp, err := s.CloudRecordingClient.MixRecording().QueryHLSAndMP4(ctx, resourceId, sid)
284252
if err != nil {
285253
log.Println(err)
286254
return
@@ -295,7 +263,7 @@ func (s *Service) RunHLSAndMP4(token string, storageConfig *cloudRecordingAPI.St
295263
}
296264

297265
// update
298-
updateResp, err := cloudRecordingClient.MixRecording().Update(ctx, resourceId, sid, s.Cname, s.Uid, &mixrecording.UpdateMixRecordingClientRequest{
266+
updateResp, err := s.CloudRecordingClient.MixRecording().Update(ctx, resourceId, sid, s.Cname, s.Uid, &req.UpdateMixRecordingClientRequest{
299267
StreamSubscribe: &cloudRecordingAPI.UpdateStreamSubscribe{
300268
AudioUidList: &cloudRecordingAPI.UpdateAudioUIDList{
301269
SubscribeAudioUIDs: []string{
@@ -321,7 +289,7 @@ func (s *Service) RunHLSAndMP4(token string, storageConfig *cloudRecordingAPI.St
321289
}
322290

323291
// updateLayout
324-
updateLayoutResp, err := cloudRecordingClient.MixRecording().UpdateLayout(ctx, resourceId, sid, s.Cname, s.Uid, &mixrecording.UpdateLayoutUpdateMixRecordingClientRequest{
292+
updateLayoutResp, err := s.CloudRecordingClient.MixRecording().UpdateLayout(ctx, resourceId, sid, s.Cname, s.Uid, &req.UpdateLayoutUpdateMixRecordingClientRequest{
325293
MixedVideoLayout: 1,
326294
BackgroundColor: "#FF0000",
327295
},
@@ -339,7 +307,7 @@ func (s *Service) RunHLSAndMP4(token string, storageConfig *cloudRecordingAPI.St
339307

340308
// query
341309
for i := 0; i < 3; i++ {
342-
queryResp, err := cloudRecordingClient.MixRecording().QueryHLSAndMP4(ctx, resourceId, sid)
310+
queryResp, err := s.CloudRecordingClient.MixRecording().QueryHLSAndMP4(ctx, resourceId, sid)
343311
if err != nil {
344312
log.Println(err)
345313
return

0 commit comments

Comments
 (0)