123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package services
- import (
- "errors"
- "fmt"
- alimt20181012 "github.com/alibabacloud-go/alimt-20181012/v2/client"
- openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
- util "github.com/alibabacloud-go/tea-utils/v2/service"
- "github.com/alibabacloud-go/tea/tea"
- )
- /**
- * 使用STS鉴权方式初始化账号Client,推荐此方式。本示例默认使用AK&SK方式。
- * @param accessKeyId
- * @param accessKeySecret
- * @param securityToken
- * @return Client
- * @throws Exception
- */
- func CreateClientWithSTS (accessKeyId *string, accessKeySecret *string, securityToken *string) (_result *alimt20181012.Client, _err error) {
- config := &openapi.Config{
- // 必填,您的 AccessKey ID
- AccessKeyId: accessKeyId,
- // 必填,您的 AccessKey Secret
- AccessKeySecret: accessKeySecret,
- // 必填,您的 Security Token
- SecurityToken: securityToken,
- // 必填,表明使用 STS 方式
- Type: tea.String("sts"),
- }
- // 访问的域名
- config.Endpoint = tea.String("mt.cn-hangzhou.aliyuncs.com")
- _result = &alimt20181012.Client{}
- _result, _err = alimt20181012.NewClient(config)
- return _result, _err
- }
- func handler (accessKeyId, accessKeySecret, stsToken *string, content string) (resp *alimt20181012.TranslateGeneralResponseBody, _err error) {
- // 初始化 Client,采用 AK&SK 鉴权访问的方式,此方式可能会存在泄漏风险,建议使用 STS 方式。鉴权访问方式请参考:https://help.aliyun.com/document_detail/378661.html
- //client, _err := CreateClient(accessKeyId, accessKeySecret)
- client, _err := CreateClientWithSTS(accessKeyId, accessKeySecret, stsToken)
- if _err != nil {
- _err = errors.New(fmt.Sprintf("创建翻译客户端失败 err: %v", _err))
- return
- }
- translateGeneralRequest := &alimt20181012.TranslateGeneralRequest{
- FormatType: tea.String("text"),
- SourceLanguage: tea.String("zh"),
- TargetLanguage: tea.String("en"),
- SourceText: tea.String(content),
- Scene: tea.String("general"),
- }
- runtime := &util.RuntimeOptions{}
- ret, tryErr := func()(ret *alimt20181012.TranslateGeneralResponse, _e error) {
- defer func() {
- if r := tea.Recover(recover()); r != nil {
- _e = r
- return
- }
- }()
- // 复制代码运行请自行打印 API 的返回值
- ret, _e = client.TranslateGeneralWithOptions(translateGeneralRequest, runtime)
- if _e != nil {
- return
- }
- return
- }()
- if tryErr != nil {
- var e = &tea.SDKError{}
- if _t, ok := tryErr.(*tea.SDKError); ok {
- e = _t
- } else {
- e.Message = tea.String(tryErr.Error())
- }
- // 如有需要,请打印 e
- _, _err = util.AssertAsString(e.Message)
- if _err != nil {
- _err = errors.New(fmt.Sprintf("翻译失败 err: %v", _err))
- return
- }
- _err = errors.New(fmt.Sprintf("翻译失败 err: %v", _err))
- return
- }
- if *ret.StatusCode != 200 {
- _err = errors.New(fmt.Sprintf(" %v", ret.StatusCode))
- return
- }
- resp = ret.Body
- return
- }
- func AliTranslate(content string) (contentEn string, err error) {
- stsToken, err := GetOssSTSToken()
- if err != nil {
- err = errors.New(fmt.Sprintf("阿里云机器翻译失败 err %v", err))
- return
- }
- fmt.Println(stsToken)
- resp, err := handler(&stsToken.AccessKeyId, &stsToken.AccessKeySecret, &stsToken.SecurityToken, content)
- if err != nil {
- err = errors.New(fmt.Sprintf("阿里云机器翻译失败 err %v", err))
- return
- }
- if *resp.Code != 200 {
- err = errors.New(fmt.Sprintf("阿里云机器翻译失败 code: %v; msg: %v",*resp.Code, *resp.Message))
- return
- }
- contentEn = *resp.Data.Translated
- return
- }
|