dev #8
46
.env
46
.env
@ -1,27 +1,24 @@
|
|||||||
# General application settings
|
# General application settings
|
||||||
APP_NAME=codeword
|
APP_NAME=codeword
|
||||||
HTTP_HOST="localhost"
|
CLIENT_HTTP_URL="localhost:3000"
|
||||||
HTTP_PORT="8080"
|
ADMIN_HTTP_URL="localhost:3001"
|
||||||
|
GRPC_URL="localhost:9000"
|
||||||
|
|
||||||
# MongoDB settings
|
# MongoDB settings
|
||||||
MONGO_HOST="127.0.0.1"
|
MONGO_URL="mongodb://test:test@localhost:27020/?authSource=admin"
|
||||||
MONGO_PORT="27020"
|
MONGO_DB_NAME="admin"
|
||||||
MONGO_USER="test"
|
|
||||||
MONGO_PASSWORD="test"
|
|
||||||
MONGO_DB="admin"
|
|
||||||
MONGO_AUTH="admin"
|
|
||||||
|
|
||||||
# Redis settings
|
# Redis settings
|
||||||
REDIS_ADDR="10.6.0.23:6379"
|
REDIS_HOST="localhost:6379"
|
||||||
REDIS_PASS="Redalert2"
|
REDIS_PASS="admin"
|
||||||
REDIS_DB=3
|
REDIS_DB=2
|
||||||
|
|
||||||
# Keys
|
# Keys
|
||||||
PUBLIC_CURVE_KEY="-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----"
|
ENCRYPT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----"
|
||||||
|
|
||||||
PRIVATE_CURVE_KEY="-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----"
|
ENCRYPT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----"
|
||||||
|
|
||||||
SIGN_SECRET="pena-auth-microservice-group"
|
ENCRYPT_SIGN_SECRET="pena-auth-microservice-group"
|
||||||
JWT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
|
JWT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
|
||||||
MIICWwIBAAKBgHgnvr7O2tiApjJfid1orFnIGm6980fZp+Lpbjo+NC/0whMFga2B
|
MIICWwIBAAKBgHgnvr7O2tiApjJfid1orFnIGm6980fZp+Lpbjo+NC/0whMFga2B
|
||||||
iw5b1G2Q/B2u0tpO1Fs/E8z7Lv1nYfr5jx2S8x6BdA4TS2kB9Kf0wn0+7wSlyikH
|
iw5b1G2Q/B2u0tpO1Fs/E8z7Lv1nYfr5jx2S8x6BdA4TS2kB9Kf0wn0+7wSlyikH
|
||||||
@ -43,23 +40,18 @@ JWT_ISSUER="pena-auth-service"
|
|||||||
|
|
||||||
JWT_AUDIENCE="pena"
|
JWT_AUDIENCE="pena"
|
||||||
|
|
||||||
SIGN_SECRET="secret"
|
|
||||||
|
|
||||||
# SMTP settings
|
# SMTP settings
|
||||||
SMTP_API_URL="https://api.smtp.bz/v1/smtp/send"
|
API_URL="https://api.smtp.bz/v1/smtp/send"
|
||||||
SMTP_HOST="connect.mailclient.bz"
|
MAIL_API_KEY="P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev"
|
||||||
SMTP_PORT="587"
|
MAIL_SENDER="noreply@mailing.pena.digital"
|
||||||
SMTP_UNAME="kotilion.95@gmail.com"
|
|
||||||
SMTP_PASS="vWwbCSg4bf0p"
|
|
||||||
SMTP_API_KEY="P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev"
|
|
||||||
SMTP_SENDER="noreply@mailing.pena.digital"
|
|
||||||
|
|
||||||
# URL settings
|
# URL settings
|
||||||
DEFAULT_REDIRECTION_URL = "https://shub.pena.digital/recover/"
|
DEFAULT_REDIRECTION_URL = "https://shub.pena.digital/recover/"
|
||||||
AUTH_EXCHANGE_URL = "http://10.6.0.11:59300/auth/exchange"
|
AUTH_MICROSERVICE_URL = "http://10.6.0.11:59300"
|
||||||
RECOVER_URL = "https://shub.pena.digital/recover/"
|
MAIL_RECOVERY_URL = "https://shub.pena.digital/recover/"
|
||||||
DISCOUNT_ADDRESS = "http://10.6.0.11:9001"
|
DISCOUNT_MICROSERVICE_GRPC_URL = "http://10.6.0.11:9001"
|
||||||
|
TRASH_LOG_HOST = "localhost:7113"
|
||||||
|
|
||||||
# Kafka settings
|
# Kafka settings
|
||||||
KAFKA_BROKERS="10.6.0.11:9092"
|
KAFKA_BROKERS="localhost:9092"
|
||||||
KAFKA_TOPIC_TARIFF="tariffs"
|
KAFKA_TOPIC_TARIFF="tariffs"
|
||||||
|
|||||||
24
.gitea/workflows/deploy.yml
Normal file
24
.gitea/workflows/deploy.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
name: Deploy
|
||||||
|
run-name: ${{ gitea.actor }} build image and push to container registry
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
- 'staging'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
CreateImage:
|
||||||
|
runs-on: [hubstaging]
|
||||||
|
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/build-image.yml@v1.1.6-p
|
||||||
|
with:
|
||||||
|
runner: hubstaging
|
||||||
|
secrets:
|
||||||
|
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
|
||||||
|
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
|
||||||
|
DeployService:
|
||||||
|
runs-on: [hubstaging]
|
||||||
|
needs: CreateImage
|
||||||
|
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/deploy.yml@v1.1.4-p7
|
||||||
|
with:
|
||||||
|
runner: hubstaging
|
||||||
14
.gitea/workflows/lint.yml
Normal file
14
.gitea/workflows/lint.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
name: Lint
|
||||||
|
run-name: ${{ gitea.actor }} produce linting
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'dev'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Lint:
|
||||||
|
runs-on: [hubstaging]
|
||||||
|
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/lint.yml@v1.1.2
|
||||||
|
with:
|
||||||
|
runner: hubstaging
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -160,3 +160,4 @@ fabric.properties
|
|||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,goland,go
|
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,goland,go
|
||||||
/recover.bolt
|
/recover.bolt
|
||||||
|
main
|
||||||
|
|||||||
@ -1,38 +0,0 @@
|
|||||||
include:
|
|
||||||
- project: "devops/pena-continuous-integration"
|
|
||||||
file: "/templates/docker/build-template.gitlab-ci.yml"
|
|
||||||
- project: "devops/pena-continuous-integration"
|
|
||||||
file: "/templates/docker/deploy-template.gitlab-ci.yml"
|
|
||||||
- project: "devops/pena-continuous-integration"
|
|
||||||
file: "/templates/docker/golint.gitlab-ci.yml"
|
|
||||||
- project: "devops/pena-continuous-integration"
|
|
||||||
file: "/templates/docker/service-discovery.gitlab-ci.yml"
|
|
||||||
stages:
|
|
||||||
- lint
|
|
||||||
- build
|
|
||||||
- deploy
|
|
||||||
- service-discovery
|
|
||||||
|
|
||||||
lint:
|
|
||||||
extends: .golint_template
|
|
||||||
|
|
||||||
build-app:
|
|
||||||
extends: .build_template
|
|
||||||
|
|
||||||
deploy-to-staging:
|
|
||||||
rules:
|
|
||||||
- if: "$CI_COMMIT_BRANCH == $STAGING_BRANCH"
|
|
||||||
extends: .deploy_template
|
|
||||||
tags:
|
|
||||||
- staging
|
|
||||||
extends: .deploy_template
|
|
||||||
|
|
||||||
deploy-to-prod:
|
|
||||||
rules:
|
|
||||||
- if: "$CI_COMMIT_BRANCH == $PRODUCTION_BRANCH"
|
|
||||||
tags:
|
|
||||||
- prod
|
|
||||||
extends: .deploy_template
|
|
||||||
|
|
||||||
service-discovery:
|
|
||||||
extends: .sd_artefacts_template
|
|
||||||
@ -1,5 +1,5 @@
|
|||||||
# BUILD
|
# BUILD
|
||||||
FROM penahub.gitlab.yandexcloud.net:5050/devops/dockerhub-backup/golang AS build
|
FROM gitea.pena/penadevops/container-images/golang:main as build
|
||||||
|
|
||||||
# Update packages and clear cache
|
# Update packages and clear cache
|
||||||
RUN apk add --no-cache curl
|
RUN apk add --no-cache curl
|
||||||
@ -10,14 +10,12 @@ RUN mkdir /app/bin -p
|
|||||||
# Add main files to app
|
# Add main files to app
|
||||||
RUN apk add git
|
RUN apk add git
|
||||||
ADD . .
|
ADD . .
|
||||||
ENV GOPRIVATE=penahub.gitlab.yandexcloud.net/backend/penahub_common
|
|
||||||
RUN git config --global url."https://buildToken:glpat-axA8ttckx3aPf_xd2Dym@penahub.gitlab.yandexcloud.net/".insteadOf "https://penahub.gitlab.yandexcloud.net/"
|
|
||||||
RUN go mod download
|
RUN go mod download
|
||||||
# Build app
|
# Build app
|
||||||
RUN GOOS=linux go build -o bin ./...
|
RUN GOOS=linux go build -o bin ./...
|
||||||
|
|
||||||
# PRODUCTION
|
# PRODUCTION
|
||||||
FROM penahub.gitlab.yandexcloud.net:5050/devops/dockerhub-backup/alpine AS production
|
FROM gitea.pena/penadevops/container-images/alpine:main
|
||||||
|
|
||||||
# Install packages
|
# Install packages
|
||||||
RUN apk --no-cache add ca-certificates
|
RUN apk --no-cache add ca-certificates
|
||||||
|
|||||||
@ -3,8 +3,8 @@ version: "3"
|
|||||||
tasks:
|
tasks:
|
||||||
update-linter:
|
update-linter:
|
||||||
cmds:
|
cmds:
|
||||||
- go get -u penahub.gitlab.yandexcloud.net/devops/linters/golang.git
|
- go get -u gitea.pena/PenaSide/linters-golang
|
||||||
lint:
|
lint:
|
||||||
cmds:
|
cmds:
|
||||||
- task: update-linter
|
- task: update-linter
|
||||||
- cmd: golangci-lint run -v -c $(go list -f '{{"{{"}}.Dir{{"}}"}}' -m penahub.gitlab.yandexcloud.net/devops/linters/golang.git)/.golangci.yml
|
- cmd: golangci-lint run -v -c $(go list -f '{{"{{"}}.Dir{{"}}"}}' -m gitea.pena/PenaSide/linters-golang)/.golangci.yml
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/app"
|
|
||||||
"codeword/internal/initialize"
|
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/app"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
_ "gitea.pena/PenaSide/linters-golang/pkg/dummy"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
_ "penahub.gitlab.yandexcloud.net/devops/linters/golang.git/pkg/dummy"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
107
cmd/validator/main.go
Normal file
107
cmd/validator/main.go
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/utils/encrypt"
|
||||||
|
"gitea.pena/PenaSide/common/validate"
|
||||||
|
"github.com/caarlos0/env/v8"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
config, err := loadConfig()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("error loading config: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
urls := []string{
|
||||||
|
config.AuthMicroserviceURL,
|
||||||
|
config.DiscountMicroserviceGRPC,
|
||||||
|
config.TrashLogHost,
|
||||||
|
config.ExternalCfg.MailClientCfg.ApiURL,
|
||||||
|
config.DefaultRedirectionURL,
|
||||||
|
config.MailRecoveryURL,
|
||||||
|
}
|
||||||
|
if err = validateURLs(urls); err != nil {
|
||||||
|
log.Fatalf("error validating urls: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = validateEncrypt(config); err != nil {
|
||||||
|
log.Fatalf("error validating encrypt: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = validate.ValidateRedis(config.RedisHost, config.RedisPassword, config.RedisDB); err != nil {
|
||||||
|
log.Fatalf("error validating redis: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = validate.ValidateKafka(config.KafkaBrokers, config.KafkaTopicTariff); err != nil {
|
||||||
|
log.Fatalf("error validating kafka: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = validate.ValidateSmtp(config.ExternalCfg.MailClientCfg.ApiKey); err != nil {
|
||||||
|
log.Fatalf("error validating smtp: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = validate.ValidateMongo(config.ExternalCfg.Database); err != nil {
|
||||||
|
log.Fatalf("error validating mongodb: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadConfig() (*initialize.Config, error) {
|
||||||
|
var config initialize.Config
|
||||||
|
|
||||||
|
if err := env.Parse(&config); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &config, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateURLs(urls []string) error {
|
||||||
|
for index, u := range urls {
|
||||||
|
if u == "" {
|
||||||
|
return fmt.Errorf("empty url, index: %d", index)
|
||||||
|
}
|
||||||
|
// todo check the liveness of these URLs, many services do not support
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateEncrypt(cfg *initialize.Config) error {
|
||||||
|
if cfg.EncryptPrivateKey == "" {
|
||||||
|
return errors.New("encrypt private key dont be empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.EncryptPublicKey == "" {
|
||||||
|
return errors.New("encrypt public key dont be empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.EncryptSignSecret == "" {
|
||||||
|
return errors.New("encrypt sign secret dont be empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
encryptUtil := encrypt.New(&encrypt.EncryptDeps{
|
||||||
|
PrivateKey: cfg.EncryptPrivateKey,
|
||||||
|
PublicKey: cfg.EncryptPublicKey,
|
||||||
|
SignSecret: cfg.EncryptSignSecret,
|
||||||
|
})
|
||||||
|
|
||||||
|
sign, err := encryptUtil.SignCommonSecret()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
ok, err := encryptUtil.VerifySignature(sign)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
return errors.New("failed verify signature, invalid keys")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
16
cmd/validator/main_test.go
Normal file
16
cmd/validator/main_test.go
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestValidateEncrypt(t *testing.T) {
|
||||||
|
err := validateEncrypt(&initialize.Config{
|
||||||
|
EncryptPublicKey: "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----",
|
||||||
|
EncryptPrivateKey: "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----",
|
||||||
|
EncryptSignSecret: "pena-auth-microservice-group",
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
@ -2,48 +2,34 @@ version: '3.3'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
codewordv1.0.0:
|
codewordv1.0.0:
|
||||||
hostname: codewordv1.0.0
|
image: gitea.pena:3000/penaside/codeword/staging:$GITHUB_RUN_NUMBER
|
||||||
container_name: codewordv1.0.0
|
|
||||||
image: $CI_REGISTRY_IMAGE/staging:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
|
||||||
tty: true
|
tty: true
|
||||||
environment:
|
environment:
|
||||||
APP_NAME: 'codeword'
|
APP_NAME: 'codeword'
|
||||||
HTTP_CLIENT_HOST: '0.0.0.0'
|
CLIENT_HTTP_URL: '0.0.0.0:3000'
|
||||||
HTTP_CLIENT_PORT: '3000'
|
ADMIN_HTTP_URL: '0.0.0.0:3001'
|
||||||
HTTP_ADMIN_HOST: '0.0.0.0'
|
MONGO_URL: mongodb://auth-service-user:LFYFpTvqtxSzXDJV@10.7.0.6:27017/?authSource=auth
|
||||||
HTTP_ADMIN_PORT: '3001'
|
ENCRYPT_PUBLIC_KEY: "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----"
|
||||||
MONGO_HOST: '10.8.0.6'
|
ENCRYPT_PRIVATE_KEY: "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----"
|
||||||
MONGO_PORT: '27017'
|
ENCRYPT_SIGN_SECRET: 'pena-auth-microservice-group'
|
||||||
MONGO_USER: 'auth-service-user'
|
REDIS_HOST: '10.7.0.6:6379'
|
||||||
MONGO_PASSWORD: 'LFYFpTvqtxSzXDJV'
|
REDIS_PASSWORD: 'Redalert2'
|
||||||
MONGO_DB: 'auth'
|
|
||||||
MONGO_AUTH: 'auth'
|
|
||||||
PUBLIC_CURVE_KEY: "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEbnIvjIMle4rqVol6K2XUqOxHy1KJoNoZdKJrRUPKL4=\n-----END PUBLIC KEY-----"
|
|
||||||
PRIVATE_CURVE_KEY: "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKn0BKwF3vZvODgWAnUIwQhd8de5oZhY48gc23EWfrfs\n-----END PRIVATE KEY-----"
|
|
||||||
SIGN_SECRET: 'pena-auth-microservice-group'
|
|
||||||
REDIS_ADDR: '10.8.0.5:6379'
|
|
||||||
REDIS_PASS: 'Redalert2'
|
|
||||||
REDIS_DB: 3
|
REDIS_DB: 3
|
||||||
SMTP_API_URL: 'https://api.smtp.bz/v1/smtp/send'
|
API_URL: 'https://api.smtp.bz/v1/smtp/send'
|
||||||
SMTP_HOST: 'connect.mailclient.bz'
|
MAIL_API_KEY: 'P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev'
|
||||||
SMTP_PORT: '587'
|
MAIL_SENDER: 'noreply@mailing.pena.digital'
|
||||||
SMTP_UNAME: 'kotilion.95@gmail.com'
|
|
||||||
SMTP_PASS: 'vWwbCSg4bf0p'
|
|
||||||
SMTP_API_KEY: 'P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev'
|
|
||||||
SMTP_SENDER: 'noreply@mailing.pena.digital'
|
|
||||||
DEFAULT_REDIRECTION_URL: 'https://shub.pena.digital/'
|
DEFAULT_REDIRECTION_URL: 'https://shub.pena.digital/'
|
||||||
AUTH_EXCHANGE_URL: 'http://10.8.0.6:59300/auth/exchange'
|
AUTH_EXCHANGE_URL: 'http://10.7.0.6:59300/auth/exchange'
|
||||||
RECOVERY_URL: 'https://shub.pena.digital/codeword/v1.0.0/recover/'
|
RECOVERY_URL: 'https://shub.pena.digital/codeword/v1.0.0/recover/'
|
||||||
JWT_AUDIENCE: 'pena'
|
JWT_AUDIENCE: 'pena'
|
||||||
JWT_ISSUER: 'pena-auth-service'
|
JWT_ISSUER: 'pena-auth-service'
|
||||||
JWT_PUBLIC_KEY: $JWT_PUBLIC_KEY
|
JWT_PUBLIC_KEY: $JWT_PUBLIC_KEY
|
||||||
KAFKA_BROKERS: "10.8.0.6:9092"
|
KAFKA_BROKERS: "10.7.0.6:9092"
|
||||||
KAFKA_TOPIC_TARIFF: "tariffs"
|
KAFKA_TOPIC_TARIFF: "tariffs"
|
||||||
DISCOUNT_ADDRESS: "10.8.0.6:9001"
|
DISCOUNT_ADDRESS: "10.7.0.6:9001"
|
||||||
GRPC_HOST: "0.0.0.0"
|
GRPC_HOST: "0.0.0.0"
|
||||||
TRASH_LOG_HOST: "10.8.0.15:7113"
|
TRASH_LOG_HOST: "10.7.0.5:7113"
|
||||||
MODULE_LOGGER: "codeword-staging"
|
|
||||||
ports:
|
ports:
|
||||||
- 10.8.0.6:19100:3000
|
- 10.7.0.6:19100:3000
|
||||||
- 10.8.0.6:29100:3001
|
- 10.7.0.6:29100:3001
|
||||||
- 10.8.0.6:39100:9000
|
- 10.7.0.6:39100:9000
|
||||||
|
|||||||
49
go.mod
49
go.mod
@ -1,27 +1,29 @@
|
|||||||
module codeword
|
module gitea.pena/PenaSide/codeword
|
||||||
|
|
||||||
go 1.22.2
|
go 1.23.2
|
||||||
|
|
||||||
|
toolchain go1.23.4
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517
|
||||||
|
gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9
|
||||||
|
gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735
|
||||||
|
gitea.pena/PenaSide/trashlog v0.0.0-20241210185614-9ec567aa311f
|
||||||
github.com/caarlos0/env/v8 v8.0.0
|
github.com/caarlos0/env/v8 v8.0.0
|
||||||
github.com/go-redis/redis/v8 v8.11.5
|
github.com/go-redis/redis/v8 v8.11.5
|
||||||
github.com/gofiber/fiber/v2 v2.51.0
|
github.com/gofiber/fiber/v2 v2.52.5
|
||||||
github.com/golang-jwt/jwt/v5 v5.2.0
|
github.com/golang-jwt/jwt/v5 v5.2.0
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
|
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
|
||||||
github.com/joho/godotenv v1.5.1
|
github.com/joho/godotenv v1.5.1
|
||||||
github.com/pioz/faker v1.7.3
|
github.com/pioz/faker v1.7.3
|
||||||
github.com/rs/xid v1.5.0
|
github.com/rs/xid v1.6.0
|
||||||
github.com/stretchr/testify v1.8.4
|
github.com/stretchr/testify v1.9.0
|
||||||
github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf
|
github.com/twmb/franz-go v1.18.0
|
||||||
github.com/twmb/franz-go v1.15.4
|
|
||||||
go.mongodb.org/mongo-driver v1.13.1
|
go.mongodb.org/mongo-driver v1.13.1
|
||||||
go.uber.org/zap v1.27.0
|
go.uber.org/zap v1.27.0
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac
|
google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac
|
||||||
google.golang.org/grpc v1.60.1
|
google.golang.org/grpc v1.60.1
|
||||||
google.golang.org/protobuf v1.32.0
|
google.golang.org/protobuf v1.32.0
|
||||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607202348-efe5f2bf3e8c
|
|
||||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3
|
|
||||||
penahub.gitlab.yandexcloud.net/external/trashlog v0.1.5
|
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
@ -31,22 +33,28 @@ require (
|
|||||||
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect
|
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||||
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
|
github.com/go-ini/ini v1.67.0 // indirect
|
||||||
|
github.com/goccy/go-json v0.10.3 // indirect
|
||||||
github.com/golang/protobuf v1.5.3 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
github.com/golang/snappy v0.0.1 // indirect
|
github.com/golang/snappy v0.0.1 // indirect
|
||||||
github.com/google/uuid v1.4.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/klauspost/compress v1.16.7 // indirect
|
github.com/klauspost/compress v1.17.11 // indirect
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||||
|
github.com/minio/md5-simd v1.1.2 // indirect
|
||||||
|
github.com/minio/minio-go/v7 v7.0.81 // indirect
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.19 // indirect
|
github.com/pierrec/lz4/v4 v4.1.21 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
github.com/rivo/uniseg v0.2.0 // indirect
|
github.com/rivo/uniseg v0.2.0 // indirect
|
||||||
github.com/skeris/appInit v1.0.2 // indirect
|
github.com/skeris/appInit v1.0.2 // indirect
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 // indirect
|
github.com/twmb/franz-go/pkg/kmsg v1.9.0 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasthttp v1.50.0 // indirect
|
github.com/valyala/fasthttp v1.51.0 // indirect
|
||||||
github.com/valyala/tcplisten v1.0.0 // indirect
|
github.com/valyala/tcplisten v1.0.0 // indirect
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
||||||
github.com/xdg-go/scram v1.1.2 // indirect
|
github.com/xdg-go/scram v1.1.2 // indirect
|
||||||
@ -54,14 +62,15 @@ require (
|
|||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
|
||||||
go.etcd.io/bbolt v1.3.6 // indirect
|
go.etcd.io/bbolt v1.3.6 // indirect
|
||||||
go.uber.org/multierr v1.10.0 // indirect
|
go.uber.org/multierr v1.10.0 // indirect
|
||||||
golang.org/x/crypto v0.17.0 // indirect
|
golang.org/x/crypto v0.28.0 // indirect
|
||||||
golang.org/x/net v0.17.0 // indirect
|
golang.org/x/net v0.30.0 // indirect
|
||||||
golang.org/x/sync v0.4.0 // indirect
|
golang.org/x/sync v0.8.0 // indirect
|
||||||
golang.org/x/sys v0.15.0 // indirect
|
golang.org/x/sys v0.26.0 // indirect
|
||||||
golang.org/x/text v0.14.0 // indirect
|
golang.org/x/text v0.19.0 // indirect
|
||||||
google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect
|
google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
|
||||||
gopkg.in/tucnak/telebot.v2 v2.5.0 // indirect
|
gopkg.in/tucnak/telebot.v2 v2.5.0 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
88
go.sum
88
go.sum
@ -1,4 +1,12 @@
|
|||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517 h1:EgBe8VcdPwmxbSzYLndncP+NmR73uYuXxkTeDlEttEE=
|
||||||
|
gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517/go.mod h1:91EuBCgcqgJ6mG36n2pds8sPwwfaJytLWOzY3h2YFKU=
|
||||||
|
gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9 h1:tBkXWNIt8icmkMMnq8MA421RWkUy4OZh5P7C3q8uCu4=
|
||||||
|
gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9/go.mod h1:sanhSL8aEsfcq21P+eItYiAnKAre+B67nGJmDfk2cf0=
|
||||||
|
gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735 h1:jDVeUhGBTXBibmW5dmtJg2m2+z5z2Rf6J4G0LpjVoJ0=
|
||||||
|
gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735/go.mod h1:gdd+vOT6up9STkEbxa2qESLIMZFjCmRbkcheFQCVgZU=
|
||||||
|
gitea.pena/PenaSide/trashlog v0.0.0-20241210185614-9ec567aa311f h1:vwuUtO03Qowaf2XtSxDeI817+MsvPp/M4jAC2ecYr1M=
|
||||||
|
gitea.pena/PenaSide/trashlog v0.0.0-20241210185614-9ec567aa311f/go.mod h1:GRfWJerTUlgy82CiYAxE4tVYSVV54zEJJQy17Fx46E4=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
|
github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
|
||||||
github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
|
github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
|
||||||
@ -21,6 +29,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
|
|||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
||||||
|
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||||
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||||
@ -29,14 +39,18 @@ github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
|
|||||||
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
|
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
|
||||||
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
||||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||||
|
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
||||||
|
github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
|
||||||
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
|
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
|
||||||
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
|
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
|
||||||
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
|
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
|
||||||
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
|
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
|
||||||
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||||
github.com/gofiber/fiber/v2 v2.51.0 h1:JNACcZy5e2tGApWB2QrRpenTWn0fq0hkFm6k0C86gKQ=
|
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
|
||||||
github.com/gofiber/fiber/v2 v2.51.0/go.mod h1:xaQRZQJGqnKOQnbQw+ltvku3/h8QxvNi8o6JiJ7Ll0U=
|
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||||
|
github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo=
|
||||||
|
github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
|
||||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||||
github.com/golang-jwt/jwt/v5 v5.2.0 h1:d/ix8ftRUorsN+5eMIlF4T6J8CAt9rch3My2winC1Jw=
|
github.com/golang-jwt/jwt/v5 v5.2.0 h1:d/ix8ftRUorsN+5eMIlF4T6J8CAt9rch3My2winC1Jw=
|
||||||
@ -57,8 +71,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
|
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
|
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
|
||||||
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
|
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
|
||||||
@ -67,8 +81,11 @@ github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwA
|
|||||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
||||||
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
|
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
|
||||||
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
@ -85,6 +102,10 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
|
|||||||
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
||||||
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||||
|
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
||||||
|
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
|
||||||
|
github.com/minio/minio-go/v7 v7.0.81 h1:SzhMN0TQ6T/xSBu6Nvw3M5M8voM+Ht8RH3hE8S7zxaA=
|
||||||
|
github.com/minio/minio-go/v7 v7.0.81/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0=
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
|
||||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||||
@ -96,8 +117,8 @@ github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5h
|
|||||||
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||||
github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
|
github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
|
||||||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||||
github.com/pierrec/lz4/v4 v4.1.19 h1:tYLzDnjDXh9qIxSTKHwXwOYmm9d887Y7Y1ZkyXYHAN4=
|
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
|
||||||
github.com/pierrec/lz4/v4 v4.1.19/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
||||||
github.com/pioz/faker v1.7.3 h1:Tez8Emuq0UN+/d6mo3a9m/9ZZ/zdfJk0c5RtRatrceM=
|
github.com/pioz/faker v1.7.3 h1:Tez8Emuq0UN+/d6mo3a9m/9ZZ/zdfJk0c5RtRatrceM=
|
||||||
github.com/pioz/faker v1.7.3/go.mod h1:xSpay5w/oz1a6+ww0M3vfpe40pSIykeUPeWEc3TvVlc=
|
github.com/pioz/faker v1.7.3/go.mod h1:xSpay5w/oz1a6+ww0M3vfpe40pSIykeUPeWEc3TvVlc=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
@ -109,8 +130,8 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:
|
|||||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
|
||||||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
|
||||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||||
github.com/skeris/appInit v1.0.2 h1:Hr4KbXYd6kolTVq4cXGqDpgnpmaauiOiKizA1+Ep4KQ=
|
github.com/skeris/appInit v1.0.2 h1:Hr4KbXYd6kolTVq4cXGqDpgnpmaauiOiKizA1+Ep4KQ=
|
||||||
github.com/skeris/appInit v1.0.2/go.mod h1:4ElEeXWVGzU3dlYq/eMWJ/U5hd+LKisc1z3+ySh1XmY=
|
github.com/skeris/appInit v1.0.2/go.mod h1:4ElEeXWVGzU3dlYq/eMWJ/U5hd+LKisc1z3+ySh1XmY=
|
||||||
@ -122,20 +143,18 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
|
|||||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/themakers/bdd v0.0.0-20210316111417-6b1dfe326f33 h1:N9f/Q+2Ssa+yDcbfaoLTYvXmdeyUUxsJKdPUVsjSmiA=
|
github.com/themakers/bdd v0.0.0-20210316111417-6b1dfe326f33 h1:N9f/Q+2Ssa+yDcbfaoLTYvXmdeyUUxsJKdPUVsjSmiA=
|
||||||
github.com/themakers/bdd v0.0.0-20210316111417-6b1dfe326f33/go.mod h1:rpcH99JknBh8seZmlOlUg51gasZH6QH34oXNsIwYT6E=
|
github.com/themakers/bdd v0.0.0-20210316111417-6b1dfe326f33/go.mod h1:rpcH99JknBh8seZmlOlUg51gasZH6QH34oXNsIwYT6E=
|
||||||
github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf h1:TJJm6KcBssmbWzplF5lzixXl1RBAi/ViPs1GaSOkhwo=
|
github.com/twmb/franz-go v1.18.0 h1:25FjMZfdozBywVX+5xrWC2W+W76i0xykKjTdEeD2ejw=
|
||||||
github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf/go.mod h1:1FsorU3vnXO9xS9SrhUp8fRb/6H/Zfll0rPt1i4GWaA=
|
github.com/twmb/franz-go v1.18.0/go.mod h1:zXCGy74M0p5FbXsLeASdyvfLFsBvTubVqctIaa5wQ+I=
|
||||||
github.com/twmb/franz-go v1.15.4 h1:qBCkHaiutetnrXjAUWA99D9FEcZVMt2AYwkH3vWEQTw=
|
github.com/twmb/franz-go/pkg/kmsg v1.9.0 h1:JojYUph2TKAau6SBtErXpXGC7E3gg4vGZMv9xFU/B6M=
|
||||||
github.com/twmb/franz-go v1.15.4/go.mod h1:rC18hqNmfo8TMc1kz7CQmHL74PLNF8KVvhflxiiJZCU=
|
github.com/twmb/franz-go/pkg/kmsg v1.9.0/go.mod h1:CMbfazviCyY6HM0SXuG5t9vOwYDHRCSrJJyBAe5paqg=
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqjJYoij2E=
|
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0/go.mod h1:se9Mjdt0Nwzc9lnjJ0HyDtLyBnaBDAd7pCje47OhSyw=
|
|
||||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
github.com/valyala/fasthttp v1.50.0 h1:H7fweIlBm0rXLs2q0XbalvJ6r0CUPFWK3/bB4N13e9M=
|
github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
|
||||||
github.com/valyala/fasthttp v1.50.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
|
github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g=
|
||||||
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
|
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
|
||||||
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
|
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
|
||||||
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
||||||
@ -173,8 +192,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
|
|||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
|
||||||
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
@ -195,8 +214,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
|
|||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
|
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
||||||
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
@ -204,8 +223,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
|
|||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
|
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
||||||
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
@ -219,9 +238,10 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
|
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
|
||||||
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@ -230,8 +250,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
@ -291,13 +311,5 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607202348-efe5f2bf3e8c h1:CWb4UcuNXhd1KTNOmy2U0TJO4+Qxgxrj5cwkyFqbgrk=
|
|
||||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607202348-efe5f2bf3e8c/go.mod h1:+bPxq2wfW5S1gd+83vZYmHm33AE7nEBfznWS8AM1TKE=
|
|
||||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240803124813-79e62d2acf3c h1:imtXaIVscs8it6SfAmDxjNxqQSF44GgCTl1N6JT6unA=
|
|
||||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240803124813-79e62d2acf3c/go.mod h1:i7M72RIpkSjcQtHID6KKj9RT/EYZ1rxS6tIPKWa/BSY=
|
|
||||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240828181923-80f1728efccc h1:tKp1NYn+FJOq/mCyc4SJjcGdYdr1AhXnyw7f80uex0A=
|
|
||||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240828181923-80f1728efccc/go.mod h1:i7M72RIpkSjcQtHID6KKj9RT/EYZ1rxS6tIPKWa/BSY=
|
|
||||||
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 h1:sf6e2mp582L3i/FMDd2q6QuWm1njRXzYpIX0SipsvM4=
|
||||||
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3/go.mod h1:i7M72RIpkSjcQtHID6KKj9RT/EYZ1rxS6tIPKWa/BSY=
|
penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3/go.mod h1:i7M72RIpkSjcQtHID6KKj9RT/EYZ1rxS6tIPKWa/BSY=
|
||||||
penahub.gitlab.yandexcloud.net/external/trashlog v0.1.5 h1:amsK0bkSJxBisk334aFo5ZmVPvN1dBT0Sv5j3V5IsT8=
|
|
||||||
penahub.gitlab.yandexcloud.net/external/trashlog v0.1.5/go.mod h1:J8kQNEP4bL7ZNKHxuT4tfe6a3FHyovpAPkyytN4qllc=
|
|
||||||
|
|||||||
@ -1,29 +1,29 @@
|
|||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AuthClientDeps struct {
|
type AuthClientDeps struct {
|
||||||
AuthUrl string
|
AuthUrl string
|
||||||
FiberClient *fiber.Client
|
Logger *zap.Logger
|
||||||
Logger *zap.Logger
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type AuthClient struct {
|
type AuthClient struct {
|
||||||
deps AuthClientDeps
|
authUrl string
|
||||||
|
fiberClient *fiber.Client
|
||||||
|
logger *zap.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAuthClient(deps AuthClientDeps) *AuthClient {
|
func NewAuthClient(deps AuthClientDeps) *AuthClient {
|
||||||
if deps.FiberClient == nil {
|
|
||||||
deps.FiberClient = fiber.AcquireClient()
|
|
||||||
}
|
|
||||||
return &AuthClient{
|
return &AuthClient{
|
||||||
deps: deps,
|
authUrl: deps.AuthUrl,
|
||||||
|
fiberClient: fiber.AcquireClient(),
|
||||||
|
logger: deps.Logger,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,30 +35,30 @@ func (a *AuthClient) RefreshAuthToken(userID, signature string) (*models.Refresh
|
|||||||
|
|
||||||
bodyBytes, err := json.Marshal(body)
|
bodyBytes, err := json.Marshal(body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.deps.Logger.Error("Failed to encode request body", zap.Error(err))
|
a.logger.Error("Failed to encode request body", zap.Error(err))
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
agent := a.deps.FiberClient.Post(a.deps.AuthUrl)
|
agent := a.fiberClient.Post(fmt.Sprintf("%s/auth/exchange", a.authUrl))
|
||||||
agent.Set("Content-Type", "application/json").Body(bodyBytes)
|
agent.Set("Content-Type", "application/json").Body(bodyBytes)
|
||||||
|
|
||||||
statusCode, resBody, errs := agent.Bytes()
|
statusCode, resBody, errs := agent.Bytes()
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
for _, err := range errs {
|
for _, err := range errs {
|
||||||
a.deps.Logger.Error("Error in exchange auth token request", zap.Error(err))
|
a.logger.Error("Error in exchange auth token request", zap.Error(err))
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("request failed: %v", errs)
|
return nil, fmt.Errorf("request failed: %v", errs)
|
||||||
}
|
}
|
||||||
|
|
||||||
if statusCode != fiber.StatusOK {
|
if statusCode != fiber.StatusOK {
|
||||||
errorMessage := fmt.Sprintf("received an incorrect response from the authentication service: %d", statusCode)
|
errorMessage := fmt.Sprintf("received an incorrect response from the authentication service: %d", statusCode)
|
||||||
a.deps.Logger.Error(errorMessage, zap.Int("status", statusCode), zap.String("respBody", string(resBody)), zap.String("UserID", userID),zap.String("sign", signature))
|
a.logger.Error(errorMessage, zap.Int("status", statusCode), zap.String("respBody", string(resBody)), zap.String("UserID", userID), zap.String("sign", signature))
|
||||||
return nil, fmt.Errorf(errorMessage)
|
return nil, fmt.Errorf(errorMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
var tokens models.RefreshResponse
|
var tokens models.RefreshResponse
|
||||||
if err := json.Unmarshal(resBody, &tokens); err != nil {
|
if err := json.Unmarshal(resBody, &tokens); err != nil {
|
||||||
a.deps.Logger.Error("failed to unmarshal auth service response", zap.Error(err))
|
a.logger.Error("failed to unmarshal auth service response", zap.Error(err))
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,46 +9,46 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type RecoveryEmailSenderDeps struct {
|
type RecoveryEmailSenderDeps struct {
|
||||||
SmtpApiUrl string
|
ApiUrl string
|
||||||
SmtpHost string
|
Sender string
|
||||||
SmtpPort string
|
|
||||||
SmtpSender string
|
|
||||||
Username string
|
|
||||||
Password string
|
|
||||||
ApiKey string
|
ApiKey string
|
||||||
FiberClient *fiber.Client
|
|
||||||
Logger *zap.Logger
|
Logger *zap.Logger
|
||||||
RecoveryUrl string
|
RecoveryUrl string
|
||||||
}
|
}
|
||||||
|
|
||||||
type RecoveryEmailSender struct {
|
type RecoveryEmailSender struct {
|
||||||
deps RecoveryEmailSenderDeps
|
apiUrl string
|
||||||
|
sender string
|
||||||
|
apiKey string
|
||||||
|
fiberClient *fiber.Client
|
||||||
|
logger *zap.Logger
|
||||||
|
recoveryUrl string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRecoveryEmailSender(deps RecoveryEmailSenderDeps) *RecoveryEmailSender {
|
func NewRecoveryEmailSender(deps RecoveryEmailSenderDeps) *RecoveryEmailSender {
|
||||||
if deps.FiberClient == nil {
|
|
||||||
deps.FiberClient = fiber.AcquireClient()
|
|
||||||
}
|
|
||||||
return &RecoveryEmailSender{
|
return &RecoveryEmailSender{
|
||||||
deps: deps,
|
apiUrl: deps.ApiUrl,
|
||||||
|
sender: deps.Sender,
|
||||||
|
apiKey: deps.ApiKey,
|
||||||
|
fiberClient: fiber.AcquireClient(),
|
||||||
|
logger: deps.Logger,
|
||||||
|
recoveryUrl: deps.RecoveryUrl,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RecoveryEmailSender) SendRecoveryEmail(email string, signature string) error {
|
func (r *RecoveryEmailSender) SendRecoveryEmail(email string, signature string) error {
|
||||||
url := r.deps.SmtpApiUrl
|
|
||||||
|
|
||||||
fmt.Println(email, signature)
|
fmt.Println(email, signature)
|
||||||
|
|
||||||
message := fmt.Sprintf(`Здравствуйте, ваша <a href="%s">ссылка для восстановление пароля</a>(доступна всего 15 минут)
|
message := fmt.Sprintf(`Здравствуйте, ваша <a href="%s">ссылка для восстановление пароля</a>(доступна всего 15 минут)
|
||||||
|
|
||||||
Если это были не вы, напишите пожалуйста в техническую поддержку.`, r.deps.RecoveryUrl + signature)
|
Если это были не вы, напишите пожалуйста в техническую поддержку.`, r.recoveryUrl+signature)
|
||||||
|
|
||||||
form := new(bytes.Buffer)
|
form := new(bytes.Buffer)
|
||||||
writer := multipart.NewWriter(form)
|
writer := multipart.NewWriter(form)
|
||||||
defer writer.Close()
|
defer writer.Close()
|
||||||
|
|
||||||
fields := map[string]string{
|
fields := map[string]string{
|
||||||
"from": r.deps.SmtpSender,
|
"from": r.sender,
|
||||||
"to": email,
|
"to": email,
|
||||||
"subject": "Восстановление доступа",
|
"subject": "Восстановление доступа",
|
||||||
"html": message,
|
"html": message,
|
||||||
@ -64,20 +64,20 @@ func (r *RecoveryEmailSender) SendRecoveryEmail(email string, signature string)
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
req := r.deps.FiberClient.Post(url).Body(form.Bytes()).ContentType(writer.FormDataContentType())
|
req := r.fiberClient.Post(r.apiUrl).Body(form.Bytes()).ContentType(writer.FormDataContentType())
|
||||||
if r.deps.ApiKey != "" {
|
if r.apiKey != "" {
|
||||||
req.Set("Authorization", r.deps.ApiKey)
|
req.Set("Authorization", r.apiKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
statusCode, body, errs := req.Bytes()
|
statusCode, body, errs := req.Bytes()
|
||||||
if errs != nil {
|
if errs != nil {
|
||||||
r.deps.Logger.Error("Error sending request", zap.Error(errs[0]))
|
r.logger.Error("Error sending request", zap.Error(errs[0]))
|
||||||
return errs[0]
|
return errs[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
if statusCode != fiber.StatusOK {
|
if statusCode != fiber.StatusOK {
|
||||||
err := fmt.Errorf("the SMTP service returned an error: %s Response body: %s", statusCode, body)
|
err := fmt.Errorf("the SMTP service returned an error: %s Response body: %s", statusCode, body)
|
||||||
r.deps.Logger.Error("Error sending email", zap.Error(err))
|
r.logger.Error("Error sending email", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,29 +1,29 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/controller/admin/admin_promocode"
|
|
||||||
"codeword/internal/controller/admin/admin_recovery"
|
|
||||||
"codeword/internal/controller/client/client_promocode"
|
|
||||||
"codeword/internal/controller/client/client_recovery"
|
|
||||||
"codeword/internal/controller/rpc_controllers"
|
|
||||||
"codeword/internal/initialize"
|
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/internal/repository"
|
|
||||||
"codeword/internal/server/grpc"
|
|
||||||
httpserver "codeword/internal/server/http"
|
|
||||||
"codeword/internal/services"
|
|
||||||
"codeword/internal/utils/middleware"
|
|
||||||
"codeword/internal/worker/purge_worker"
|
|
||||||
"codeword/internal/worker/recovery_worker"
|
|
||||||
"codeword/pkg/closer"
|
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"github.com/themakers/hlog"
|
"gitea.pena/PenaSide/codeword/internal/controller/admin/admin_promocode"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/controller/admin/admin_recovery"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/controller/client/client_promocode"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/controller/client/client_recovery"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/controller/rpc_controllers"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/server/grpc"
|
||||||
|
httpserver "gitea.pena/PenaSide/codeword/internal/server/http"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/services"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/worker/purge_worker"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/worker/recovery_worker"
|
||||||
|
"gitea.pena/PenaSide/codeword/pkg/closer"
|
||||||
|
"gitea.pena/PenaSide/hlog"
|
||||||
|
"gitea.pena/PenaSide/trashlog/app"
|
||||||
|
"gitea.pena/PenaSide/trashlog/wrappers/zaptrashlog"
|
||||||
"github.com/twmb/franz-go/pkg/kgo"
|
"github.com/twmb/franz-go/pkg/kgo"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
"penahub.gitlab.yandexcloud.net/external/trashlog/app"
|
|
||||||
"penahub.gitlab.yandexcloud.net/external/trashlog/wrappers/zaptrashlog"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
|||||||
return zapcore.NewTee(core, clickHouseLogger)
|
return zapcore.NewTee(core, clickHouseLogger)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
loggerHlog := hlog.New(loggerForHlog).Module(cfg.ModuleLogger)
|
loggerHlog := hlog.New(loggerForHlog).Module(initialize.ModuleLogger)
|
||||||
loggerHlog.With(models.AllFields{})
|
loggerHlog.With(models.AllFields{})
|
||||||
loggerHlog.Emit(app.InfoSvcStarted{})
|
loggerHlog.Emit(app.InfoSvcStarted{})
|
||||||
|
|
||||||
@ -71,9 +71,9 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
|||||||
}
|
}
|
||||||
|
|
||||||
kafkaTariffClient, err := kgo.NewClient(
|
kafkaTariffClient, err := kgo.NewClient(
|
||||||
kgo.SeedBrokers(cfg.KafkaBrokers),
|
kgo.SeedBrokers(cfg.KafkaBrokers...),
|
||||||
kgo.ConsumeResetOffset(kgo.NewOffset().AtStart()),
|
kgo.ConsumeResetOffset(kgo.NewOffset().AtStart()),
|
||||||
kgo.DefaultProduceTopic(cfg.KafkaTopic),
|
kgo.DefaultProduceTopic(cfg.KafkaTopicTariff),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -84,7 +84,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
discountRpcClient, err := initialize.DiscountGRPCClient(cfg.DiscountServiceAddress)
|
discountRpcClient, err := initialize.DiscountGRPCClient(cfg.DiscountMicroserviceGRPC)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("failed to connect to discount service", zap.Error(err))
|
logger.Error("failed to connect to discount service", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
@ -93,7 +93,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
|||||||
brokers := initialize.NewBrokers(initialize.BrokersDeps{
|
brokers := initialize.NewBrokers(initialize.BrokersDeps{
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
TariffClient: kafkaTariffClient,
|
TariffClient: kafkaTariffClient,
|
||||||
Topic: cfg.KafkaTopic,
|
Topic: cfg.KafkaTopicTariff,
|
||||||
})
|
})
|
||||||
|
|
||||||
rdb, err := initialize.Redis(ctx, cfg)
|
rdb, err := initialize.Redis(ctx, cfg)
|
||||||
@ -134,15 +134,13 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
|||||||
Logger: logger,
|
Logger: logger,
|
||||||
Service: recoveryService,
|
Service: recoveryService,
|
||||||
DefaultURL: cfg.DefaultRedirectionURL,
|
DefaultURL: cfg.DefaultRedirectionURL,
|
||||||
RecoveryURL: cfg.RecoveryUrl,
|
RecoveryURL: cfg.MailRecoveryURL,
|
||||||
})
|
})
|
||||||
clientPromoCodeController := client_promocode.NewPromoCodeController(client_promocode.Deps{Logger: logger, PromoCodeService: promoService})
|
clientPromoCodeController := client_promocode.NewPromoCodeController(client_promocode.Deps{Logger: logger, PromoCodeService: promoService})
|
||||||
|
|
||||||
adminRecoveryController := admin_recovery.NewRecoveryController(admin_recovery.Deps{
|
adminRecoveryController := admin_recovery.NewRecoveryController(admin_recovery.Deps{
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
Service: recoveryService,
|
Service: recoveryService,
|
||||||
DefaultURL: cfg.DefaultRedirectionURL,
|
|
||||||
RecoveryURL: cfg.RecoveryUrl,
|
|
||||||
})
|
})
|
||||||
adminPromoCodeController := admin_promocode.NewPromoCodeController(admin_promocode.Deps{Logger: logger, PromoCodeService: promoService})
|
adminPromoCodeController := admin_promocode.NewPromoCodeController(admin_promocode.Deps{Logger: logger, PromoCodeService: promoService})
|
||||||
controllerRpc := rpc_controllers.InitRpcControllers(promoService)
|
controllerRpc := rpc_controllers.InitRpcControllers(promoService)
|
||||||
@ -184,23 +182,20 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger, build B
|
|||||||
})
|
})
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
if err := clientServer.Start(cfg.HTTPClientHost + ":" + cfg.HTTPClientPort); err != nil {
|
if err := clientServer.Start(cfg.ClientHttpURL); err != nil {
|
||||||
logger.Error("Client server startup error", zap.Error(err))
|
logger.Error("Client server startup error", zap.Error(err))
|
||||||
cancel()
|
cancel()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
if err := adminServer.Start(cfg.HTTPAdminHost + ":" + cfg.HTTPAdminPort); err != nil {
|
if err := adminServer.Start(cfg.AdminHttpURL); err != nil {
|
||||||
logger.Error("Admin server startup error", zap.Error(err))
|
logger.Error("Admin server startup error", zap.Error(err))
|
||||||
cancel()
|
cancel()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go grpcServer.Run(grpc.DepsGrpcRun{
|
go grpcServer.Run(cfg.GrpcURL)
|
||||||
Host: cfg.GrpcHost,
|
|
||||||
Port: cfg.GrpcPort,
|
|
||||||
})
|
|
||||||
|
|
||||||
clientServer.ListRoutes()
|
clientServer.ListRoutes()
|
||||||
adminServer.ListRoutes()
|
adminServer.ListRoutes()
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
package admin_promocode
|
package admin_promocode
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/internal/repository"
|
|
||||||
"codeword/internal/services"
|
|
||||||
"codeword/internal/utils/middleware"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/services"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
|
"gitea.pena/PenaSide/common/log_mw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Deps struct {
|
type Deps struct {
|
||||||
|
|||||||
@ -1,33 +1,27 @@
|
|||||||
package admin_recovery
|
package admin_recovery
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/services"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/services"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Deps struct {
|
type Deps struct {
|
||||||
Logger *zap.Logger
|
Logger *zap.Logger
|
||||||
Service *services.RecoveryService
|
Service *services.RecoveryService
|
||||||
DefaultURL string
|
|
||||||
RecoveryURL string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type RecoveryController struct {
|
type RecoveryController struct {
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
service *services.RecoveryService
|
service *services.RecoveryService
|
||||||
defaultURL string
|
|
||||||
recoveryURL string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRecoveryController(deps Deps) *RecoveryController {
|
func NewRecoveryController(deps Deps) *RecoveryController {
|
||||||
return &RecoveryController{
|
return &RecoveryController{
|
||||||
logger: deps.Logger,
|
logger: deps.Logger,
|
||||||
service: deps.Service,
|
service: deps.Service,
|
||||||
defaultURL: deps.DefaultURL,
|
|
||||||
recoveryURL: deps.RecoveryURL,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
package client_promocode
|
package client_promocode
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/internal/repository"
|
|
||||||
"codeword/internal/services"
|
|
||||||
"codeword/internal/utils/middleware"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/services"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
|
"gitea.pena/PenaSide/common/log_mw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Deps struct {
|
type Deps struct {
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
package client_recovery
|
package client_recovery
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/internal/repository"
|
|
||||||
"codeword/internal/services"
|
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"errors"
|
"errors"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/services"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
|
"gitea.pena/PenaSide/common/log_mw"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package rpc_controllers
|
package rpc_controllers
|
||||||
|
|
||||||
import "codeword/internal/services"
|
import "gitea.pena/PenaSide/codeword/internal/services"
|
||||||
|
|
||||||
type RpcRegister struct {
|
type RpcRegister struct {
|
||||||
Service *services.PromoCodeService
|
Service *services.PromoCodeService
|
||||||
|
|||||||
@ -1,30 +1,23 @@
|
|||||||
package initialize
|
package initialize
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/adapters/client"
|
"gitea.pena/PenaSide/codeword/internal/adapters/client"
|
||||||
"github.com/gofiber/fiber/v2"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
func RecoveryEmailSender(cfg Config, logger *zap.Logger) *client.RecoveryEmailSender {
|
func RecoveryEmailSender(cfg Config, logger *zap.Logger) *client.RecoveryEmailSender {
|
||||||
return client.NewRecoveryEmailSender(client.RecoveryEmailSenderDeps{
|
return client.NewRecoveryEmailSender(client.RecoveryEmailSenderDeps{
|
||||||
SmtpApiUrl: cfg.SmtpApiUrl,
|
ApiUrl: cfg.ExternalCfg.MailClientCfg.ApiURL,
|
||||||
SmtpHost: cfg.SmtpHost,
|
Sender: cfg.ExternalCfg.MailClientCfg.Sender,
|
||||||
SmtpPort: cfg.SmtpPort,
|
ApiKey: cfg.ExternalCfg.MailClientCfg.ApiKey,
|
||||||
SmtpSender: cfg.SmtpSender,
|
|
||||||
Username: cfg.SmtpUsername,
|
|
||||||
Password: cfg.SmtpPassword,
|
|
||||||
ApiKey: cfg.SmtpApiKey,
|
|
||||||
FiberClient: &fiber.Client{},
|
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
RecoveryUrl: cfg.RecoveryUrl,
|
RecoveryUrl: cfg.MailRecoveryURL,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func AuthClient(cfg Config, logger *zap.Logger) *client.AuthClient {
|
func AuthClient(cfg Config, logger *zap.Logger) *client.AuthClient {
|
||||||
return client.NewAuthClient(client.AuthClientDeps{
|
return client.NewAuthClient(client.AuthClientDeps{
|
||||||
AuthUrl: cfg.AuthURL,
|
AuthUrl: cfg.AuthMicroserviceURL,
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
FiberClient: &fiber.Client{},
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,50 +1,50 @@
|
|||||||
package initialize
|
package initialize
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"gitea.pena/PenaSide/common/mongo"
|
||||||
"github.com/caarlos0/env/v8"
|
"github.com/caarlos0/env/v8"
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
AppName string `env:"APP_NAME" envDefault:"codeword"`
|
AppName string `env:"APP_NAME" envDefault:"codeword"`
|
||||||
HTTPClientHost string `env:"HTTP_CLIENT_HOST" envDefault:"localhost"`
|
ClientHttpURL string `env:"CLIENT_HTTP_URL,required" envDefault:"localhost:3000"`
|
||||||
HTTPClientPort string `env:"HTTP_CLIENT_PORT" envDefault:"3000"`
|
AdminHttpURL string `env:"ADMIN_HTTP_URL,required" envDefault:"localhost:3001"`
|
||||||
HTTPAdminHost string `env:"HTTP_ADMIN_HOST" envDefault:"localhost"`
|
GrpcURL string `env:"GRPC_URL,required" envDefault:"localhost:9000"`
|
||||||
HTTPAdminPort string `env:"HTTP_ADMIN_PORT" envDefault:"3001"`
|
RedisHost string `env:"REDIS_HOST,required" envDefault:"localhost:6379"`
|
||||||
MongoHost string `env:"MONGO_HOST" envDefault:"127.0.0.1"`
|
RedisPassword string `env:"REDIS_PASSWORD,required" envDefault:"admin"`
|
||||||
MongoPort string `env:"MONGO_PORT" envDefault:"27020"`
|
RedisDB int `env:"REDIS_DB,required" envDefault:"2"`
|
||||||
MongoUser string `env:"MONGO_USER" envDefault:"test"`
|
KafkaTopicTariff string `env:"KAFKA_TOPIC_TARIFF,required"`
|
||||||
MongoPassword string `env:"MONGO_PASSWORD" envDefault:"test"`
|
KafkaBrokers []string `env:"KAFKA_BROKERS,required"`
|
||||||
MongoDatabase string `env:"MONGO_DB" envDefault:"admin"`
|
AuthMicroserviceURL string `env:"AUTH_MICROSERVICE_URL,required"`
|
||||||
MongoAuth string `env:"MONGO_AUTH" envDefault:"admin"`
|
DiscountMicroserviceGRPC string `env:"DISCOUNT_MICROSERVICE_GRPC_URL,required"`
|
||||||
PublicCurveKey string `env:"PUBLIC_CURVE_KEY"`
|
TrashLogHost string `env:"TRASH_LOG_HOST,required" envDefault:"localhost:7113"`
|
||||||
PrivateCurveKey string `env:"PRIVATE_CURVE_KEY"`
|
MailRecoveryURL string `env:"MAIL_RECOVERY_URL,required"`
|
||||||
SignSecret string `env:"SIGN_SECRET"`
|
EncryptPublicKey string `env:"ENCRYPT_PUBLIC_KEY,required"`
|
||||||
RedisAddr string `env:"REDIS_ADDR" envDefault:"localhost:6379"`
|
EncryptPrivateKey string `env:"ENCRYPT_PRIVATE_KEY,required"`
|
||||||
RedisPassword string `env:"REDIS_PASS" envDefault:"admin"`
|
EncryptSignSecret string `env:"ENCRYPT_SIGN_SECRET,required"`
|
||||||
RedisDB int `env:"REDIS_DB" envDefault:"2"`
|
DefaultRedirectionURL string `env:"DEFAULT_REDIRECTION_URL,required"`
|
||||||
SmtpApiUrl string `env:"SMTP_API_URL"`
|
ExternalCfg ExternalCfg
|
||||||
SmtpHost string `env:"SMTP_HOST"`
|
}
|
||||||
SmtpPort string `env:"SMTP_PORT"`
|
|
||||||
SmtpUsername string `env:"SMTP_UNAME"`
|
type ExternalCfg struct {
|
||||||
SmtpPassword string `env:"SMTP_PASS"`
|
MailClientCfg MailClientCfg
|
||||||
SmtpApiKey string `env:"SMTP_API_KEY"`
|
Database mongo.Configuration
|
||||||
SmtpSender string `env:"SMTP_SENDER"`
|
JwtCfg JWTConfiguration
|
||||||
DefaultRedirectionURL string `env:"DEFAULT_REDIRECTION_URL"`
|
}
|
||||||
AuthURL string `env:"AUTH_EXCHANGE_URL"`
|
|
||||||
KafkaBrokers string `env:"KAFKA_BROKERS"`
|
type MailClientCfg struct {
|
||||||
KafkaTopic string `env:"KAFKA_TOPIC_TARIFF"`
|
ApiURL string `env:"API_URL,required"`
|
||||||
DiscountServiceAddress string `env:"DISCOUNT_ADDRESS"`
|
Sender string `env:"MAIL_SENDER,required"`
|
||||||
RecoveryUrl string `env:"RECOVERY_URL"`
|
ApiKey string `env:"MAIL_API_KEY,required"`
|
||||||
PrivateKey string `env:"JWT_PRIVATE_KEY"`
|
}
|
||||||
PublicKey string `env:"JWT_PUBLIC_KEY,required"`
|
|
||||||
Issuer string `env:"JWT_ISSUER,required"`
|
type JWTConfiguration struct {
|
||||||
Audience string `env:"JWT_AUDIENCE,required"`
|
PrivateKey string `env:"JWT_PRIVATE_KEY"`
|
||||||
GrpcHost string `env:"GRPC_HOST" envDefault:"localhost"`
|
PublicKey string `env:"JWT_PUBLIC_KEY,required"`
|
||||||
GrpcPort string `env:"GRPC_PORT" envDefault:"9000"`
|
Issuer string `env:"JWT_ISSUER,required"`
|
||||||
TrashLogHost string `env:"TRASH_LOG_HOST" envDefault:"localhost:7113"`
|
Audience string `env:"JWT_AUDIENCE,required"`
|
||||||
ModuleLogger string `env:"MODULE_LOGGER" envDefault:"codeword-local"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadConfig() (*Config, error) {
|
func LoadConfig() (*Config, error) {
|
||||||
@ -57,3 +57,5 @@ func LoadConfig() (*Config, error) {
|
|||||||
}
|
}
|
||||||
return &config, nil
|
return &config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ModuleLogger = "codeword"
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
package initialize
|
package initialize
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/utils/encrypt"
|
"gitea.pena/PenaSide/codeword/internal/utils/encrypt"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Encrypt(cfg Config) *encrypt.Encrypt {
|
func Encrypt(cfg Config) *encrypt.Encrypt {
|
||||||
return encrypt.New(&encrypt.EncryptDeps{
|
return encrypt.New(&encrypt.EncryptDeps{
|
||||||
PublicKey: cfg.PublicCurveKey,
|
PublicKey: cfg.EncryptPublicKey,
|
||||||
PrivateKey: cfg.PrivateCurveKey,
|
PrivateKey: cfg.EncryptPrivateKey,
|
||||||
SignSecret: cfg.SignSecret,
|
SignSecret: cfg.EncryptSignSecret,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package initialize
|
package initialize
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/proto/discount"
|
|
||||||
"context"
|
"context"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/proto/discount"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package initialize
|
package initialize
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/kafka/tariff"
|
"gitea.pena/PenaSide/codeword/internal/kafka/tariff"
|
||||||
"github.com/twmb/franz-go/pkg/kgo"
|
"github.com/twmb/franz-go/pkg/kgo"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,29 +1,20 @@
|
|||||||
package initialize
|
package initialize
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/repository"
|
|
||||||
"context"
|
"context"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||||
|
mdb "gitea.pena/PenaSide/common/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
mdb "penahub.gitlab.yandexcloud.net/backend/penahub_common/mongo"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func MongoDB(ctx context.Context, cfg Config) (*mongo.Database, error) {
|
func MongoDB(ctx context.Context, cfg Config) (*mongo.Database, error) {
|
||||||
dbConfig := &mdb.Configuration{
|
|
||||||
Host: cfg.MongoHost,
|
|
||||||
Port: cfg.MongoPort,
|
|
||||||
User: cfg.MongoUser,
|
|
||||||
Password: cfg.MongoPassword,
|
|
||||||
DatabaseName: cfg.MongoDatabase,
|
|
||||||
Auth: cfg.MongoAuth,
|
|
||||||
}
|
|
||||||
|
|
||||||
newCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
newCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
mongoDeps := &mdb.ConnectDeps{
|
mongoDeps := &mdb.ConnectDeps{
|
||||||
Configuration: dbConfig,
|
Configuration: &cfg.ExternalCfg.Database,
|
||||||
Timeout: 10 * time.Second,
|
Timeout: 10 * time.Second,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
func Redis(ctx context.Context, cfg Config) (*redis.Client, error) {
|
func Redis(ctx context.Context, cfg Config) (*redis.Client, error) {
|
||||||
rdb := redis.NewClient(&redis.Options{
|
rdb := redis.NewClient(&redis.Options{
|
||||||
Addr: cfg.RedisAddr,
|
Addr: cfg.RedisHost,
|
||||||
Password: cfg.RedisPassword,
|
Password: cfg.RedisPassword,
|
||||||
DB: cfg.RedisDB,
|
DB: cfg.RedisDB,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
package tariff
|
package tariff
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/internal/utils/transfer"
|
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/utils/transfer"
|
||||||
"github.com/twmb/franz-go/pkg/kgo"
|
"github.com/twmb/franz-go/pkg/kgo"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"log"
|
"log"
|
||||||
"fmt"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type ProducerDeps struct {
|
type ProducerDeps struct {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/proto/broker"
|
"gitea.pena/PenaSide/codeword/internal/proto/broker"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
package repository
|
package repository
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package repository
|
package repository
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"context"
|
"context"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
package repository
|
package repository
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
codeword_rpc "codeword/internal/proto/codeword"
|
|
||||||
"context"
|
"context"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
codeword_rpc "gitea.pena/PenaSide/codeword/internal/proto/codeword"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package repository
|
package repository
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"context"
|
"context"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
package grpc
|
package grpc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/controller/rpc_controllers"
|
|
||||||
codeword_rpc "codeword/internal/proto/codeword"
|
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/controller/rpc_controllers"
|
||||||
|
codeword_rpc "gitea.pena/PenaSide/codeword/internal/proto/codeword"
|
||||||
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
|
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
|
||||||
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
|
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
|
||||||
grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery"
|
grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery"
|
||||||
@ -36,13 +36,8 @@ func NewGRPC(logger *zap.Logger) (*GRPC, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type DepsGrpcRun struct {
|
func (g *GRPC) Run(addr string) {
|
||||||
Host string
|
connectionString := fmt.Sprintf(addr)
|
||||||
Port string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (g *GRPC) Run(config DepsGrpcRun) {
|
|
||||||
connectionString := fmt.Sprintf("%s:%s", config.Host, config.Port)
|
|
||||||
|
|
||||||
g.logger.Info("Starting GRPC Server", zap.String("host", connectionString))
|
g.logger.Info("Starting GRPC Server", zap.String("host", connectionString))
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
package http
|
package http
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/utils/middleware"
|
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||||
|
"gitea.pena/PenaSide/common/log_mw"
|
||||||
|
"gitea.pena/PenaSide/hlog"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/themakers/hlog"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServerConfig struct {
|
type ServerConfig struct {
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
package services
|
package services
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/kafka/tariff"
|
|
||||||
"codeword/internal/models"
|
|
||||||
codeword_rpc "codeword/internal/proto/codeword"
|
|
||||||
"codeword/internal/proto/discount"
|
|
||||||
"codeword/internal/repository"
|
|
||||||
"codeword/internal/utils/genID"
|
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/kafka/tariff"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
codeword_rpc "gitea.pena/PenaSide/codeword/internal/proto/codeword"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/proto/discount"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/utils/genID"
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"time"
|
"time"
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
package services
|
package services
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/adapters/client"
|
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/internal/utils/encrypt"
|
|
||||||
"context"
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/adapters/client"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/utils/encrypt"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/initialize"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||||
"github.com/golang-jwt/jwt/v5"
|
"github.com/golang-jwt/jwt/v5"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -19,10 +19,10 @@ type JWT struct {
|
|||||||
|
|
||||||
func NewJWT(configuration *initialize.Config) *JWT {
|
func NewJWT(configuration *initialize.Config) *JWT {
|
||||||
return &JWT{
|
return &JWT{
|
||||||
privateKey: []byte(configuration.PrivateKey),
|
privateKey: []byte(configuration.ExternalCfg.JwtCfg.PrivateKey),
|
||||||
publicKey: []byte(configuration.PublicKey),
|
publicKey: []byte(configuration.ExternalCfg.JwtCfg.PublicKey),
|
||||||
issuer: configuration.Issuer,
|
issuer: configuration.ExternalCfg.JwtCfg.Issuer,
|
||||||
audience: configuration.Audience,
|
audience: configuration.ExternalCfg.JwtCfg.Audience,
|
||||||
algorithm: jwt.SigningMethodRS256,
|
algorithm: jwt.SigningMethodRS256,
|
||||||
expiresIn: 15 * time.Minute,
|
expiresIn: 15 * time.Minute,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
package transfer
|
package transfer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/internal/proto/broker"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/proto/broker"
|
||||||
)
|
)
|
||||||
|
|
||||||
func PrivilegeModelToProto(privilege *models.Privilege) *broker.PrivilegeMessage {
|
func PrivilegeModelToProto(privilege *models.Privilege) *broker.PrivilegeMessage {
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package transfer
|
package transfer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
"codeword/internal/proto/broker"
|
"gitea.pena/PenaSide/codeword/internal/proto/broker"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TariffModelToProtoMessage(userID string, tariffModel *models.Tariff) *broker.TariffMessage {
|
func TariffModelToProtoMessage(userID string, tariffModel *models.Tariff) *broker.TariffMessage {
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
package recovery_worker
|
package recovery_worker
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/adapters/client"
|
|
||||||
"codeword/internal/models"
|
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/adapters/client"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
package e2e
|
package e2e
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/tests/helpers"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/tests/helpers"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/pioz/faker"
|
"github.com/pioz/faker"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
package e2e
|
package e2e
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"testing"
|
"testing"
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package helpers
|
package helpers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/initialize"
|
"gitea.pena/PenaSide/codeword/internal/initialize"
|
||||||
"codeword/internal/utils/middleware"
|
"gitea.pena/PenaSide/codeword/internal/utils/middleware"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -30,9 +30,13 @@ func InitializeJWT() *middleware.JWT {
|
|||||||
-----END RSA PRIVATE KEY-----`, "\t", "", -1)
|
-----END RSA PRIVATE KEY-----`, "\t", "", -1)
|
||||||
|
|
||||||
return middleware.NewJWT(&initialize.Config{
|
return middleware.NewJWT(&initialize.Config{
|
||||||
PrivateKey: privateKey,
|
ExternalCfg: initialize.ExternalCfg{
|
||||||
PublicKey: publicKey,
|
JwtCfg: initialize.JWTConfiguration{
|
||||||
Audience: "pena",
|
PrivateKey: privateKey,
|
||||||
Issuer: "pena-auth-service",
|
PublicKey: publicKey,
|
||||||
|
Audience: "pena",
|
||||||
|
Issuer: "pena-auth-service",
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
package repository_test
|
package repository_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/models"
|
|
||||||
"codeword/internal/repository"
|
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/models"
|
||||||
|
"gitea.pena/PenaSide/codeword/internal/repository"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user