7
0
gaore-common-sdk-go/services/sms/client.go
2025-05-06 18:30:37 +08:00

111 lines
2.0 KiB
Go

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
}