Skip to content

Commit

Permalink
Merge pull request #2 from seymourtang/refactor
Browse files Browse the repository at this point in the history
refactor:Refactor project structure
  • Loading branch information
seymourtang authored Dec 27, 2024
2 parents 4326f25 + 5ea97da commit 21e5ba4
Show file tree
Hide file tree
Showing 22 changed files with 192 additions and 203 deletions.
46 changes: 24 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<img alt="Maven Central Version" src="https://img.shields.io/maven-central/v/io.agora/agora-rest-client-core?colorB=brightgreen">
<img alt="GitHub License" src="https://img.shields.io/github/license/AgoraIO-Community/agora-rest-client-java">
<a href="https://github.com/AgoraIO-Community/agora-rest-client-java/actions/workflows/maven.yml"><img alt="Java CI with Maven" src="https://github.com/AgoraIO-Community/agora-rest-client-java/actions/workflows/maven.yml/badge.svg"></a>
<a href="https://github.com/AgoraIO-Community/agora-rest-client-java/actions/workflows/gitee-sync.yml"><img alt="gitee-sync" src="https://github.com/AgoraIO-Community/agora-rest-client-java/actions/workflows/gitee-sync.yml/badge.svg?branch=main"></a>
<img alt="GitHub" src="https://img.shields.io/github/v/release/AgoraIO-Community/agora-rest-client-java">
<img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/issues-pr/AgoraIO-Community/agora-rest-client-java">
</p>
Expand Down Expand Up @@ -53,15 +54,15 @@ API 接口的包装和内部实现,可以帮助开发者更加方便的集成
package com.company.example;

