Skip to content

Commit 0c257f0

Browse files
authored
Merge pull request #17 from seymourtang/doc-cloudrecording
chore:Add commnets to cloudrecording service
2 parents 0a3a7ba + d27956f commit 0c257f0

File tree

41 files changed

+3341
-736
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+3341
-736
lines changed

agora-rest-client-core/LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2024 Agora Community
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

agora-rest-client-core/pom.xml

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,7 @@
125125
<build>
126126
<resources>
127127
<resource>
128-
<directory>..</directory>
129-
<includes>
130-
<include>LICENSE</include>
131-
</includes>
132-
<targetPath>META-INF</targetPath>
128+
<directory>src/main/resources</directory>
133129
</resource>
134130
<resource>
135131
<directory>src</directory>
@@ -239,6 +235,39 @@
239235
</execution>
240236
</executions>
241237
</plugin>
238+
<plugin>
239+
<groupId>org.apache.maven.plugins</groupId>
240+
<artifactId>maven-resources-plugin</artifactId>
241+
<version>3.3.1</version>
242+
<configuration>
243+
<propertiesEncoding>UTF-8</propertiesEncoding>
244+
<nonFilteredFileExtensions>
245+
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
246+
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
247+
</nonFilteredFileExtensions>
248+
</configuration>
249+
<executions>
250+
<execution>
251+
<id>copy-license</id>
252+
<phase>process-resources</phase>
253+
<goals>
254+
<goal>copy-resources</goal>
255+
</goals>
256+
<configuration>
257+
<outputDirectory>${project.build.outputDirectory}/META-INF</outputDirectory>
258+
<resources>
259+
<resource>
260+
<directory>${project.basedir}</directory>
261+
<includes>
262+
<include>LICENSE</include>
263+
</includes>
264+
<filtering>false</filtering>
265+
</resource>
266+
</resources>
267+
</configuration>
268+
</execution>
269+
</executions>
270+
</plugin>
242271
</plugins>
243272
</build>
244273
</project>
Lines changed: 49 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package io.agora.rest.services.cloudrecording;
22

33
import io.agora.rest.core.AgoraConfig;
4-
import io.agora.rest.core.Context;
54
import io.agora.rest.core.DefaultContext;
6-
import io.agora.rest.services.cloudrecording.api.*;
75
import io.agora.rest.services.cloudrecording.api.req.*;
86
import io.agora.rest.services.cloudrecording.api.res.*;
97
import io.agora.rest.services.cloudrecording.enums.CloudRecordingModeEnum;
@@ -12,79 +10,64 @@
1210
import io.agora.rest.services.cloudrecording.scenario.web.WebScenario;
1311
import reactor.core.publisher.Mono;
1412

