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
go.uber.org/zap v1.27.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
)

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-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-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/go.mod h1:5S5YwjSXWmnEKjBjG6MtyGtFmljjukDRS8CwHk/CF/I=

@ -6,7 +6,6 @@ import (
"amocrm/internal/server/http"
"amocrm/internal/service"
"amocrm/internal/workers/data_updater"
"amocrm/internal/workers/tokens"
"amocrm/pkg/amoClient"
"amocrm/pkg/closer"
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,
})
tokenUpdater := tokens.NewRefreshWC(tokens.Deps{
Repo: amoRepo,
AmoClient: amoClient,
Logger: logger,
})
dataUpdater := data_updater.NewDataUpdaterWC(data_updater.Deps{
Repo: amoRepo,
AmoClient: amoClient,
Logger: logger,
})
go tokenUpdater.Start(ctx)
go dataUpdater.Start(ctx)
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(amoRepo.Close))
shutdownGroup.Add(closer.CloserFunc(rateLimiter.Stop))
shutdownGroup.Add(closer.CloserFunc(tokenUpdater.Stop))
shutdownGroup.Add(closer.CloserFunc(dataUpdater.Stop))
<-ctx.Done()

@ -57,13 +57,43 @@ func (wc *DataUpdater) processTasks(ctx context.Context) {
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 {
wc.logger.Error("some error from UserUpdater", zap.Error(err))
}
for _, token := range allTokens {
for _, token := range newTokens {
// pipelines
pipelines, err := wc.amoClient.GetListPipelines(token.AccessToken)
if err != nil {

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