commented token updater change to data updater

This commit is contained in:
Pavel 2024-04-21 13:21:03 +03:00
parent bd04264f13
commit ddb6e946be
6 changed files with 72 additions and 45 deletions

2
go.mod

@ -10,7 +10,7 @@ require (
github.com/stretchr/testify v1.8.4 github.com/stretchr/testify v1.8.4
go.uber.org/zap v1.27.0 go.uber.org/zap v1.27.0
google.golang.org/protobuf v1.33.0 google.golang.org/protobuf v1.33.0
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240420091424-34628bcc93eb penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240421100744-b7afcb01b168
penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af
) )

4
go.sum

@ -151,5 +151,9 @@ penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240419144125-64e
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240419144125-64e45ebed8ae/go.mod h1:oRyhT55ctjqp/7ZxIzkR7OsQ7T/NLibsfrbb7Ytns64= penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240419144125-64e45ebed8ae/go.mod h1:oRyhT55ctjqp/7ZxIzkR7OsQ7T/NLibsfrbb7Ytns64=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240420091424-34628bcc93eb h1:INNnspSaEyKlfhQ+E279sNcIzDrwvRfEFmYTuk7bdZw= penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240420091424-34628bcc93eb h1:INNnspSaEyKlfhQ+E279sNcIzDrwvRfEFmYTuk7bdZw=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240420091424-34628bcc93eb/go.mod h1:oRyhT55ctjqp/7ZxIzkR7OsQ7T/NLibsfrbb7Ytns64= penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240420091424-34628bcc93eb/go.mod h1:oRyhT55ctjqp/7ZxIzkR7OsQ7T/NLibsfrbb7Ytns64=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240421091718-bd471a64c94b h1:rJWdHFxYlW+505121Tk+7NjKdG7pSG4Y7Yb+u+f9zwg=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240421091718-bd471a64c94b/go.mod h1:oRyhT55ctjqp/7ZxIzkR7OsQ7T/NLibsfrbb7Ytns64=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240421100744-b7afcb01b168 h1:eYkDBkiFgGD6ia4vr4nAlZYmpkx6hNlpRGW2MntP/Jw=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240421100744-b7afcb01b168/go.mod h1:oRyhT55ctjqp/7ZxIzkR7OsQ7T/NLibsfrbb7Ytns64=
penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af h1:jQ7HaXSutDX5iepU7VRImxhikK7lV/lBKkiloOZ4Emo= penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af h1:jQ7HaXSutDX5iepU7VRImxhikK7lV/lBKkiloOZ4Emo=
penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af/go.mod h1:5S5YwjSXWmnEKjBjG6MtyGtFmljjukDRS8CwHk/CF/I= penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af/go.mod h1:5S5YwjSXWmnEKjBjG6MtyGtFmljjukDRS8CwHk/CF/I=

