package foundation.icall.connector;
|
|
import java.util.concurrent.CompletableFuture;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import com.aliyun.auth.credentials.Credential;
|
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
|
import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient;
|
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest;
|
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponse;
|
|
import darabonba.core.client.ClientOverrideConfiguration;
|
import foundation.dao.DataPackage;
|
import foundation.dao.bizlogic.IRequest;
|
import foundation.dao.bizlogic.ResponseType;
|
import foundation.icall.ICall;
|
import foundation.icall.ICallDirection;
|
import foundation.icall.callout.HttpServerMeta;
|
import foundation.icall.callout.send.ISMSRequest;
|
import foundation.workflow.WorkStep;
|
|
public class AliyunSMSConn extends HttpServerConn {
|
|
private static String monitorId = "AliyunSMSConn";
|
AsyncClient client;
|
|
static {
|
logger = LogManager.getLogger(AliyunSMSConn.class);
|
}
|
|
protected AliyunSMSConn() {
|
}
|
|
public void init(HttpServerMeta meta) {
|
this.meta = meta;
|
}
|
|
@Override
|
public void login(WorkStep step, ICall iCall) throws Exception {
|
StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
|
.accessKeyId(meta.getString("accessKeyId"))
|
.accessKeySecret(meta.getString("accessKeySecret"))
|
.build());
|
|
client = AsyncClient.builder()
|
.region(meta.getString("region"))
|
.credentialsProvider(provider)
|
.overrideConfiguration(ClientOverrideConfiguration.create()
|
.setEndpointOverride(meta.getString("endpoint")))
|
.build();
|
}
|
|
@Override
|
public void logout(WorkStep step, ICall iCall) throws Exception {
|
|
}
|
|
@Override
|
public IRequest createRequest(String mailName) {
|
return new ISMSRequest(null);
|
}
|
|
@Override
|
public IRequest buildBody(IRequest request, WorkStep step, ICall iCall) throws Exception {
|
ISMSRequest sms = (ISMSRequest) request;
|
DataPackage dataPackage = step.getDataPackage();
|
|
sms.build(dataPackage);
|
|
return sms;
|
}
|
|
@SuppressWarnings("unchecked")
|
@Override
|
public <T>T post(boolean simulte, IRequest request, ResponseType responseType) throws Exception {
|
ISMSRequest sms = (ISMSRequest) request;
|
String toAddress = sms.getToAddress();
|
|
if (simulte) {
|
toAddress = meta.getString("test_address");
|
}
|
|
SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
|
.signName(sms.getSignName())
|
.templateCode(sms.getTemplateCode())
|
.phoneNumbers(toAddress)
|
.templateParam(sms.getBody())
|
.build();
|
|
CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);
|
SendSmsResponse resp = response.get();
|
client.close();
|
|
return (T)resp;
|
}
|
|
@Override
|
public Object get() {
|
return this;
|
}
|
|
public ICallDirection getDirection() {
|
return ICallDirection.RemoteServer;
|
}
|
|
public HttpServerMeta getMeta() {
|
return meta;
|
}
|
|
@Override
|
public String getName() {
|
return meta.getName();
|
}
|
}
|