123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package services
- import (
- "bytes"
- "encoding/json"
- "fmt"
- "hongze/hongze_open_api/utils"
- "io/ioutil"
- "net/http"
- "strconv"
- )
- var (
- googleTranslateUrl = "http://47.254.37.124:8396/api/google/translate"
- googleSingleTranslateUrl = "http://47.254.37.124:8396/api/google/translate/single"
- )
- type GoogleApiResp struct {
- Code int `json:"code"`
- Msg string `json:"msg"`
- ErrMsg string `json:"err_msg"`
- Data GoogleApiRespData `json:"data"`
- }
- type GoogleApiRespData struct {
- ContentEn string `json:"content_en"`
- }
- // content 为json字符串
- func GoogleTranslateApi(content string) (contentEnMap map[string]string, err error, errMsg string) {
- params := make(map[string]interface{})
- params["content"] = content
- bytesData, err := json.Marshal(params)
- if err != nil {
- err = fmt.Errorf("json.Marshal Err:" + err.Error())
- return
- }
- utils.FileLog.Info("googleTranslateData:" + string(bytesData))
- // 将解析之后的数据转为*Reader类型
- reader := bytes.NewReader(bytesData)
- resp, err := http.Post(googleTranslateUrl, "application/json", reader)
- if err != nil {
- errMsg = err.Error()
- err = fmt.Errorf("调用谷歌翻译接口失败")
- return
- }
- defer resp.Body.Close()
- if resp.StatusCode != 200 {
- err = fmt.Errorf("调用谷歌翻译接口失败")
- errMsg = "Status Code: " + strconv.Itoa(resp.StatusCode)
- return
- }
- body, _ := ioutil.ReadAll(resp.Body)
- //fmt.Println(string(body))
- var ret GoogleApiResp
- err = json.Unmarshal(body, &ret)
- if err != nil {
- errMsg = "解析谷歌翻译接口返回值失败 json.Unmarshal Err " + err.Error()
- err = fmt.Errorf("解析谷歌翻译接口返回值失败")
- return
- }
- if ret.Code != 200 {
- err = fmt.Errorf("翻译失败 GoogleTranslateApi:" + ret.Msg)
- errMsg = "ret code:" + strconv.Itoa(ret.Code) + ret.ErrMsg
- return
- }
- contentEnMap = make(map[string]string, 0)
- err = json.Unmarshal([]byte(ret.Data.ContentEn), &contentEnMap)
- if err != nil {
- errMsg = "解析谷歌翻译接口返回值失败2 json.Unmarshal Err " + err.Error()
- err = fmt.Errorf("解析谷歌翻译接口返回值失败")
- return
- }
- return
- }
- // GoogleSingleTranslateApi content 为简单字符串
- func GoogleSingleTranslateApi(content string) (contentEn string, err error, errMsg string) {
- params := make(map[string]interface{})
- params["content"] = content
- bytesData, err := json.Marshal(params)
- if err != nil {
- err = fmt.Errorf("json.Marshal Err:" + err.Error())
- return
- }
- // 将解析之后的数据转为*Reader类型
- reader := bytes.NewReader(bytesData)
- resp, err := http.Post(googleSingleTranslateUrl, "application/json", reader)
- if err != nil {
- errMsg = err.Error()
- err = fmt.Errorf("调用谷歌翻译接口失败")
- return
- }
- defer resp.Body.Close()
- if resp.StatusCode != 200 {
- err = fmt.Errorf("调用谷歌翻译接口失败")
- errMsg = "Status Code: " + strconv.Itoa(resp.StatusCode)
- return
- }
- body, _ := ioutil.ReadAll(resp.Body)
- //fmt.Println(string(body))
- var ret GoogleApiResp
- err = json.Unmarshal(body, &ret)
- if err != nil {
- errMsg = "解析谷歌翻译接口返回值失败 json.Unmarshal Err " + err.Error()
- err = fmt.Errorf("解析谷歌翻译接口返回值失败")
- return
- }
- if ret.Code != 200 {
- err = fmt.Errorf("翻译失败:" + ret.Msg)
- errMsg = "ret code:" + strconv.Itoa(ret.Code) + ret.ErrMsg
- return
- }
- contentEn = ret.Data.ContentEn
- return
- }
|