-
Notifications
You must be signed in to change notification settings - Fork 0
/
bouyguessms.go
40 lines (32 loc) · 1.11 KB
/
bouyguessms.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package bouyguessms
import "github.com/pkg/errors"
// GetSmsLeft fetches the remaining number of SMS
func GetSmsLeft(login, pass string) (SmsLeft, error) {
client, err := newHTTPClient()
if err != nil {
return NoSmsLeft, errors.Wrap(err, "unable to create httpClient")
}
loginner := httpLoginner{client}
if err = loginner.Login(login, pass); err != nil {
return NoSmsLeft, errors.Wrap(err, "unable to login")
}
smsLeftGetter := &httpSmsLeftGetter{client}
return smsLeftGetter.Get()
}
// SendSms sends msg to the specified recipients
func SendSms(login, pass string, msg string, to string) (SmsLeft, error) {
client, err := newHTTPClient()
if err != nil {
return NoSmsLeft, errors.Wrap(err, "unable to create httpClient")
}
loginner := httpLoginner{client}
if err = loginner.Login(login, pass); err != nil {
return NoSmsLeft, errors.Wrap(err, "unable to login")
}
phoneNumbers, err := parsePhones(to)
if err != nil {
return NoSmsLeft, errors.Wrap(err, "unable to parse `to` field")
}
smsSender := &httpSmsSender{client, &httpSmsLeftGetter{client}}
return smsSender.SendSms(message(msg), phoneNumbers)
}