Skip to content

Commit d28fa40

Browse files
authored
feat: connect to the cloud server of IoTDA (#22)
1 parent 702598c commit d28fa40

File tree

3 files changed

+91
-10
lines changed

3 files changed

+91
-10
lines changed
Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
package io.github.protocol.mtconnect.examples;
22

33
import io.github.openfacade.http.HttpClientConfig;
4+
import io.github.protocol.mtconnect.api.MTConnectDevices;
45
import io.github.protocol.mtconnect.client.MTConnectClient;
56
import io.github.protocol.mtconnect.client.MTConnectClientConfiguration;
7+
import io.github.protocol.mtconnect.common.XmlUtil;
8+
import lombok.extern.slf4j.Slf4j;
69

10+
@Slf4j
711
public class MTConnectClientExample {
8-
public static void main(String[] args) {
12+
public static void main(String[] args) throws Exception {
913
MTConnectClientConfiguration configuration = new MTConnectClientConfiguration();
14+
configuration.setHost("127.0.0.1");
15+
configuration.setPort(36633);
16+
1017
HttpClientConfig httpClientConfig = new HttpClientConfig.Builder().build();
1118
configuration.setHttpConfig(httpClientConfig);
1219
MTConnectClient mtConnectClient = new MTConnectClient(configuration);
20+
21+
MTConnectDevices devices = mtConnectClient.devices();
22+
log.info(XmlUtil.toXml(devices));
1323
}
1424
}

mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectIoTDAServerExample.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@ public static void main(String[] args) {
1515
.port(36633)
1616
.build();
1717
configuration.setHttpConfig(httpServerConfig);
18-
configuration.setMtProcessor(new IoTDAMtProcessor("your_ak", "your_sk"));
18+
IoTDAMtProcessor ioTDAMtProcessor = new IoTDAMtProcessor.Builder()
19+
.setAk(System.getenv("CLOUD_SDK_AK"))
20+
.setSk(System.getenv("CLOUD_SDK_SK"))
21+
.setProjectId("your_project_id")
22+
.setEndpoint("ec138732b4.st1.iotda-app.cn-north-4.myhuaweicloud.com")
23+
.build();
24+
25+
configuration.setMtProcessor(ioTDAMtProcessor);
1926
MTConnectServer mtConnectServer = new MTConnectServer(configuration);
2027
mtConnectServer.start().join();
2128
}
Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
package io.github.protocol.mtconnect.server.impl;
22

3+
import com.huaweicloud.sdk.core.auth.AbstractCredentials;
4+
import com.huaweicloud.sdk.core.auth.BasicCredentials;
5+
import com.huaweicloud.sdk.core.auth.ICredential;
6+
import com.huaweicloud.sdk.core.exception.ConnectionException;
7+
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
8+
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
9+
import com.huaweicloud.sdk.core.region.Region;
10+
import com.huaweicloud.sdk.iotda.v5.IoTDAClient;
11+
import com.huaweicloud.sdk.iotda.v5.model.ListDevicesRequest;
12+
import com.huaweicloud.sdk.iotda.v5.model.ListDevicesResponse;
313
import io.github.protocol.mtconnect.api.AssetRequest;
414
import io.github.protocol.mtconnect.api.DeviceRequest;
515
import io.github.protocol.mtconnect.api.MTConnectAssets;
616
import io.github.protocol.mtconnect.api.MTConnectDevices;
717
import io.github.protocol.mtconnect.server.MTProcessor;
18+
import lombok.NoArgsConstructor;
19+
import lombok.extern.slf4j.Slf4j;
820

21+
@Slf4j
22+
@NoArgsConstructor
923
public class IoTDAMtProcessor implements MTProcessor {
10-
private final String ak;
11-
12-
private final String sk;
13-
14-
public IoTDAMtProcessor(String ak, String sk) {
15-
this.ak = ak;
16-
this.sk = sk;
17-
}
24+
private String ak;
25+
private String sk;
26+
private String projectId;
27+
private String endpoint;
28+
private IoTDAClient client;
1829

1930
@Override
2031
public MTConnectAssets asset(AssetRequest assetRequest) {
@@ -23,6 +34,59 @@ public MTConnectAssets asset(AssetRequest assetRequest) {
2334

2435
@Override
2536
public MTConnectDevices device(DeviceRequest deviceRequest) {
37+
ListDevicesRequest request = new ListDevicesRequest();
38+
try {
39+
ListDevicesResponse response = client.listDevices(request);
40+
log.info(response.toString());
41+
} catch (ConnectionException | RequestTimeoutException e) {
42+
log.error(e.getMessage());
43+
} catch (ServiceResponseException e) {
44+
log.error(e.getMessage());
45+
log.error(String.valueOf(e.getHttpStatusCode()));
46+
log.error(e.getRequestId());
47+
log.error(e.getErrorCode());
48+
log.error(e.getErrorMsg());
49+
}
2650
return null;
2751
}
52+
53+
public static class Builder {
54+
private final IoTDAMtProcessor ioTDAMtProcessor = new IoTDAMtProcessor();
55+
56+
public Builder setAk(String ak) {
57+
ioTDAMtProcessor.ak = ak;
58+
return this;
59+
}
60+
public Builder setSk(String sk) {
61+
ioTDAMtProcessor.sk = sk;
62+
return this;
63+
}
64+
65+
public Builder setProjectId(String projectId) {
66+
ioTDAMtProcessor.projectId = projectId;
67+
return this;
68+
}
69+
70+
public Builder setEndpoint(String endpoint) {
71+
ioTDAMtProcessor.endpoint = endpoint;
72+
return this;
73+
}
74+
75+
public IoTDAMtProcessor build(){
76+
77+
ICredential auth = new BasicCredentials()
78+
// 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate";
79+
.withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios
80+
.withAk(ioTDAMtProcessor.ak)
81+
.withSk(ioTDAMtProcessor.sk);
82+
83+
ioTDAMtProcessor.client = IoTDAClient.newBuilder()
84+
.withCredential(auth)
85+
// 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)"
86+
.withRegion(new Region("cn-north-4", ioTDAMtProcessor.endpoint))
87+
.build();
88+
89+
return ioTDAMtProcessor;
90+
}
91+
}
2892
}

0 commit comments

Comments
 (0)