import io.agora.rest.AgoraException;
import io.agora.rest.AgoraService;
import io.agora.rest.core.AgoraProperty;
import io.agora.rest.core.AgoraConfig;
import io.agora.rest.core.BasicAuthCredential;
import io.agora.rest.core.Credential;
import io.agora.rest.core.RegionArea;
import io.agora.rest.core.DomainArea;
import io.agora.rest.services.cloudrecording.api.req.StartResourceReq;
import io.agora.rest.services.cloudrecording.api.res.AcquireResourceRes;
import io.agora.rest.services.cloudrecording.api.res.StartResourceRes;
import io.agora.rest.services.cloudrecording.api.res.StopResourceRes;
import io.agora.rest.services.cloudrecording.CloudRecordingClient;
import io.agora.rest.services.cloudrecording.scenario.mix.req.AcquireMixRecordingResourceClientReq;
import io.agora.rest.services.cloudrecording.scenario.mix.req.StartMixRecordingResourceClientReq;
import io.agora.rest.services.cloudrecording.scenario.mix.res.QueryMixHLSAndMP4RecordingResourceRes;
Expand Down Expand Up @@ -94,26 +95,28 @@ public class Main {

public static void main(String[] args) throws Exception {

Credential basicAuthCredential = new BasicAuthCredential(username, password);
Credential credential = new BasicAuthCredential(username, password);

// Initialize AgoraService
AgoraService agoraService = new AgoraService(
AgoraProperty.builder()
.appId(appId)
.credential(basicAuthCredential)
// Specify the region where the server is located.
// Optional values are CN, NA, EU, AP, and the client will automatically
// switch to use the best domain name according to the configured region
.regionArea(RegionArea.CNRegionArea)
.build()
);
// Initialize AgoraConfig
AgoraConfig agoraConfig = AgoraConfig.builder()
.appId(appId)
.credential(credential)
// Specify the region where the server is located.
// Optional values are CN, US, EU, AP, and the client will automatically
// switch to use the best domain name according to the configured region
.domainArea(DomainArea.)
.build();

// Initialize CloudRecordingClient

CloudRecordingClient cloudRecordingClient = CloudRecordingClient.create(agoraConfig);


AcquireResourceRes acquireResourceRes;

// Acquire resource
try {
acquireResourceRes = agoraService.cloudRecording()
acquireResourceRes = cloudRecordingClient
.mixScenario()
.acquire(cname, uid, AcquireMixRecordingResourceClientReq.builder()
.build())
Expand Down Expand Up @@ -176,7 +179,7 @@ public class Main {

// Start resource
try {
startResourceRes = agoraService.cloudRecording()
startResourceRes = cloudRecordingClient
.mixScenario()
.start(cname, uid,
acquireResourceRes.getResourceId(),
Expand All @@ -203,11 +206,11 @@ public class Main {

Thread.sleep(3000);

QueryMixHLSAndMP4RecordingResourceRes queryResourceResp;
QueryMixHLSAndMP4RecordingResourceRes queryResourceRes;

// Query resource
try {
queryResourceRes = agoraService.cloudRecording()
queryResourceRes = cloudRecordingClient
.mixScenario()
.queryHLSAndMP4(startResourceRes.getResourceId(), startResourceRes.getSid())
.block();
Expand All @@ -220,7 +223,7 @@ public class Main {
return;
}

if (queryResourceRes == null || queryResourceResp.getServerResponse() == null) {
if (queryResourceRes == null || queryResourceRes.getServerResponse() == null) {
System.out.println("failed to query resource");
return;
}
Expand All @@ -233,7 +236,7 @@ public class Main {

// Stop resource
try {
stopResourceRes = agoraService.cloudRecording()
stopResourceRes = cloudRecordingClient
.mixScenario()
.stop(cname, uid, startResourceRes.getResourceId(), startResourceRes.getSid(),
true)
Expand All @@ -256,7 +259,6 @@ public class Main {
}
}


```

更多的示例可在 [Example](./examples) 查看
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package io.agora.rest.core;

public class AgoraProperty {
public class AgoraConfig {
private final String appId;

private final Credential credential;

private final RegionArea regionArea;
private final DomainArea domainArea;

private final HttpProperty httpProperty;

private AgoraProperty(Builder builder) {
private AgoraConfig(Builder builder) {
this.appId = builder.appId;
this.credential = builder.credential;
this.regionArea = builder.regionArea;
this.domainArea = builder.domainArea;
this.httpProperty = builder.httpProperty;
}

Expand All @@ -28,8 +28,8 @@ public Credential getCredential() {
return credential;
}

public RegionArea getRegionArea() {
return regionArea;
public DomainArea getDomainArea() {
return domainArea;
}

public HttpProperty getHttpProperty() {
Expand All @@ -38,10 +38,10 @@ public HttpProperty getHttpProperty() {

@Override
public String toString() {
return "AgoraProperty{" +
return "AgoraConfig{" +
"appId='" + appId + '\'' +
", credential=" + credential +
", regionArea=" + regionArea +
", domainArea=" + domainArea +
", httpProperty=" + httpProperty +
'}';
}
Expand All @@ -52,7 +52,7 @@ public static class Builder {

private Credential credential;

private RegionArea regionArea;
private DomainArea domainArea;

private HttpProperty httpProperty;

Expand All @@ -69,8 +69,8 @@ public Builder credential(Credential credential) {
return this;
}

public Builder regionArea(RegionArea regionArea) {
this.regionArea = regionArea;
public Builder domainArea(DomainArea domainArea) {
this.domainArea = domainArea;
return this;
}

Expand All @@ -79,11 +79,11 @@ private Builder httpProperty(HttpProperty httpProperty) {
return this;
}

public AgoraProperty build() {
public AgoraConfig build() {
if (httpProperty == null) {
this.httpProperty = HttpProperty.builder().build();
}
return new AgoraProperty(this);
return new AgoraConfig(this);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ public interface Context {

<T> Mono<T> sendRequest(String path, HttpMethod method, Object requestBody, Class<T> clazz);

AgoraProperty getProperty();
AgoraConfig getAgoraConfig();
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ public class DefaultContext implements Context {

private static final Logger logger = LoggerFactory.getLogger(DefaultContext.class);

private final AgoraProperty property;
private final AgoraConfig agoraConfig;

private final HttpClient httpClient;

private final Codec codec;

private final DomainPool domainPool;

public DefaultContext(AgoraProperty property) {
this.property = property;
this.httpClient = HttpClientFactory.createHttpClient(property);
this.domainPool = new DomainPool(property.getRegionArea());
public DefaultContext(AgoraConfig agoraConfig) {
this.agoraConfig = agoraConfig;
this.httpClient = HttpClientFactory.createHttpClient(agoraConfig);
this.domainPool = new DomainPool(agoraConfig.getDomainArea());
this.codec = new JsonCodec();
}

Expand Down Expand Up @@ -73,7 +73,7 @@ public <T> Mono<T> sendRequest(String path, HttpMethod method, Object requestBod
}

@Override
public AgoraProperty getProperty() {
return this.property;
public AgoraConfig getAgoraConfig() {
return this.agoraConfig;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,45 @@
import java.util.Collections;
import java.util.List;

public enum RegionArea {
public enum DomainArea {
/**
* Unknown region area
* Unknown domain area
*/
UnkonwnRegionArea(Collections.emptyList(), Collections.emptyList()),
Unknown(Collections.emptyList(), Collections.emptyList()),

/**
* US region area
* US domain area
*/
USRegionArea(
US(
Arrays.asList("api-us-west-1", "api-us-east-1"),
Arrays.asList("agora.io", "sd-rtn.com")),

/**
* EU region area
* EU domain area
*/
EURegionArea(
EU(
Arrays.asList("api-eu-west-1", "api-eu-central-1"),
Arrays.asList("agora.io", "sd-rtn.com")),

/**
* AP region area
* AP domain area
*/
APRegionArea(
AP(
Arrays.asList("api-ap-southeast-1", "api-ap-northeast-1"),
Arrays.asList("agora.io", "sd-rtn.com")),

/**
* CN region area
* CN domain area
*/
CNRegionArea(
CN(
Arrays.asList("api-cn-east-1", "api-cn-north-1"),
Arrays.asList("sd-rtn.com", "agora.io"));

private final List<String> regionDomainPrefixes;

private final List<String> majorDomainSuffixes;

RegionArea(List<String> regionDomainPrefixes, List<String> majorDomainSuffixes) {
DomainArea(List<String> regionDomainPrefixes, List<String> majorDomainSuffixes) {
this.regionDomainPrefixes = Collections.unmodifiableList(regionDomainPrefixes);
this.majorDomainSuffixes = Collections.unmodifiableList(majorDomainSuffixes);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ public class DomainPool {

private final Logger logger = LoggerFactory.getLogger(DomainPool.class);

public DomainPool(RegionArea domainArea) {
if (domainArea == null || domainArea == RegionArea.UnkonwnRegionArea) {
public DomainPool(DomainArea domainArea) {
if (domainArea == null || domainArea == DomainArea.Unknown) {
throw new AgoraInvalidArgumentException("invalid domain area");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ public class HttpClientFactory {

private static final Logger logger = LoggerFactory.getLogger(HttpClientFactory.class);

public static HttpClient createHttpClient(AgoraProperty agoraProperty) {
public static HttpClient createHttpClient(AgoraConfig agoraConfig) {
ConnectionProvider connectionProvider = ConnectionProvider.builder("agora-rest-client")
.maxConnections(agoraProperty.getHttpProperty().getHttpConnectionPoolSize())
.pendingAcquireTimeout(Duration.ofMillis(agoraProperty.getHttpProperty().getHttpConnectionPendingAcquireTimout()))
.maxIdleTime(Duration.ofMillis(agoraProperty.getHttpProperty().getHttpConnectionMaxIdleTime()))
.maxLifeTime(Duration.ofMillis(agoraProperty.getHttpProperty().getHttpConnectionMaxLifeTime()))
.evictInBackground(Duration.ofMillis(agoraProperty.getHttpProperty().getHttpConnectionEvictInBackground()))
.pendingAcquireMaxCount(agoraProperty.getHttpProperty().getHttpConnectionPendingAcquireMaxCount())
.maxConnections(agoraConfig.getHttpProperty().getHttpConnectionPoolSize())
.pendingAcquireTimeout(Duration.ofMillis(agoraConfig.getHttpProperty().getHttpConnectionPendingAcquireTimout()))
.maxIdleTime(Duration.ofMillis(agoraConfig.getHttpProperty().getHttpConnectionMaxIdleTime()))
.maxLifeTime(Duration.ofMillis(agoraConfig.getHttpProperty().getHttpConnectionMaxLifeTime()))
.evictInBackground(Duration.ofMillis(agoraConfig.getHttpProperty().getHttpConnectionEvictInBackground()))
.pendingAcquireMaxCount(agoraConfig.getHttpProperty().getHttpConnectionPendingAcquireMaxCount())
.lifo()
.build();

Expand All @@ -32,11 +32,11 @@ public static HttpClient createHttpClient(AgoraProperty agoraProperty) {
System.getProperty("os.arch"),
System.getProperty("os.name"),
AgoraVersion.getVersion()));
if (agoraProperty.getCredential() != null) {
agoraProperty.getCredential().setAuthorization(h);
if (agoraConfig.getCredential() != null) {
agoraConfig.getCredential().setAuthorization(h);
}
})
.wiretap("io.agora.rest.core.http", LogLevel.DEBUG, agoraProperty.getHttpProperty().getHttpLogFormat())
.wiretap("io.agora.rest.core.http", LogLevel.DEBUG, agoraConfig.getHttpProperty().getHttpLogFormat())
.doOnRequestError((req, t) -> logger.error("request error:{}", t.getMessage()));

}
Expand Down
Loading

0 comments on commit 21e5ba4

Please sign in to comment.