| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package providers
- import (
- "fmt"
- "net/http"
- "net/url"
- "git.wenlab.co/joe/beaconfire"
- )
- const (
- TWILIO_NAME = "twilio"
- )
- type OptionsTwilio struct {
- AccountSid string
- AuthToken string
- }
- type twilio struct {
- opt *OptionsTwilio
- }
- var _ beaconfire.BeaconFire = &twilio{}
- func NewTwilio(opt *OptionsTwilio) *twilio {
- return &twilio{
- opt: opt,
- }
- }
- func (c twilio) Name() string {
- return TWILIO_NAME
- }
- func (c *twilio) Send(bp *beaconfire.BeaconParam) error {
- if len(bp.To) <= 0 {
- return beaconfire.ErrNoReceiver
- }
- // hc := &http.Client{Timeout: time.Second * 10}
- // v := url.Values{}
- // v.Set("From", bp.From)
- // v.Set("Body", bp.Content)
- // for _, receiver := range bp.To {
- // v.Set("To", receiver)
- // urlStr := fmt.Sprintf("https://api.twilio.com/2010-04-01/Accounts/%v/Messages.json", c.opt.AccountSid)
- // req, err := http.NewRequest("POST", urlStr, strings.NewReader(v.Encode()))
- // if err != nil {
- // return err
- // }
- // req.SetBasicAuth(c.opt.AccountSid, c.opt.AuthToken)
- // req.Header.Add("Accept", "application/json")
- // req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
- // _, err = hc.Do(req)
- // if err != nil {
- // return err
- // }
- // }
- urlStr := fmt.Sprintf("https://api.twilio.com/2010-04-01/Accounts/%v/Messages.json", c.opt.AccountSid)
- v := url.Values{}
- v.Set("From", bp.From)
- v.Set("Body", bp.Content)
- for _, receiver := range bp.To {
- v.Set("To", receiver)
- _, err := beaconfire.Request(http.MethodPost, urlStr, []byte(v.Encode()), map[string]string{
- "Accept": "application/json",
- "Content-Type": "application/x-www-form-urlencoded",
- }, c.opt.AccountSid, c.opt.AuthToken)
- if err != nil {
- return err
- }
- }
- return nil
- }
|