package smsplat import ( "net/http" "time" "git.wenlab.co/joe/kettle/sms" "git.wenlab.co/joe/kettle/utl" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi" ) const ( aliyun_SCHEME = "https" aliyun_DOMAIN = "dysmsapi.aliyuncs.com" aliyun_VERSION = "2017-05-25" aliyun_API_NAME = "SendSms" ) type aliyunSms struct { region, accessKey, accessSecret string signName string } func NewAliyunSms(region, accessKey, accessSecret, signName string) sms.ISms { return &aliyunSms{ region: region, accessKey: accessKey, accessSecret: accessSecret, signName: signName, } } func (self *aliyunSms) Send(phone, msg string) error { return utl.ErrNotImplemented } func (self *aliyunSms) SendTpl(phone, tpl string, params []byte) error { c, err := dysmsapi.NewClientWithAccessKey(self.region, self.accessKey, self.accessSecret) if err != nil { return err } c.SetConnectTimeout(3 * time.Second) c.SetReadTimeout(3 * time.Second) req := requests.NewCommonRequest() req.Method = http.MethodPost req.Scheme = aliyun_SCHEME req.Domain = aliyun_DOMAIN req.Version = aliyun_VERSION req.ApiName = aliyun_API_NAME req.QueryParams["RegionId"] = self.region req.QueryParams["PhoneNumbers"] = phone req.QueryParams["SignName"] = self.signName req.QueryParams["TemplateCode"] = tpl req.QueryParams["TemplateParam"] = string(params) _, err = c.ProcessCommonRequest(req) return err } func (self *aliyunSms) GetBalance() (float64, error) { return 0.0, utl.ErrNotImplemented } func (self *aliyunSms) GetAvailable() (int64, error) { return 0, utl.ErrNotImplemented } func (self *aliyunSms) Name() string { return "aliyuncs.com" }