@ -6,7 +6,6 @@ import (
"amocrm/internal/server/http" "amocrm/internal/server/http"
"amocrm/internal/service" "amocrm/internal/service"
"amocrm/internal/workers/data_updater" "amocrm/internal/workers/data_updater"
"amocrm/internal/workers/tokens"
"amocrm/pkg/amoClient" "amocrm/pkg/amoClient"
"amocrm/pkg/closer" "amocrm/pkg/closer"
pena_social_auth "amocrm/pkg/pena-social-auth" pena_social_auth "amocrm/pkg/pena-social-auth"
@ -68,19 +67,12 @@ func Run(ctx context.Context, config initialize.Config, logger *zap.Logger) erro
Logger: logger, Logger: logger,
}) })
tokenUpdater := tokens.NewRefreshWC(tokens.Deps{
Repo: amoRepo,
AmoClient: amoClient,
Logger: logger,
})
dataUpdater := data_updater.NewDataUpdaterWC(data_updater.Deps{ dataUpdater := data_updater.NewDataUpdaterWC(data_updater.Deps{
Repo: amoRepo, Repo: amoRepo,
AmoClient: amoClient, AmoClient: amoClient,
Logger: logger, Logger: logger,
}) })
go tokenUpdater.Start(ctx)
go dataUpdater.Start(ctx) go dataUpdater.Start(ctx)
server := http.NewServer(http.ServerConfig{ server := http.NewServer(http.ServerConfig{
@ -101,7 +93,6 @@ func Run(ctx context.Context, config initialize.Config, logger *zap.Logger) erro
shutdownGroup.Add(closer.CloserFunc(server.Shutdown)) shutdownGroup.Add(closer.CloserFunc(server.Shutdown))
shutdownGroup.Add(closer.CloserFunc(amoRepo.Close)) shutdownGroup.Add(closer.CloserFunc(amoRepo.Close))
shutdownGroup.Add(closer.CloserFunc(rateLimiter.Stop)) shutdownGroup.Add(closer.CloserFunc(rateLimiter.Stop))
shutdownGroup.Add(closer.CloserFunc(tokenUpdater.Stop))
shutdownGroup.Add(closer.CloserFunc(dataUpdater.Stop)) shutdownGroup.Add(closer.CloserFunc(dataUpdater.Stop))
<-ctx.Done() <-ctx.Done()

@ -57,13 +57,43 @@ func (wc *DataUpdater) processTasks(ctx context.Context) {
return return
} }
var newTokens []model.Token
for _, oldToken := range allTokens {
req := models.UpdateWebHookReq{
GrantType: "refresh_token",
RefreshToken: oldToken.RefreshToken,
}
resp, err := wc.amoClient.CreateWebHook(&req)
if err != nil {
wc.logger.Error("error create webhook for update tokens", zap.Error(err))
continue
}
newToken := model.Token{
AccountID: oldToken.AccountID,
RefreshToken: resp.RefreshToken,
AccessToken: resp.AccessToken,
Expiration: time.Now().Unix() + resp.ExpiresIn,
CreatedAt: time.Now().Unix(),
}
newTokens = append(newTokens, newToken)
}
err = wc.repo.AmoRepo.WebhookUpdate(ctx, newTokens)
if err != nil {
wc.logger.Error("error updating users tokens", zap.Error(err))
return
}
// обновляем информацию о пользователях // обновляем информацию о пользователях
err = wc.UserUpdater(ctx, allTokens) err = wc.UserUpdater(ctx, newTokens)
if err != nil { if err != nil {
wc.logger.Error("some error from UserUpdater", zap.Error(err)) wc.logger.Error("some error from UserUpdater", zap.Error(err))
} }
for _, token := range allTokens { for _, token := range newTokens {
// pipelines // pipelines
pipelines, err := wc.amoClient.GetListPipelines(token.AccessToken) pipelines, err := wc.amoClient.GetListPipelines(token.AccessToken)
if err != nil { if err != nil {

@ -1,12 +1,10 @@
package tokens package tokens
import ( import (
"amocrm/internal/models"
"amocrm/pkg/amoClient" "amocrm/pkg/amoClient"
"context" "context"
"go.uber.org/zap" "go.uber.org/zap"
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
"time" "time"
) )
@ -46,33 +44,33 @@ func (wc *Token) Start(ctx context.Context) {
} }
func (wc *Token) processTasks(ctx context.Context) { func (wc *Token) processTasks(ctx context.Context) {
tokens, err := wc.repo.AmoRepo.CheckExpired(ctx) //tokens, err := wc.repo.AmoRepo.CheckExpired(ctx)
if err != nil { //if err != nil {
wc.logger.Error("error fetch expired tokens in mongo", zap.Error(err)) // wc.logger.Error("error fetch expired tokens in mongo", zap.Error(err))
return // return
} //}
for _, token := range tokens { //for _, token := range tokens {
req := models.UpdateWebHookReq{ // req := models.UpdateWebHookReq{
GrantType: "refresh_token", // GrantType: "refresh_token",
RefreshToken: token.RefreshToken, // RefreshToken: token.RefreshToken,
} // }
newTokens, err := wc.amoClient.CreateWebHook(&req) // newTokens, err := wc.amoClient.CreateWebHook(&req)
if err != nil { // if err != nil {
wc.logger.Error("error create webhook for update tokens", zap.Error(err)) // wc.logger.Error("error create webhook for update tokens", zap.Error(err))
continue // continue
} // }
err = wc.repo.AmoRepo.WebhookUpdate(ctx, model.Token{ // err = wc.repo.AmoRepo.WebhookUpdate(ctx, model.Token{
AccountID: token.AccountID, // AccountID: token.AccountID,
RefreshToken: newTokens.RefreshToken, // RefreshToken: newTokens.RefreshToken,
AccessToken: newTokens.AccessToken, // AccessToken: newTokens.AccessToken,
Expiration: time.Now().Unix() + newTokens.ExpiresIn, // Expiration: time.Now().Unix() + newTokens.ExpiresIn,
CreatedAt: time.Now().Unix(), // CreatedAt: time.Now().Unix(),
}) // })
if err != nil { // if err != nil {
wc.logger.Error("error update new tokens in mongo", zap.Error(err)) // wc.logger.Error("error update new tokens in mongo", zap.Error(err))
continue // continue
} // }
} //}
} }
func (wc *Token) Stop(ctx context.Context) error { func (wc *Token) Stop(ctx context.Context) error {

@ -511,18 +511,22 @@ func webhookCreate(ctx context.Context, repo *dal.AmoDal) error {
} }
func webhookUpdate(ctx context.Context, repo *dal.AmoDal) error { func webhookUpdate(ctx context.Context, repo *dal.AmoDal) error {
var tokens []model.Token
for i := 1; i < 10; i++ { for i := 1; i < 10; i++ {
accID := strconv.Itoa(i) accID := strconv.Itoa(i)
err := repo.AmoRepo.WebhookUpdate(ctx, model.Token{ tokens = append(tokens, model.Token{
RefreshToken: faker.UUID(), RefreshToken: faker.UUID(),
AccessToken: faker.UUID(), AccessToken: faker.UUID(),
AccountID: accID, AccountID: accID,
Expiration: time.Now().Unix() + int64(i), Expiration: time.Now().Unix() + int64(i),
CreatedAt: time.Now().Unix(), CreatedAt: time.Now().Unix(),
}) })
if err != nil { }
return err
} err := repo.AmoRepo.WebhookUpdate(ctx, tokens)
if err != nil {
fmt.Println(err)
return err
} }
return nil return nil
} }