|
@@ -0,0 +1,228 @@
|
|
|
+package org.jeecg.modules.okki.translate.service;
|
|
|
+
|
|
|
+import com.amazonaws.ClientConfiguration;
|
|
|
+import com.amazonaws.DefaultRequest;
|
|
|
+import com.amazonaws.Request;
|
|
|
+import com.amazonaws.Response;
|
|
|
+import com.amazonaws.auth.AWS4Signer;
|
|
|
+import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
|
|
|
+import com.amazonaws.http.AmazonHttpClient;
|
|
|
+import com.amazonaws.http.ExecutionContext;
|
|
|
+import com.amazonaws.http.HttpMethodName;
|
|
|
+import com.google.gson.Gson;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.jeecg.modules.okki.translate.param.AwsTranslateOptionParam;
|
|
|
+import org.jeecg.modules.okki.translate.param.AwsTranslateParam;
|
|
|
+import org.jeecg.modules.okki.translate.tools.ErrorHandler;
|
|
|
+import org.jeecg.modules.okki.translate.tools.ResponseHandler;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.io.ByteArrayInputStream;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.net.URI;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class AwsTranslateService {
|
|
|
+
|
|
|
+ @Value("${aws.region}")
|
|
|
+ private String Region;
|
|
|
+
|
|
|
+ @Value("${aws.host}")
|
|
|
+ private String Host;
|
|
|
+
|
|
|
+ @Value("${aws.service}")
|
|
|
+ private String Service;
|
|
|
+
|
|
|
+ public String doSingleTranslate(String key, String contents, String fromLanguage, String targetLanguage , Map<String, Map<String, String>> translatedInfo, String originalValue) {
|
|
|
+ final AwsTranslateParam awsTranslateParam = new AwsTranslateParam();
|
|
|
+ final AwsTranslateOptionParam awsTranslateOptionParam = new AwsTranslateOptionParam();
|
|
|
+ awsTranslateOptionParam.setSourceLanguage(fromLanguage);
|
|
|
+ awsTranslateOptionParam.setTargetLanguage(targetLanguage);
|
|
|
+ awsTranslateOptionParam.setModel("CLAUDE_3_HAIKU");
|
|
|
+ awsTranslateOptionParam.setMode("TEXT");
|
|
|
+ awsTranslateParam.setOption(awsTranslateOptionParam);
|
|
|
+ awsTranslateParam.setText(contents);
|
|
|
+ Gson gson = new Gson();
|
|
|
+ String str = gson.toJson(awsTranslateParam);
|
|
|
+ InputStream is = new ByteArrayInputStream(str.getBytes());
|
|
|
+ Map<String, String> headerMap = new HashMap<>();
|
|
|
+ headerMap.put("content-type", "application/json");
|
|
|
+ Request<Void> request = new DefaultRequest<>(Service);
|
|
|
+ request.setHttpMethod(HttpMethodName.POST);
|
|
|
+ request.setContent(is);
|
|
|
+ request.setHeaders(headerMap);
|
|
|
+ request.setEndpoint(URI.create(Host + "/api/v1/generation/translate"));
|
|
|
+
|
|
|
+ AWS4Signer signer = new AWS4Signer();
|
|
|
+ signer.setRegionName(Region);
|
|
|
+ signer.setServiceName(request.getServiceName());
|
|
|
+
|
|
|
+ signer.sign(request, new DefaultAWSCredentialsProviderChain().getCredentials());
|
|
|
+
|
|
|
+ Response<String> rsp = new AmazonHttpClient(new ClientConfiguration())
|
|
|
+ .requestExecutionBuilder()
|
|
|
+ .executionContext(new ExecutionContext(true))
|
|
|
+ .request(request)
|
|
|
+ .errorResponseHandler(new ErrorHandler())
|
|
|
+ .execute(new ResponseHandler());
|
|
|
+ return rsp.getAwsResponse();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|