package sms import ( "crypto/md5" "encoding/hex" "errors" "fmt" "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk" "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests" "time" ) const ( VERSION = "2024-05-30" ) var HOST = requests.Host{ Default: "sms.gaore.com", } type Client struct { sdk.Client } func NewClient() (client *Client, err error) { client = new(Client) err = client.Init() return } func (c *Client) SendEmail(req *SendEmailRequest) (resp *SendEmailResponse, err error) { if len(req.Addresses) == 0 { return nil, errors.New("addresses is empty") } if req.FromName == "" { return nil, errors.New("from is empty") } if req.Subject == "" { return nil, errors.New("subject is empty") } if req.Body == "" { return nil, errors.New("content is empty") } ts, token := getToken("04573fc4c8e01999a0909ab9c00bca5a") req.JsonParams["sign"] = token req.JsonParams["time"] = ts resp = CreateSendEmailResponse() err = c.DoAction(req, resp) return } func (c *Client) SendFeiShuWebHook(req *SendFeiShuWebHookRequest) (resp *SendFeiShuWebHookResponse, err error) { if req.Content == "" { err = errors.New("content is empty") return } if req.Do == "" { err = errors.New("webhook is empty") return } if req.Token == "" { err = errors.New("token is empty") return } resp = CreateSendFeiShuWebHookResponse() err = c.DoAction(req, resp) return } func (c *Client) SendSms(req *SendSmsRequest) (resp *SendSmsResponse, err error) { if req.Mobile == "" { err = errors.New("mobile is empty") return } if req.Type == "" { err = errors.New("type is empty") return } if req.Expired == 0 { err = errors.New("expired is empty") return } if req.Code == 0 { err = errors.New("code is empty") return } resp = CreateSendSmsResponse() err = c.DoAction(req, resp) return } func getToken(key string) (ts int64, token string) { ts = time.Now().Unix() hash := md5.New() hash.Write([]byte(fmt.Sprintf("%v%v", ts, key))) hashBytes := hash.Sum(nil) token = hex.EncodeToString(hashBytes) return }