isms.go 947 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package sms
  2. import (
  3. "errors"
  4. )
  5. var (
  6. ErrSmsNoMoney = errors.New("sms no money")
  7. ErrSmsProviderReturnBadValue = errors.New("sms provider return bad value")
  8. ErrSmsProviderNotFound = errors.New("sms provider not found")
  9. providers map[string]ISms = make(map[string]ISms)
  10. )
  11. type ISms interface {
  12. Send(phone, msg string) error
  13. SendTpl(phone, tpl, params string) error
  14. // BatchSendTpl( phones []string, tpl, params []string) error
  15. GetBalance() (float64, error) // balance available
  16. GetAvailable() (int64, error) // how many sms times remain we can send
  17. Name() string // provider name
  18. }
  19. func Use(sms ...ISms) {
  20. for _, p := range sms {
  21. providers[p.Name()] = p
  22. }
  23. }
  24. func All() map[string]ISms {
  25. return providers
  26. }
  27. func Get(name string) (ISms, error) {
  28. sms, ok := providers[name]
  29. if ok {
  30. return sms, nil
  31. }
  32. return nil, ErrSmsProviderNotFound
  33. }
  34. func Clear() {
  35. providers = map[string]ISms{}
  36. }