update after true account testing
This commit is contained in:
parent
ec0e0cde43
commit
ed8959d942
2
go.mod
2
go.mod
@ -10,7 +10,7 @@ require (
|
||||
github.com/lib/pq v1.10.9
|
||||
github.com/twmb/franz-go v1.17.1
|
||||
go.uber.org/zap v1.27.0
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20241011130913-c09d04ca6d73
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20241017210010-7ff2025f8b7d
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3
|
||||
)
|
||||
|
||||
|
4
go.sum
4
go.sum
@ -141,7 +141,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d h1:gbaDt35HMDqOK84WYmDIlXMI7rstUcRqNttaT6Kx1do=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20241011130913-c09d04ca6d73 h1:EdWsqlJCpgDgegx/f/6UKr5eRRdlF1vcxgh8wyMFLSE=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20241011130913-c09d04ca6d73/go.mod h1:uOuosXduBzd2WbLH6TDZO7ME7ZextulA662oZ6OsoB0=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20241017210010-7ff2025f8b7d h1:ylWixuCwg6ZT8vox/adpcuOalCa/aNRihfxom6fvaMc=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20241017210010-7ff2025f8b7d/go.mod h1:uOuosXduBzd2WbLH6TDZO7ME7ZextulA662oZ6OsoB0=
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3 h1:sf6e2mp582L3i/FMDd2q6QuWm1njRXzYpIX0SipsvM4=
|
||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3/go.mod h1:i7M72RIpkSjcQtHID6KKj9RT/EYZ1rxS6tIPKWa/BSY=
|
||||
|
@ -36,7 +36,7 @@ func (c *Controller) UpdateListCustom(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("account id is required")
|
||||
}
|
||||
|
||||
//accountID := "654a8909725f47e926f0bebc"
|
||||
//accountID := "64f2cd7a7047f28fdabf6d9e"
|
||||
|
||||
err := c.service.UpdateListCustom(ctx.Context(), accountID)
|
||||
if err != nil {
|
||||
|
@ -13,7 +13,7 @@ func (c *Controller) UpdateListPipelines(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("account id is required")
|
||||
}
|
||||
|
||||
//accountID := "654a8909725f47e926f0bebc"
|
||||
//accountID := "64f2cd7a7047f28fdabf6d9e"
|
||||
|
||||
err := c.service.UpdateListPipelines(ctx.Context(), accountID)
|
||||
if err != nil {
|
||||
|
@ -36,7 +36,7 @@ func (c *Controller) UpdateListSteps(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("account id is required")
|
||||
}
|
||||
|
||||
//accountID := "654a8909725f47e926f0bebc"
|
||||
//accountID := "64f2cd7a7047f28fdabf6d9e"
|
||||
|
||||
err := c.service.UpdateListSteps(ctx.Context(), accountID)
|
||||
if err != nil {
|
||||
|
@ -65,7 +65,7 @@ func (s *Service) ConnectAccount(ctx context.Context, accountID string) (*model.
|
||||
|
||||
oauthURL := url.URL{
|
||||
Scheme: "https",
|
||||
Host: "b24-ld76ub.bitrix24.ru", // todo check
|
||||
Host: "b24-s5jg6c.bitrix24.ru", // todo check надо проверить как с дургими доменами работает, потому что сейчас это домен каждого отдельного битрикса
|
||||
Path: "/oauth/authorize/",
|
||||
RawQuery: url.Values{
|
||||
"client_id": {s.config.IntegrationID},
|
||||
|
@ -3,6 +3,7 @@ package workers_methods
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"go.uber.org/zap"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/bitrix/internal/models"
|
||||
@ -43,17 +44,12 @@ func (m *Methods) UpdateTokens(ctx context.Context) ([]model.Token, error) {
|
||||
}
|
||||
|
||||
for _, oldToken := range allTokens {
|
||||
user, err := m.repo.BitrixRepo.GetCurrentAccount(ctx, oldToken.AccountID)
|
||||
if err != nil {
|
||||
m.logger.Error("error getting account by id in UpdateTokens", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
req := models.UpdateWebHookReq{
|
||||
GrantType: "refresh_token",
|
||||
RefreshToken: oldToken.RefreshToken,
|
||||
}
|
||||
|
||||
resp, err := m.bitrixClient.CreateWebHook(&req, user.Subdomain)
|
||||
resp, err := m.bitrixClient.CreateWebHook(&req, false)
|
||||
if err != nil {
|
||||
m.logger.Error("error create webhook in UpdateTokens", zap.Error(err))
|
||||
continue
|
||||
@ -526,12 +522,18 @@ func (m *Methods) CreateUserFromWebHook(ctx context.Context, msg models.KafkaMes
|
||||
Code: msg.AuthCode,
|
||||
}
|
||||
|
||||
tokens, err := m.bitrixClient.CreateWebHook(&forGetTokens, msg.RefererURL)
|
||||
tokens, err := m.bitrixClient.CreateWebHook(&forGetTokens, true)
|
||||
if err != nil {
|
||||
m.logger.Error("error getting webhook in CreateUserFromWebHook:", zap.Error(err))
|
||||
return model.Token{}, err
|
||||
}
|
||||
|
||||
fmt.Println("tokens", tokens)
|
||||
|
||||
if tokens.AccessToken == "" || tokens.RefreshToken == "" {
|
||||
return model.Token{}, errors.New("invalid token")
|
||||
}
|
||||
|
||||
toCreate := model.BitrixAccount{
|
||||
AccountID: msg.AccountID,
|
||||
BitrixID: msg.MemberID,
|
||||
@ -740,7 +742,7 @@ func (m *Methods) UserReLogin(ctx context.Context, msg models.KafkaMessage) erro
|
||||
Code: msg.AuthCode,
|
||||
}
|
||||
|
||||
tokens, err := m.bitrixClient.CreateWebHook(&forGetTokens, msg.RefererURL)
|
||||
tokens, err := m.bitrixClient.CreateWebHook(&forGetTokens, true)
|
||||
if err != nil {
|
||||
m.logger.Error("error getting tokens in method user re-login:", zap.Error(err))
|
||||
return err
|
||||
|
@ -45,6 +45,7 @@ func NewBitrixClient(deps BitrixDeps) *Bitrix {
|
||||
}
|
||||
}
|
||||
|
||||
// todo растестить этот запрос пока не проходит
|
||||
// https://dev.1c-bitrix.ru/rest_help/users/user_search.php
|
||||
func (b *Bitrix) GetUserList(accessToken string, domain string) (*models.ResponseGetListUsers, error) {
|
||||
for {
|
||||
@ -80,27 +81,39 @@ func (b *Bitrix) GetUserList(accessToken string, domain string) (*models.Respons
|
||||
}
|
||||
|
||||
// https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=99&LESSON_ID=2486
|
||||
func (b *Bitrix) CreateWebHook(req models.WebHookRequest, domain string) (*models.CreateWebHookResp, error) {
|
||||
// https://apidocs.bitrix24.ru/api-reference/oauth/index.html
|
||||
func (b *Bitrix) CreateWebHook(req models.WebHookRequest, tp bool) (*models.CreateWebHookResp, error) {
|
||||
for {
|
||||
if b.rateLimiter.Check() {
|
||||
req.SetClientID(b.integrationID)
|
||||
req.SetClientSecret(b.integrationSecret)
|
||||
bodyBytes, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
b.logger.Error("error marshal req in CreateWebHook:", zap.Error(err))
|
||||
return nil, err
|
||||
var query string
|
||||
|
||||
if tp {
|
||||
query = fmt.Sprintf(
|
||||
"https://oauth.bitrix.info/oauth/token/?grant_type=%s&client_id=%s&client_secret=%s&code=%s",
|
||||
req.GetGrantType(), b.integrationID, b.integrationSecret, req.GetToken(),
|
||||
)
|
||||
} else {
|
||||
query = fmt.Sprintf(
|
||||
"https://oauth.bitrix.info/oauth/token/?grant_type=%s&client_id=%s&client_secret=%s&refresh_token=%s",
|
||||
req.GetGrantType(), b.integrationID, b.integrationSecret, req.GetToken(),
|
||||
)
|
||||
}
|
||||
agent := b.fiberClient.Get(fmt.Sprintf("https://%s/oauth/token/", domain))
|
||||
agent.Set("Content-Type", "application/json").Body(bodyBytes)
|
||||
|
||||
agent := b.fiberClient.Get(query)
|
||||
agent.Set("Content-Type", "application/json")
|
||||
|
||||
statusCode, resBody, errs := agent.Bytes()
|
||||
if len(errs) > 0 {
|
||||
for _, err = range errs {
|
||||
for _, err := range errs {
|
||||
b.logger.Error("error sending request in CreateWebHook for create or update tokens", zap.Error(err))
|
||||
}
|
||||
return nil, fmt.Errorf("request failed: %v", errs[0])
|
||||
}
|
||||
|
||||
fmt.Println("CreateWebHook", string(resBody), statusCode)
|
||||
|
||||
if statusCode != fiber.StatusOK {
|
||||
errorMessage := fmt.Sprintf("received an incorrect response from CreateWebHook: %s", string(resBody))
|
||||
b.logger.Error(errorMessage, zap.Int("status", statusCode))
|
||||
@ -108,7 +121,7 @@ func (b *Bitrix) CreateWebHook(req models.WebHookRequest, domain string) (*model
|
||||
}
|
||||
|
||||
var tokens models.CreateWebHookResp
|
||||
err = json.Unmarshal(resBody, &tokens)
|
||||
err := json.Unmarshal(resBody, &tokens)
|
||||
if err != nil {
|
||||
b.logger.Error("error unmarshal CreateWebHookResp:", zap.Error(err))
|
||||
return nil, err
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"go.uber.org/zap"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/bitrix/internal/models"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/bitrix/internal/workers/limiter"
|
||||
"testing"
|
||||
"time"
|
||||
@ -151,3 +152,47 @@ func TestGetListFields(t *testing.T) {
|
||||
//
|
||||
//"CATEGORY_ID":"1"
|
||||
}
|
||||
|
||||
func Test_Auth(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
lim := limiter.NewRateLimiter(ctx, 50, 2*time.Second)
|
||||
logger := zap.NewNop()
|
||||
b := NewBitrixClient(BitrixDeps{
|
||||
Logger: logger,
|
||||
RedirectionURL: "https://squiz.pena.digital/integrations",
|
||||
IntegrationID: "app.670bd825e44c52.61826940",
|
||||
IntegrationSecret: "Ki0MElZXS6dE6tRsGxixri2jmxbxF2Xa4qQpBPziGdAvvLAHJx",
|
||||
RateLimiter: lim,
|
||||
})
|
||||
|
||||
tokens, err := b.CreateWebHook(&models.CreateWebHookReq{
|
||||
GrantType: "authorization_code",
|
||||
Code: "50cb1067007232200072541200000001000007aab0e419e6de4ebff7dd4b238c144bae",
|
||||
}, true)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
fmt.Println(tokens)
|
||||
}
|
||||
|
||||
func Test_GetListUsers(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
lim := limiter.NewRateLimiter(ctx, 50, 2*time.Second)
|
||||
logger := zap.NewNop()
|
||||
b := NewBitrixClient(BitrixDeps{
|
||||
Logger: logger,
|
||||
RedirectionURL: "https://squiz.pena.digital/integrations",
|
||||
IntegrationID: "app.670bd825e44c52.61826940",
|
||||
IntegrationSecret: "Ki0MElZXS6dE6tRsGxixri2jmxbxF2Xa4qQpBPziGdAvvLAHJx",
|
||||
RateLimiter: lim,
|
||||
})
|
||||
|
||||
r, err := b.GetUserList("6a901167007232200072541200000001000007701b6ceba9a960508e993456e9b48a5a", "b24-s5jg6c.bitrix24.ru")
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
fmt.Println(r)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user