aliyun.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package smsplat
  2. import (
  3. "kettle/sms"
  4. "kettle/utl"
  5. "net/http"
  6. "time"
  7. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
  8. "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi"
  9. )
  10. const (
  11. aliyun_SCHEME = "https"
  12. aliyun_DOMAIN = "dysmsapi.aliyuncs.com"
  13. aliyun_VERSION = "2017-05-25"
  14. aliyun_API_NAME = "SendSms"
  15. )
  16. type aliyunSms struct {
  17. region, accessKey, accessSecret string
  18. signName string
  19. }
  20. func NewAliyunSms(region, accessKey, accessSecret, signName string) sms.ISms {
  21. return &aliyunSms{
  22. region: region,
  23. accessKey: accessKey,
  24. accessSecret: accessSecret,
  25. signName: signName,
  26. }
  27. }
  28. func (self *aliyunSms) Send(phone, msg string) error {
  29. return utl.ErrNotImplemented
  30. }
  31. func (self *aliyunSms) SendTpl(phone, tpl string, params []byte) error {
  32. c, err := dysmsapi.NewClientWithAccessKey(self.region, self.accessKey, self.accessSecret)
  33. if err != nil {
  34. return err
  35. }
  36. c.SetConnectTimeout(3 * time.Second)
  37. c.SetReadTimeout(3 * time.Second)
  38. req := requests.NewCommonRequest()
  39. req.Method = http.MethodPost
  40. req.Scheme = aliyun_SCHEME
  41. req.Domain = aliyun_DOMAIN
  42. req.Version = aliyun_VERSION
  43. req.ApiName = aliyun_API_NAME
  44. req.QueryParams["RegionId"] = self.region
  45. req.QueryParams["PhoneNumbers"] = phone
  46. req.QueryParams["SignName"] = self.signName
  47. req.QueryParams["TemplateCode"] = tpl
  48. req.QueryParams["TemplateParam"] = string(params)
  49. _, err = c.ProcessCommonRequest(req)
  50. return err
  51. }
  52. func (self *aliyunSms) GetBalance() (float64, error) {
  53. return 0.0, utl.ErrNotImplemented
  54. }
  55. func (self *aliyunSms) GetAvailable() (int64, error) {
  56. return 0, utl.ErrNotImplemented
  57. }
  58. func (self *aliyunSms) Name() string {
  59. return "aliyuncs.com"
  60. }