| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package smsplat
- import (
- "fmt"
- "net/url"
- "strconv"
- "strings"
- "git.wenlab.co/joe/kettle/htp"
- "git.wenlab.co/joe/kettle/sms"
- "git.wenlab.co/joe/kettle/utl"
- )
- const (
- url_SENDSMS = "http://api.smsbao.com/sms"
- query_SENDSMS = "u=%s&p=%s&m=%s&c=%s"
- url_BALANCE = "http://www.smsbao.com/query"
- query_BALANCE = "u=%s&p=%s"
- )
- func NewSmsBao(username, password string) sms.ISms {
- return &smsBao{
- username: username,
- password: password,
- c: htp.NewClient(),
- }
- }
- type smsBao struct {
- username, password string
- c *htp.Client
- }
- func (self *smsBao) Send(phone, msg string) error {
- uri := fmt.Sprintf(url_SENDSMS+"?"+query_SENDSMS, self.username, self.password, phone, url.QueryEscape(msg))
- var err error = nil
- data, err := self.c.Get(uri)
- if err != nil {
- return err
- }
- if string(data) != "0" {
- err = sms.ErrSmsNoMoney
- }
- return err
- }
- //TODO: this implement is error. // @see official docs
- func (self *smsBao) SendTpl(phone, tpl string, params []byte) error {
- return self.Send(phone, tpl)
- }
- func (self *smsBao) GetBalance() (float64, error) {
- return 0, utl.ErrNotImplemented
- }
- func (self *smsBao) GetAvailable() (int64, error) {
- uri := fmt.Sprintf(url_BALANCE+"?"+query_BALANCE, self.username, self.password)
- clt := htp.NewClient()
- data, err := clt.Get(uri)
- if err != nil {
- return 0, err
- }
- sbody := fmt.Sprintf("%s", data)
- lines := strings.Split(sbody, "\n")
- if len(lines) < 2 {
- return 0, sms.ErrSmsProviderReturnBadValue
- }
- if lines[0] != "0" {
- return 0, sms.ErrSmsProviderReturnBadValue
- }
- parts := strings.Split(lines[1], ",")
- if len(parts) < 2 {
- return 0, sms.ErrSmsProviderReturnBadValue
- }
- remains, err := strconv.ParseInt(parts[1], 10, 64)
- if err != nil {
- return 0, err
- }
- return remains, nil
- }
- func (self *smsBao) Name() string {
- return "smsbao.com"
- }
|