2023-06-11 13:00:30 +00:00
|
|
|
package smsproviders
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/authorizerdev/authorizer/server/constants"
|
|
|
|
"github.com/authorizerdev/authorizer/server/memorystore"
|
|
|
|
log "github.com/sirupsen/logrus"
|
2023-07-18 17:20:23 +00:00
|
|
|
twilio "github.com/twilio/twilio-go"
|
|
|
|
api "github.com/twilio/twilio-go/rest/api/v2010"
|
2023-06-11 13:00:30 +00:00
|
|
|
)
|
|
|
|
|
2023-07-23 04:33:37 +00:00
|
|
|
// SendSMS util to send sms
|
2023-06-11 13:00:30 +00:00
|
|
|
// TODO: Should be restructured to interface when another provider is added
|
|
|
|
func SendSMS(sendTo, messageBody string) error {
|
|
|
|
twilioAPISecret, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyTwilioAPISecret)
|
2023-07-18 17:20:23 +00:00
|
|
|
if err != nil || twilioAPISecret == "" {
|
|
|
|
log.Debug("Failed to get api secret: ", err)
|
2023-06-11 13:00:30 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
twilioAPIKey, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyTwilioAPIKey)
|
2023-07-18 17:20:23 +00:00
|
|
|
if err != nil || twilioAPIKey == "" {
|
|
|
|
log.Debug("Failed to get api key: ", err)
|
2023-06-11 13:00:30 +00:00
|
|
|
return err
|
|
|
|
}
|
2023-07-23 04:33:37 +00:00
|
|
|
twilioSenderFrom, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyTwilioSender)
|
2023-06-11 13:00:30 +00:00
|
|
|
if err != nil || twilioSenderFrom == "" {
|
2023-07-18 17:20:23 +00:00
|
|
|
log.Debug("Failed to get sender: ", err)
|
2023-06-11 13:00:30 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
// accountSID is not a must to send sms on twilio
|
|
|
|
twilioAccountSID, _ := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyTwilioAccountSID)
|
|
|
|
client := twilio.NewRestClientWithParams(twilio.ClientParams{
|
|
|
|
Username: twilioAPIKey,
|
|
|
|
Password: twilioAPISecret,
|
|
|
|
AccountSid: twilioAccountSID,
|
|
|
|
})
|
|
|
|
message := &api.CreateMessageParams{}
|
|
|
|
message.SetBody(messageBody)
|
|
|
|
message.SetFrom(twilioSenderFrom)
|
|
|
|
message.SetTo(sendTo)
|
|
|
|
|
|
|
|
_, err = client.Api.CreateMessage(message)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
log.Debug("Failed to send sms: ", err)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|