15-
public class CloudRecordingClient {
16-
17-
private final AcquireResourceAPI acquireResourceAPI;
18-
19-
private final QueryResourceAPI queryResourceAPI;
20-
21-
private final StartResourceAPI startResourceAPI;
22-
23-
private final UpdateResourceAPI updateResourceAPI;
24-
25-
private final StopResourceAPI stopResourceAPI;
26-
27-
private final IndividualScenario individualScenario;
28-
29-
private final WebScenario webScenario;
30-
31-
private final MixScenario mixScenario;
32-
33-
public static CloudRecordingClient create(AgoraConfig agoraConfig) {
34-
return new CloudRecordingClient(new DefaultContext(agoraConfig));
13+
public abstract class CloudRecordingClient {
14+
15+
private static CloudRecordingClient mInstance;
16+
17+
/**
18+
* @param cloudRecordingConfig Instance of {@link CloudRecordingConfig}.
19+
* @return Returns the Cloud Recording client instance.
20+
* @brief Creates a Cloud Recording client with the specified configuration.
21+
* @since v0.4.0
22+
*/
23+
public static synchronized CloudRecordingClient create(CloudRecordingConfig cloudRecordingConfig) {
24+
if (mInstance == null) {
25+
AgoraConfig agoraConfig = AgoraConfig.builder()
26+
.appId(cloudRecordingConfig.getAppId())
27+
.credential(cloudRecordingConfig.getCredential())
28+
.domainArea(cloudRecordingConfig.getDomainArea())
29+
.httpProperty(cloudRecordingConfig.getHttpProperty())
30+
.build();
31+
mInstance=new CloudRecordingClientImpl(new DefaultContext(agoraConfig));
32+
}
33+
34+
return mInstance;
3535
}
3636

37-
protected CloudRecordingClient(Context context) {
38-
this.acquireResourceAPI = new AcquireResourceAPI(context);
39-
this.queryResourceAPI = new QueryResourceAPI(context);
40-
this.startResourceAPI = new StartResourceAPI(context);
41-
this.stopResourceAPI = new StopResourceAPI(context);
42-
this.updateResourceAPI = new UpdateResourceAPI(context);
43-
44-
this.individualScenario = new IndividualScenario(acquireResourceAPI, queryResourceAPI, startResourceAPI,
45-
updateResourceAPI, stopResourceAPI);
46-
this.webScenario = new WebScenario(acquireResourceAPI, queryResourceAPI, startResourceAPI, updateResourceAPI,
47-
stopResourceAPI);
48-
this.mixScenario = new MixScenario(acquireResourceAPI, queryResourceAPI, startResourceAPI, updateResourceAPI,
49-
stopResourceAPI);
50-
}
5137

52-
public Mono<AcquireResourceRes> acquire(AcquireResourceReq request) {
53-
return acquireResourceAPI.handle(request);
54-
}
38+
public abstract Mono<AcquireResourceRes> acquire(AcquireResourceReq request);
5539

56-
public Mono<StartResourceRes> start(String resourceId, CloudRecordingModeEnum mode, StartResourceReq request) {
57-
return startResourceAPI.handle(resourceId, mode, request);
58-
}
40+
public abstract Mono<StartResourceRes> start(String resourceId, CloudRecordingModeEnum mode, StartResourceReq request);
5941

60-
public Mono<QueryResourceRes> query(String resourceId, String sid, CloudRecordingModeEnum mode) {
61-
return queryResourceAPI.handle(resourceId, sid, mode);
62-
}
42+
public abstract Mono<QueryResourceRes> query(String resourceId, String sid, CloudRecordingModeEnum mode);
6343

64-
public Mono<StopResourceRes> stop(String resourceId, String sid, CloudRecordingModeEnum mode,
65-
StopResourceReq request) {
66-
return stopResourceAPI.handle(resourceId, sid, mode, request);
67-
}
44+
public abstract Mono<StopResourceRes> stop(String resourceId, String sid, CloudRecordingModeEnum mode,
45+
StopResourceReq request);
6846

69-
public Mono<UpdateResourceRes> update(String resourceId, String sid, CloudRecordingModeEnum mode,
70-
UpdateResourceReq request) {
71-
return updateResourceAPI.handle(resourceId, sid, mode, request);
72-
}
47+
public abstract Mono<UpdateResourceRes> update(String resourceId, String sid, CloudRecordingModeEnum mode,
48+
UpdateResourceReq request);
7349

74-
public Mono<UpdateLayoutResourceRes> updateLayout(String resourceId, String sid, CloudRecordingModeEnum mode,
75-
UpdateLayoutResourceReq request) {
76-
return updateResourceAPI.handleLayout(resourceId, sid, mode, request);
77-
}
50+
public abstract Mono<UpdateLayoutResourceRes> updateLayout(String resourceId, String sid, CloudRecordingModeEnum mode,
51+
UpdateLayoutResourceReq request);
7852

79-
public IndividualScenario individualScenario() {
80-
return individualScenario;
81-
}
53+
/**
54+
* @brief Returns the individual scenario instance.
55+
* @return Returns the individual scenario instance.
56+
* @since v0.4.0
57+
*/
58+
public abstract IndividualScenario individualScenario();
8259

83-
public WebScenario webScenario() {
84-
return webScenario;
85-
}
60+
/**
61+
* @brief Returns the web scenario instance.
62+
* @return Returns the web scenario instance.
63+
* @since v0.4.0
64+
*/
65+
public abstract WebScenario webScenario();
8666

87-
public MixScenario mixScenario() {
88-
return mixScenario;
89-
}
67+
/**
68+
* @brief Returns the mix scenario instance.
69+
* @return Returns the mix scenario instance.
70+
* @since v0.4.0
71+
*/
72+
public abstract MixScenario mixScenario();
9073
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package io.agora.rest.services.cloudrecording;
2+
3+
import io.agora.rest.core.Context;
4+
import io.agora.rest.services.cloudrecording.api.*;
5+
import io.agora.rest.services.cloudrecording.api.req.*;
6+
import io.agora.rest.services.cloudrecording.api.res.*;
7+
import io.agora.rest.services.cloudrecording.enums.CloudRecordingModeEnum;
8+
import io.agora.rest.services.cloudrecording.scenario.individual.IndividualScenario;
9+
import io.agora.rest.services.cloudrecording.scenario.individual.IndividualScenarioImpl;
10+
import io.agora.rest.services.cloudrecording.scenario.mix.MixScenario;
11+
import io.agora.rest.services.cloudrecording.scenario.mix.MixScenarioImpl;
12+
import io.agora.rest.services.cloudrecording.scenario.web.WebScenario;
13+
import io.agora.rest.services.cloudrecording.scenario.web.WebScenarioImpl;
14+
import reactor.core.publisher.Mono;
15+
16+
public class CloudRecordingClientImpl extends CloudRecordingClient {
17+
18+
private final AcquireResourceAPI acquireResourceAPI;
19+
20+
private final QueryResourceAPI queryResourceAPI;
21+
22+
private final StartResourceAPI startResourceAPI;
23+
24+
private final UpdateResourceAPI updateResourceAPI;
25+
26+
private final StopResourceAPI stopResourceAPI;
27+
28+
private final IndividualScenario individualScenario;
29+
30+
private final WebScenario webScenario;
31+
32+
private final MixScenario mixScenario;
33+
34+
protected CloudRecordingClientImpl(Context context) {
35+
this.acquireResourceAPI = new AcquireResourceAPI(context);
36+
this.queryResourceAPI = new QueryResourceAPI(context);
37+
this.startResourceAPI = new StartResourceAPI(context);
38+
this.stopResourceAPI = new StopResourceAPI(context);
39+
this.updateResourceAPI = new UpdateResourceAPI(context);
40+
41+
this.individualScenario = new IndividualScenarioImpl(acquireResourceAPI, queryResourceAPI, startResourceAPI,
42+
updateResourceAPI, stopResourceAPI);
43+
this.webScenario = new WebScenarioImpl(acquireResourceAPI, queryResourceAPI, startResourceAPI, updateResourceAPI,
44+
stopResourceAPI);
45+
this.mixScenario = new MixScenarioImpl(acquireResourceAPI, queryResourceAPI, startResourceAPI, updateResourceAPI,
46+
stopResourceAPI);
47+
}
48+
49+
public Mono<AcquireResourceRes> acquire(AcquireResourceReq request) {
50+
return acquireResourceAPI.handle(request);
51+
}
52+
53+
public Mono<StartResourceRes> start(String resourceId, CloudRecordingModeEnum mode, StartResourceReq request) {
54+
return startResourceAPI.handle(resourceId, mode, request);
55+
}
56+
57+
public Mono<QueryResourceRes> query(String resourceId, String sid, CloudRecordingModeEnum mode) {
58+
return queryResourceAPI.handle(resourceId, sid, mode);
59+
}
60+
61+
public Mono<StopResourceRes> stop(String resourceId, String sid, CloudRecordingModeEnum mode,
62+
StopResourceReq request) {
63+
return stopResourceAPI.handle(resourceId, sid, mode, request);
64+
}
65+
66+
public Mono<UpdateResourceRes> update(String resourceId, String sid, CloudRecordingModeEnum mode,
67+
UpdateResourceReq request) {
68+
return updateResourceAPI.handle(resourceId, sid, mode, request);
69+
}
70+
71+
public Mono<UpdateLayoutResourceRes> updateLayout(String resourceId, String sid, CloudRecordingModeEnum mode,
72+
UpdateLayoutResourceReq request) {
73+
return updateResourceAPI.handleLayout(resourceId, sid, mode, request);
74+
}
75+
76+
public IndividualScenario individualScenario() {
77+
return individualScenario;
78+
}
79+
80+
public WebScenario webScenario() {
81+
return webScenario;
82+
}
83+
84+
public MixScenario mixScenario() {
85+
return mixScenario;
86+
}
87+
}

0 commit comments

Comments
 (0)