Compare commits

...

6 Commits

1 changed files with 17 additions and 16 deletions

33
fcm.go
View File

@ -27,6 +27,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
)
const tracerName = "git.bit5.ru/backend/fcm"
@ -46,7 +47,7 @@ var (
AuthScopes = []string{"https://www.googleapis.com/auth/firebase.messaging"}
)
func MakeSendEndpoint(projectId string) string {
func makeSendEndpoint(projectId string) string {
return fmt.Sprintf("https://fcm.googleapis.com/v1/projects/%s/messages:send", projectId)
}
@ -78,23 +79,19 @@ func ReadCredentialsFromFile(filename string) (Credentials, error) {
return c, nil
}
type ClientConfig struct {
SendEndpoint string
}
type Client struct {
cfg ClientConfig
ts oauth2.TokenSource
hc *http.Client
logger logr.Logger
sendEndpoint string
ts oauth2.TokenSource
hc *http.Client
logger logr.Logger
}
func NewClient(projectId string, cfg ClientConfig, ts oauth2.TokenSource, hc *http.Client, logger logr.Logger) *Client {
func NewClient(projectId string, ts oauth2.TokenSource, hc *http.Client, logger logr.Logger) *Client {
return &Client{
cfg: cfg,
ts: ts,
hc: hc,
logger: logger,
sendEndpoint: makeSendEndpoint(projectId),
ts: ts,
hc: hc,
logger: logger,
}
}
@ -166,7 +163,11 @@ func (c *Client) Validate(ctx context.Context, message Message) (string, error)
func (c *Client) doSendRequest(ctx context.Context, req SendRequest, loggerEnabled bool) (SendResponse, error) {
_, span := tracer.Start(ctx, "Client.doSendRequest")
spanAttrs := trace.WithAttributes(
attribute.String("token", req.Message.Token),
)
_, span := tracer.Start(ctx, "Client.doSendRequest", spanAttrs)
defer span.End()
accessToken, err := c.ts.Token()
@ -189,7 +190,7 @@ func (c *Client) doSendRequest(ctx context.Context, req SendRequest, loggerEnabl
c.logger.Info("sending", "message", data)
}
request, err := http.NewRequest(http.MethodPost, c.cfg.SendEndpoint, bytes.NewReader(data))
request, err := http.NewRequest(http.MethodPost, c.sendEndpoint, bytes.NewReader(data))
if err != nil {
span.SetStatus(codes.Error, err.Error())
span.RecordError(err)