package handler import ( "context" "git.coopgo.io/coopgo-apps/silvermobi/services" "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi" gomail "gopkg.in/mail.v2" ) func (h *SilverMobiHandler) PutFirebase(ctx context.Context, id string, token string, device_platform string) (err error) { err = h.Storage.CreateFirebaseToken(id, token, device_platform) return err } func (h *SilverMobiHandler) SendNotification(id, title, message string) error { firebaseToken, platform, err := h.Storage.GetFirebaseToken(id) if err != nil { return err } notify := services.Notification{ Recipients: []string{firebaseToken}, Title: title, Message: message, } if platform == "android" { notify.Platform = services.PushToAndroid err = h.Services.Push.Send(notify) } else { notify.Platform = services.PushToIos err = h.Services.Push.Send(notify) } return err } func (h *SilverMobiHandler) SendEmail(id, title, message string) (err error) { var resp *grpcapi.GetAccountResponse if resp, err = h.Services.MobilityAccounts.Client.GetAccount(context.Background(), &grpcapi.GetAccountRequest{Id: id}); err != nil { return err } account := h.Services.MobilityAccounts.ToAccountModel(resp.Account.ToStorageType()) m := gomail.NewMessage() m.SetHeader("From", h.Config.GetString("emailing.smtp.username")) m.SetHeader("To", account.Email) m.SetHeader("Subject", title) m.SetBody("text/plain", message) d := gomail.NewDialer( h.Config.GetString("emailing.smtp.host"), h.Config.GetInt("emailing.smtp.port"), h.Config.GetString("emailing.smtp.username"), h.Config.GetString("emailing.smtp.password")) d.StartTLSPolicy = gomail.MandatoryStartTLS if err = d.DialAndSend(m); err != nil { return err } return nil }