51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package services
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
|
|
"github.com/fiskerinc/cloud-services/pkg/grpc/sms"
|
|
"github.com/fiskerinc/cloud-services/pkg/logger"
|
|
"github.com/fiskerinc/cloud-services/pkg/utils/envtool"
|
|
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials/insecure"
|
|
grpctrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/google.golang.org/grpc"
|
|
)
|
|
|
|
var smsClient sms.SMSServiceClient
|
|
var smsClientOnce sync.Once
|
|
|
|
func newSmsClient() {
|
|
logger.Info().Msg("Init SMS client")
|
|
target := fmt.Sprintf("%s:%s",
|
|
envtool.GetEnv("SMS_HOST", "sms"),
|
|
envtool.GetEnv("SMS_PORT", "8077"))
|
|
// Create the client interceptor using the grpc trace package.
|
|
si := grpctrace.StreamClientInterceptor(grpctrace.WithServiceName("sms-grpc-client"))
|
|
ui := grpctrace.UnaryClientInterceptor(grpctrace.WithServiceName("sms-grpc-client"))
|
|
c, err := grpc.Dial(target, grpc.WithTransportCredentials(insecure.NewCredentials()),
|
|
grpc.WithStreamInterceptor(si), grpc.WithUnaryInterceptor(ui))
|
|
|
|
if err != nil {
|
|
logger.Error().Err(err).Send()
|
|
}
|
|
|
|
smsClient = sms.NewSMSServiceClient(c)
|
|
}
|
|
|
|
func GetSMSClient() sms.SMSServiceClient {
|
|
smsClientOnce.Do(func() {
|
|
if smsClient != nil {
|
|
return
|
|
}
|
|
newSmsClient()
|
|
})
|
|
|
|
return smsClient
|
|
}
|
|
|
|
func SetSmsClient(c sms.SMSServiceClient) {
|
|
smsClient = c
|
|
}
|