| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package providers
- import (
- "fmt"
- "net/http"
- "net/url"
- "git.wenlab.co/joe/beaconfire"
- )
- const (
- BEACON_NAME_TWILIO = "twilio"
- )
- type OptionsTwilio struct {
- AccountSid string
- AuthToken string
- From string
- To []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 BEACON_NAME_TWILIO
- }
- func (c *twilio) Send(bp *beaconfire.BeaconMessage) error {
- if len(c.opt.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", c.opt.From)
- v.Set("Body", bp.Content)
- for _, receiver := range c.opt.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
- }
|