| 
									
										
										
										
											2025-05-06 18:09:59 +08:00
										 |  |  | 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{ | 
					
						
							| 
									
										
										
										
											2025-05-06 18:30:37 +08:00
										 |  |  | 	Default: "sms.gaore.com", | 
					
						
							| 
									
										
										
										
											2025-05-06 18:09:59 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	resp = CreateSendSmsResponse() | 
					
						
							|  |  |  | 	err = c.DoAction(req, resp) | 
					
						
							|  |  |  | 	return | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-07 16:26:39 +08:00
										 |  |  | func (c *Client) SendSmsV2(req *SendSmsRequestV2) (resp *SendSmsResponseV2, err error) { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-07 16:40:10 +08:00
										 |  |  | 	if req.Phone == "" { | 
					
						
							|  |  |  | 		err = errors.New("phone is empty") | 
					
						
							| 
									
										
										
										
											2025-07-07 16:26:39 +08:00
										 |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if req.Type == "" { | 
					
						
							|  |  |  | 		err = errors.New("type is empty") | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	resp = CreateSendSmsResponseV2() | 
					
						
							|  |  |  | 	err = c.DoAction(req, resp) | 
					
						
							|  |  |  | 	return | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-06 18:09:59 +08:00
										 |  |  | 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 | 
					
						
							|  |  |  | } |