Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
45c7250831 | |||
f329652444 | |||
721c4ef2e0 | |||
fd48c5dc76 |
@ -1,23 +0,0 @@
|
|||||||
name: Deploy
|
|
||||||
run-name: ${{ gitea.actor }} build image and push to container registry
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'main'
|
|
||||||
|
|
||||||
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: [hubprod]
|
|
||||||
needs: CreateImage
|
|
||||||
uses: http://gitea.pena/PenaDevops/actions.git/.gitea/workflows/deploy.yml@v1.1.4-p7
|
|
||||||
with:
|
|
||||||
runner: hubprod
|
|
@ -1,23 +0,0 @@
|
|||||||
name: Deploy
|
|
||||||
run-name: ${{ gitea.actor }} build image and push to container registry
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- '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
|
|
@ -1,14 +0,0 @@
|
|||||||
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
|
|
89
.gitlab-ci.yml
Normal file
89
.gitlab-ci.yml
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
include:
|
||||||
|
- project: "devops/pena-continuous-integration"
|
||||||
|
file: "/templates/docker/build-template.gitlab-ci.yml"
|
||||||
|
- project: "devops/pena-continuous-integration"
|
||||||
|
file: "/templates/docker/clean-template.gitlab-ci.yml"
|
||||||
|
- project: "devops/pena-continuous-integration"
|
||||||
|
file: "/templates/docker/deploy-template.gitlab-ci.yml"
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- lint
|
||||||
|
# - test
|
||||||
|
- clean
|
||||||
|
- build
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
lint:
|
||||||
|
image: golangci/golangci-lint:v1.53.3-alpine
|
||||||
|
stage: lint
|
||||||
|
before_script:
|
||||||
|
- echo GITLAB_TOKEN = $GITLAB_TOKEN
|
||||||
|
- git config --global url."https://forgomod:${GITLAB_TOKEN}@penahub.gitlab.yandexcloud.net/".insteadOf "https://penahub.gitlab.yandexcloud.net/"
|
||||||
|
- export GOPRIVATE=penahub.gitlab.yandexcloud.net/backend/penahub_common/
|
||||||
|
- go install github.com/vektra/mockery/v2@v2.26.0
|
||||||
|
- go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.12.4
|
||||||
|
script:
|
||||||
|
- go generate ./...
|
||||||
|
- golangci-lint version
|
||||||
|
- golangci-lint run ./...
|
||||||
|
|
||||||
|
# test:
|
||||||
|
# image: golang:1.20.3-alpine
|
||||||
|
# stage: test
|
||||||
|
# coverage: /\(statements\)(?:\s+)?(\d+(?:\.\d+)?%)/
|
||||||
|
# script:
|
||||||
|
# - CGO_ENABLED=0 go test ./... -coverprofile=coverage.out
|
||||||
|
# - go tool cover -html=coverage.out -o coverage.html
|
||||||
|
# - go tool cover -func coverage.out
|
||||||
|
# artifacts:
|
||||||
|
# expire_in: "3 days"
|
||||||
|
# paths:
|
||||||
|
# - coverage.html
|
||||||
|
|
||||||
|
clear-old-images:
|
||||||
|
extends: .clean_template
|
||||||
|
variables:
|
||||||
|
STAGING_BRANCH: "main"
|
||||||
|
PRODUCTION_BRANCH: "main"
|
||||||
|
image:
|
||||||
|
name: docker/compose:1.28.0
|
||||||
|
entrypoint: [""]
|
||||||
|
before_script:
|
||||||
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
- docker images
|
||||||
|
script:
|
||||||
|
- docker system prune -af
|
||||||
|
|
||||||
|
build-app:
|
||||||
|
stage: build
|
||||||
|
before_script:
|
||||||
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
- echo STAGING_BRANCH = $STAGING_BRANCH
|
||||||
|
- echo CI_REGISTRY = $CI_REGISTRY
|
||||||
|
- echo CI_REGISTRY_USER = $CI_REGISTRY_USER
|
||||||
|
- echo CI_PROJECT_DIR = $CI_PROJECT_DIR
|
||||||
|
- echo CI_REGISTRY_IMAGE = $CI_REGISTRY_IMAGE
|
||||||
|
- echo CI_COMMIT_REF_SLUG = $CI_COMMIT_REF_SLUG
|
||||||
|
- echo DOCKER_BUILD_PATH = $DOCKER_BUILD_PATH
|
||||||
|
- echo CI_PIPELINE_ID = $CI_PIPELINE_ID
|
||||||
|
- echo JWT_SECRET = $JWT_SECRET
|
||||||
|
|
||||||
|
variables:
|
||||||
|
DOCKER_BUILD_PATH: "build/Dockerfile"
|
||||||
|
PRODUCTION_BRANCH: main
|
||||||
|
STAGING_BRANCH: "main"
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == $PRODUCTION_BRANCH || $CI_COMMIT_BRANCH == $STAGING_BRANCH
|
||||||
|
|
||||||
|
script:
|
||||||
|
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID --build-arg GITLAB_TOKEN=$GITLAB_TOKEN $CI_PROJECT_DIR
|
||||||
|
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
||||||
|
|
||||||
|
|
||||||
|
deploy-to-staging:
|
||||||
|
extends: .deploy_template
|
||||||
|
variables:
|
||||||
|
DEPLOY_TO: "staging"
|
||||||
|
BRANCH: "main"
|
||||||
|
after_script:
|
||||||
|
- docker system prune --all --volumes --force
|
@ -1,11 +1,14 @@
|
|||||||
FROM gitea.pena/penadevops/container-images/golang:main as build
|
FROM golang:alpine as build
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
ARG GITLAB_TOKEN
|
||||||
RUN apk add git
|
RUN apk add git
|
||||||
|
ENV GOPRIVATE=penahub.gitlab.yandexcloud.net/backend/penahub_common
|
||||||
|
RUN git config --global url."https://forgomod:${GITLAB_TOKEN}@penahub.gitlab.yandexcloud.net/".insteadOf "https://penahub.gitlab.yandexcloud.net/"
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN go mod download
|
RUN go mod download
|
||||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app
|
||||||
|
|
||||||
FROM gitea.pena/penadevops/container-images/alpine:main
|
FROM alpine
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
COPY --from=build app /
|
COPY --from=build app /
|
||||||
COPY static static
|
COPY static static
|
||||||
@ -17,4 +20,3 @@ ENV GDISK_CREDENTIALS=./static/gdisk-credentials2.json
|
|||||||
RUN apk add --no-cache ca-certificates
|
RUN apk add --no-cache ca-certificates
|
||||||
RUN mkdir /tmp/downloaded /tmp/generated
|
RUN mkdir /tmp/downloaded /tmp/generated
|
||||||
CMD ["/app"]
|
CMD ["/app"]
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import (
|
|||||||
"github.com/dgrijalva/jwt-go"
|
"github.com/dgrijalva/jwt-go"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"gitea.pena/PenaSide/docxTemplater/tools"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -7,9 +7,9 @@ import (
|
|||||||
"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"
|
||||||
"gitea.pena/PenaSide/docxTemplater/broker/tariff/models"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/broker/tariff/models"
|
||||||
"gitea.pena/PenaSide/docxTemplater/broker/tariff/utils/transfer"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/broker/tariff/utils/transfer"
|
||||||
"gitea.pena/PenaSide/docxTemplater/proto/tariff"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/proto/tariff"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ConsumerDeps struct {
|
type ConsumerDeps struct {
|
||||||
@ -30,17 +30,13 @@ func NewConsumer(deps ConsumerDeps) *Consumer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (receiver *Consumer) FetchTariffs(ctx context.Context) []models.Tariff {
|
func (receiver *Consumer) FetchTariffs(ctx context.Context) []models.Tariff {
|
||||||
fmt.Println("redpanda consumer1")
|
|
||||||
fetches := receiver.client.PollFetches(ctx)
|
fetches := receiver.client.PollFetches(ctx)
|
||||||
fmt.Println("redpanda consumer2", fetches)
|
|
||||||
iter := fetches.RecordIter()
|
iter := fetches.RecordIter()
|
||||||
fmt.Println("redpanda consumer3", iter)
|
|
||||||
|
|
||||||
tariffs := make([]models.Tariff, 0)
|
tariffs := make([]models.Tariff, 0)
|
||||||
|
|
||||||
for !iter.Done() {
|
for !iter.Done() {
|
||||||
record := iter.Next()
|
record := iter.Next()
|
||||||
fmt.Println("redpanda consumer4", record)
|
|
||||||
tariff := tariff.TariffMessage{}
|
tariff := tariff.TariffMessage{}
|
||||||
|
|
||||||
if err := proto.Unmarshal(record.Value, &tariff); err != nil {
|
if err := proto.Unmarshal(record.Value, &tariff); err != nil {
|
||||||
@ -51,11 +47,5 @@ func (receiver *Consumer) FetchTariffs(ctx context.Context) []models.Tariff {
|
|||||||
tariffs = append(tariffs, *transfer.TariffProtoToModel(&tariff))
|
tariffs = append(tariffs, *transfer.TariffProtoToModel(&tariff))
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := receiver.client.CommitUncommittedOffsets(ctx); err != nil {
|
|
||||||
|
|
||||||
receiver.logger.Error(fmt.Sprintf("error committing message: %v\n", err))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return tariffs
|
return tariffs
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package transfer
|
package transfer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gitea.pena/PenaSide/docxTemplater/broker/tariff/models"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/broker/tariff/models"
|
||||||
"gitea.pena/PenaSide/docxTemplater/proto/tariff"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/proto/tariff"
|
||||||
)
|
)
|
||||||
|
|
||||||
func PrivilegeProtoToModel(privilege *tariff.PrivilegeMessage) *models.Privilege {
|
func PrivilegeProtoToModel(privilege *tariff.PrivilegeMessage) *models.Privilege {
|
||||||
|
@ -3,8 +3,8 @@ package transfer
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/broker/tariff/models"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/broker/tariff/models"
|
||||||
"gitea.pena/PenaSide/docxTemplater/proto/tariff"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/proto/tariff"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TariffProtoToModel(tariff *tariff.TariffMessage) *models.Tariff {
|
func TariffProtoToModel(tariff *tariff.TariffMessage) *models.Tariff {
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
"go.mongodb.org/mongo-driver/mongo/readpref"
|
"go.mongodb.org/mongo-driver/mongo/readpref"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/mongos"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/mongos"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MongoDAL struct {
|
type MongoDAL struct {
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"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"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Amo struct {
|
type Amo struct {
|
||||||
@ -314,28 +314,23 @@ func (d *Amo) UpdateAccessRules(ctx context.Context, id string, record *model.Am
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *Amo) AddPrivilege(ctx context.Context, id, privilegeID string, privilegeAmount int64) error {
|
func (d *Amo) AddPrivilege(ctx context.Context, id, privilegeID string, privilegeAmount int64) error {
|
||||||
filter := bson.M{"pena_id": id, "is_deleted": false}
|
objID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorAmoAddPrivilege", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
filter := bson.M{"_id": objID, "is_deleted": false}
|
||||||
|
|
||||||
privilegeKey := fmt.Sprintf("privileges.%v", privilegeID)
|
privilegeKey := fmt.Sprintf("privileges.%v", privilegeID)
|
||||||
|
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
|
|
||||||
old, err := d.GetByPenaID(ctx, id)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
var amount int64
|
|
||||||
|
|
||||||
oldprivilege, ok := old.Privileges[privilegeID]
|
|
||||||
if ok {
|
|
||||||
amount = oldprivilege.Amount + privilegeAmount
|
|
||||||
}
|
|
||||||
|
|
||||||
updateData := bson.M{
|
updateData := bson.M{
|
||||||
privilegeKey: bson.M{
|
privilegeKey: bson.M{
|
||||||
"created_at": now,
|
"created_at": now,
|
||||||
"amount": amount,
|
"amount": privilegeAmount,
|
||||||
},
|
},
|
||||||
"updated_at": now,
|
"updated_at": now,
|
||||||
}
|
}
|
||||||
@ -344,8 +339,6 @@ func (d *Amo) AddPrivilege(ctx context.Context, id, privilegeID string, privileg
|
|||||||
{Key: "$set", Value: updateData},
|
{Key: "$set", Value: updateData},
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("ADDPRIVI", filter, update)
|
|
||||||
|
|
||||||
_, err = d.coll.UpdateOne(ctx, filter, update)
|
_, err = d.coll.UpdateOne(ctx, filter, update)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -9,7 +9,7 @@ import (
|
|||||||
"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"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GDisk struct {
|
type GDisk struct {
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type History struct {
|
type History struct {
|
||||||
|
@ -9,8 +9,8 @@ import (
|
|||||||
"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"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
"gitea.pena/PenaSide/docxTemplater/penadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/penadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PenaDisk struct {
|
type PenaDisk struct {
|
||||||
@ -90,7 +90,7 @@ func (d *PenaDisk) GetByID(ctx context.Context, id string) (*model.PenaDisk, err
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *PenaDisk) GetByPenaID(ctx context.Context, penaID string) (model.PenaDisk, error) {
|
func (d *PenaDisk) GetByPenaID(ctx context.Context, penaID string) (*model.PenaDisk, error) {
|
||||||
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
||||||
|
|
||||||
var result model.PenaDisk
|
var result model.PenaDisk
|
||||||
@ -100,15 +100,15 @@ func (d *PenaDisk) GetByPenaID(ctx context.Context, penaID string) (model.PenaDi
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
if err == mongo.ErrNoDocuments {
|
if err == mongo.ErrNoDocuments {
|
||||||
d.logger.Info("InfoGetPenaDisk", zap.String("id", "not found"))
|
d.logger.Info("InfoGetPenaDisk", zap.String("id", "not found"))
|
||||||
return result, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
d.logger.Error("ErrorGetPenaDisk", zap.Error(err))
|
d.logger.Error("ErrorGetPenaDisk", zap.Error(err))
|
||||||
return result, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
d.logger.Info("InfoGetPenaDisk", zap.String("id", result.ID))
|
d.logger.Info("InfoGetPenaDisk", zap.String("id", result.ID))
|
||||||
return result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *PenaDisk) GetByAmoID(ctx context.Context, amoID string) (*model.PenaDisk, error) {
|
func (d *PenaDisk) GetByAmoID(ctx context.Context, amoID string) (*model.PenaDisk, error) {
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"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"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Template struct {
|
type Template struct {
|
||||||
|
@ -9,7 +9,7 @@ import (
|
|||||||
"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"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TemplateGroup struct {
|
type TemplateGroup struct {
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WorkerTask struct {
|
type WorkerTask struct {
|
||||||
|
@ -9,8 +9,8 @@ import (
|
|||||||
"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"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
YaDisk2 "gitea.pena/PenaSide/docxTemplater/yadisk"
|
YaDisk2 "penahub.gitlab.yandexcloud.net/backend/templategen/yadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type YaDisk struct {
|
type YaDisk struct {
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
services:
|
|
||||||
templategen:
|
|
||||||
restart: unless-stopped
|
|
||||||
image: gitea.pena/penaside/docxtemplater/main:$GITHUB_RUN_NUMBER
|
|
||||||
ports:
|
|
||||||
- 10.8.0.226:8012:80
|
|
||||||
- 10.8.0.226:8443:443
|
|
||||||
environment:
|
|
||||||
MONGO_URL: mongodb://templategen:54143ffdd9304865586e5cf1@10.8.0.226:27017/?authSource=templategen
|
|
||||||
PENADISK_URL: http://hubstaging.pena:8011/
|
|
||||||
PRIVILEGES_DOMAIN: http://10.8.0.226:59304
|
|
||||||
KAFKA_BROKERS: 10.8.0.226:9092
|
|
||||||
KAFKA_TARIFF_TOPIC: tariffs
|
|
||||||
KAFKA_CONSUMER_GROUP_ID: templategen1
|
|
||||||
EMAIL_HOST: connect.mailclient.bz
|
|
||||||
EMAIL_PORT: 587
|
|
||||||
EMAIL_SENDER: noreply@mailing.pena.digital
|
|
||||||
EMAIL_USERNAME: kotilion.95@gmail.com
|
|
||||||
EMAIL_PASSWORD: vWwbCSg4bf0p
|
|
||||||
|
|
||||||
tty: true
|
|
@ -1,21 +1,14 @@
|
|||||||
services:
|
services:
|
||||||
templategen:
|
templategen:
|
||||||
|
container_name: templategen_service
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: gitea.pena:3000/penaside/docxtemplater/staging:$GITHUB_RUN_NUMBER
|
image: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
|
||||||
|
hostname: templategen_service
|
||||||
ports:
|
ports:
|
||||||
- 10.7.0.6:8012:80
|
- "80:80"
|
||||||
- 10.7.0.6:8443:443
|
- "443:443"
|
||||||
environment:
|
environment:
|
||||||
MONGO_URL: mongodb://templategen:54143ffdd9304865586e5cf1@mongodb.pena:27017/?authSource=templategen
|
MONGO_URL: mongodb://$MONGO_USER:$MONGO_PASSWORD@10.6.0.11:27017/?authSource=templategen
|
||||||
PENADISK_URL: http://hubstaging.pena:8011/
|
PENADISK_URL: $PENADISK_URL
|
||||||
PRIVILEGES_DOMAIN: https://admin.pena.digital/strator
|
PRIVILEGES_DOMAIN: https://admin.pena.digital/strator
|
||||||
KAFKA_BROKERS: hubstaging.pena:9092
|
|
||||||
KAFKA_TARIFF_TOPIC: tariffs
|
|
||||||
KAFKA_CONSUMER_GROUP_ID: templategen1
|
|
||||||
EMAIL_HOST: connect.mailclient.bz
|
|
||||||
EMAIL_PORT: 587
|
|
||||||
EMAIL_SENDER: noreply@mailing.pena.digital
|
|
||||||
EMAIL_USERNAME: kotilion.95@gmail.com
|
|
||||||
EMAIL_PASSWORD: vWwbCSg4bf0p
|
|
||||||
|
|
||||||
tty: true
|
tty: true
|
||||||
|
@ -15,7 +15,7 @@ import (
|
|||||||
"golang.org/x/oauth2/google"
|
"golang.org/x/oauth2/google"
|
||||||
"google.golang.org/api/drive/v3"
|
"google.golang.org/api/drive/v3"
|
||||||
"google.golang.org/api/option"
|
"google.golang.org/api/option"
|
||||||
"gitea.pena/PenaSide/docxTemplater/tools"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
88
go.mod
88
go.mod
@ -1,72 +1,78 @@
|
|||||||
module gitea.pena/PenaSide/docxTemplater
|
module penahub.gitlab.yandexcloud.net/backend/templategen
|
||||||
|
|
||||||
go 1.23.2
|
go 1.21.0
|
||||||
|
|
||||||
toolchain go1.23.3
|
toolchain go1.23.4
|
||||||
|
|
||||||
require (
|
require (
|
||||||
gitea.pena/PenaSide/common v0.0.0-20241213122118-5fbc737eb63e
|
|
||||||
github.com/danilsolovyov/doc-template v0.0.0-20230327151707-b8182a1ee9f4
|
github.com/danilsolovyov/doc-template v0.0.0-20230327151707-b8182a1ee9f4
|
||||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible
|
github.com/dgrijalva/jwt-go v3.2.0+incompatible
|
||||||
github.com/gofiber/fiber/v2 v2.51.0
|
github.com/gofiber/fiber/v2 v2.48.0
|
||||||
github.com/gorilla/mux v1.8.1
|
github.com/gorilla/mux v1.8.0
|
||||||
github.com/gorilla/schema v1.2.1
|
github.com/gorilla/schema v1.2.0
|
||||||
github.com/minio/minio-go/v7 v7.0.81
|
github.com/minio/minio-go/v7 v7.0.61
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/stretchr/testify v1.9.0
|
github.com/stretchr/testify v1.9.0
|
||||||
github.com/themakers/bdd v0.0.0-20210316111417-6b1dfe326f33
|
github.com/themakers/bdd v0.0.0-20210316111417-6b1dfe326f33
|
||||||
github.com/twmb/franz-go v1.15.3
|
github.com/twmb/franz-go v1.14.3
|
||||||
go.mongodb.org/mongo-driver v1.13.1
|
go.mongodb.org/mongo-driver v1.12.1
|
||||||
go.uber.org/zap v1.27.0
|
go.uber.org/zap v1.25.0
|
||||||
golang.org/x/oauth2 v0.15.0
|
golang.org/x/oauth2 v0.11.0
|
||||||
google.golang.org/api v0.153.0
|
google.golang.org/api v0.137.0
|
||||||
google.golang.org/protobuf v1.31.0
|
google.golang.org/protobuf v1.31.0
|
||||||
|
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20230712221540-d9932eb7254e
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go/compute v1.23.3 // indirect
|
cloud.google.com/go/compute v1.23.0 // indirect
|
||||||
cloud.google.com/go/compute/metadata v0.2.3 // indirect
|
cloud.google.com/go/compute/metadata v0.2.3 // indirect
|
||||||
github.com/andybalholm/brotli v1.0.6 // indirect
|
github.com/andybalholm/brotli v1.0.5 // indirect
|
||||||
|
github.com/beevik/etree v1.5.0 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
github.com/fatih/color v1.10.0 // indirect
|
github.com/fatih/color v1.10.0 // indirect
|
||||||
github.com/go-ini/ini v1.67.0 // indirect
|
|
||||||
github.com/goccy/go-json v0.10.3 // indirect
|
|
||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
github.com/golang/protobuf v1.5.3 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
github.com/golang/snappy v0.0.4 // indirect
|
github.com/golang/snappy v0.0.1 // indirect
|
||||||
github.com/google/s2a-go v0.1.7 // indirect
|
github.com/google/s2a-go v0.1.5 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
|
github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect
|
||||||
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
|
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
|
||||||
github.com/klauspost/compress v1.17.11 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
|
github.com/klauspost/compress v1.16.7 // indirect
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
|
||||||
|
github.com/lukasjarosch/go-docx v0.5.0 // 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.19 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
github.com/mattn/go-runewidth v0.0.14 // indirect
|
||||||
github.com/minio/md5-simd v1.1.2 // indirect
|
github.com/minio/md5-simd v1.1.2 // indirect
|
||||||
github.com/montanaflynn/stats v0.7.1 // indirect
|
github.com/minio/sha256-simd v1.0.1 // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.19 // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
|
||||||
|
github.com/pierrec/lz4/v4 v4.1.18 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
github.com/rivo/uniseg v0.4.4 // indirect
|
github.com/rivo/uniseg v0.2.0 // indirect
|
||||||
github.com/rs/xid v1.6.0 // indirect
|
github.com/rs/xid v1.5.0 // indirect
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 // indirect
|
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||||
|
github.com/twmb/franz-go/pkg/kmsg v1.6.1 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasthttp v1.51.0 // indirect
|
github.com/valyala/fasthttp v1.48.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
|
||||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
github.com/xdg-go/stringprep v1.0.4 // indirect
|
||||||
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
|
||||||
go.opencensus.io v0.24.0 // indirect
|
go.opencensus.io v0.24.0 // indirect
|
||||||
go.uber.org/multierr v1.11.0 // indirect
|
go.uber.org/multierr v1.10.0 // indirect
|
||||||
golang.org/x/crypto v0.28.0 // indirect
|
golang.org/x/crypto v0.25.0 // indirect
|
||||||
golang.org/x/net v0.30.0 // indirect
|
golang.org/x/net v0.27.0 // indirect
|
||||||
golang.org/x/sync v0.8.0 // indirect
|
golang.org/x/sync v0.7.0 // indirect
|
||||||
golang.org/x/sys v0.26.0 // indirect
|
golang.org/x/sys v0.22.0 // indirect
|
||||||
golang.org/x/text v0.19.0 // indirect
|
golang.org/x/text v0.16.0 // indirect
|
||||||
google.golang.org/appengine v1.6.8 // indirect
|
google.golang.org/appengine v1.6.7 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 // indirect
|
||||||
google.golang.org/grpc v1.59.0 // indirect
|
google.golang.org/grpc v1.57.0 // indirect
|
||||||
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
213
go.sum
213
go.sum
@ -1,16 +1,25 @@
|
|||||||
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=
|
||||||
cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk=
|
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI=
|
cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY=
|
||||||
|
cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
|
||||||
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
|
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
|
||||||
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
|
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
|
||||||
gitea.pena/PenaSide/common v0.0.0-20241213122118-5fbc737eb63e h1:44CqlJOrUaZUsEv7ssFwyDjHn8PxTbTJqhDKlo1kLwE=
|
|
||||||
gitea.pena/PenaSide/common v0.0.0-20241213122118-5fbc737eb63e/go.mod h1:l4frySn2SkcdYonL0qyiv9+byj8+/GMLohSICnVYDTM=
|
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
|
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
|
||||||
github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
||||||
|
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
||||||
|
github.com/beevik/etree v1.5.0 h1:iaQZFSDS+3kYZiGoc9uKeOkUY3nYMXOKLl6KIJxiJWs=
|
||||||
|
github.com/beevik/etree v1.5.0/go.mod h1:gPNJNaBGVZ9AwsidazFZyygnd+0pAU38N4D+WemwKNs=
|
||||||
|
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
|
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
|
||||||
|
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||||
|
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||||
|
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||||
github.com/danilsolovyov/doc-template v0.0.0-20230327151707-b8182a1ee9f4 h1:GwGyqqRbG1MQi+GgPX9yX8FGNwZJPIpyxivb4OjKgnc=
|
github.com/danilsolovyov/doc-template v0.0.0-20230327151707-b8182a1ee9f4 h1:GwGyqqRbG1MQi+GgPX9yX8FGNwZJPIpyxivb4OjKgnc=
|
||||||
github.com/danilsolovyov/doc-template v0.0.0-20230327151707-b8182a1ee9f4/go.mod h1:nR0IgQFyfxaKnzDMdxyNpNieoL4hW593trhr4q4j6dM=
|
github.com/danilsolovyov/doc-template v0.0.0-20230327151707-b8182a1ee9f4/go.mod h1:nR0IgQFyfxaKnzDMdxyNpNieoL4hW593trhr4q4j6dM=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@ -23,36 +32,37 @@ github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+m
|
|||||||
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=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
|
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/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
|
github.com/gofiber/fiber/v2 v2.48.0 h1:cRVMCb9aUJDsyHxGFLwz/sGzDggdailZZyptU9F9cU0=
|
||||||
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
|
github.com/gofiber/fiber/v2 v2.48.0/go.mod h1:xqJgfqrc23FJuqGOW6DVgi3HyZEm2Mn9pRqUb2kHSX8=
|
||||||
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
|
||||||
github.com/gofiber/fiber/v2 v2.51.0 h1:JNACcZy5e2tGApWB2QrRpenTWn0fq0hkFm6k0C86gKQ=
|
|
||||||
github.com/gofiber/fiber/v2 v2.51.0/go.mod h1:xaQRZQJGqnKOQnbQw+ltvku3/h8QxvNi8o6JiJ7Ll0U=
|
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
|
||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||||
|
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||||
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
|
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
|
||||||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
|
||||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
|
||||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
@ -61,58 +71,74 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
|
github.com/google/s2a-go v0.1.5 h1:8IYp3w9nysqv3JH+NJgXJzGbDHzLOTj43BmSkp+O7qg=
|
||||||
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
|
github.com/google/s2a-go v0.1.5/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
|
github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM=
|
||||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
|
github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w=
|
||||||
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
|
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
|
||||||
github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
|
github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU=
|
||||||
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
|
||||||
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||||
github.com/gorilla/schema v1.2.1 h1:tjDxcmdb+siIqkTNoV+qRH2mjYdr2hHe5MKXbp61ziM=
|
github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc=
|
||||||
github.com/gorilla/schema v1.2.1/go.mod h1:Dg5SSm5PV60mhF2NFaTV1xuYYj8tV8NOPRo4FggUMnM=
|
github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU=
|
||||||
|
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
|
||||||
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||||
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.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
|
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
|
||||||
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
|
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
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.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
|
||||||
github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||||
|
github.com/lukasjarosch/go-docx v0.5.0 h1:4vU+gJ4WMdqwRvRVFF+XMw3rPfUGSXlToPJIX3mHQsQ=
|
||||||
|
github.com/lukasjarosch/go-docx v0.5.0/go.mod h1:ka/NZgDIJId48vMvcfWfduVTY7uV0/f8EgsmCjuS9X0=
|
||||||
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
|
||||||
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
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/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.61 h1:87c+x8J3jxQ5VUGimV9oHdpjsAvy3fhneEBKuoKEVUI=
|
||||||
github.com/minio/minio-go/v7 v7.0.81/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0=
|
github.com/minio/minio-go/v7 v7.0.61/go.mod h1:BTu8FcrEw+HidY0zd/0eny43QnVNkXRPXrLXFuQBHXg=
|
||||||
|
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
|
||||||
|
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
|
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/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE=
|
github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ=
|
||||||
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
|
github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
||||||
github.com/pierrec/lz4/v4 v4.1.19 h1:tYLzDnjDXh9qIxSTKHwXwOYmm9d887Y7Y1ZkyXYHAN4=
|
|
||||||
github.com/pierrec/lz4/v4 v4.1.19/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
|
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/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
|
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||||
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
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.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
|
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
@ -120,14 +146,14 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
|
|||||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
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/twmb/franz-go v1.15.3 h1:96nCgxz4DvGPSCumz6giquYy8GGDNsYCwWcloBdjJ4w=
|
github.com/twmb/franz-go v1.14.3 h1:cq8rxAnVYU1uF3SRVn8eEaUf+AaXKWlB0Cl3Ca7JSa4=
|
||||||
github.com/twmb/franz-go v1.15.3/go.mod h1:aos+d/UBuigWkOs+6WoqEPto47EvC2jipLAO5qrAu48=
|
github.com/twmb/franz-go v1.14.3/go.mod h1:nMAvTC2kHtK+ceaSHeHm4dlxC78389M/1DjpOswEgu4=
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqjJYoij2E=
|
github.com/twmb/franz-go/pkg/kmsg v1.6.1 h1:tm6hXPv5antMHLasTfKv9R+X03AjHSkSkXhQo2c5ALM=
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0/go.mod h1:se9Mjdt0Nwzc9lnjJ0HyDtLyBnaBDAd7pCje47OhSyw=
|
github.com/twmb/franz-go/pkg/kmsg v1.6.1/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.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
|
github.com/valyala/fasthttp v1.48.0 h1:oJWvHb9BIZToTQS3MuQ2R3bJZiNSa2KiNdeI8A+79Tc=
|
||||||
github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g=
|
github.com/valyala/fasthttp v1.48.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
|
||||||
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=
|
||||||
@ -136,27 +162,26 @@ github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
|
|||||||
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
||||||
github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
|
github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
|
||||||
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
||||||
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
|
||||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||||
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk=
|
|
||||||
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4=
|
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk=
|
go.mongodb.org/mongo-driver v1.12.1 h1:nLkghSU8fQNaK7oUmDhQFsnrtcoNy7Z6LVFKsEecqgE=
|
||||||
go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo=
|
go.mongodb.org/mongo-driver v1.12.1/go.mod h1:/rGBTebI3XYboVmgz+Wv3Bcbl3aD0QF9zl6kDDw18rQ=
|
||||||
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
||||||
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
|
||||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
|
||||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
|
||||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
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-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
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.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
|
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
|
||||||
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
|
||||||
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=
|
||||||
@ -164,52 +189,61 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl
|
|||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||||
|
golang.org/x/net v0.0.0-20200925080053-05aa5d4ee321/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
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.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
|
||||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
|
||||||
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/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ=
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM=
|
golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU=
|
||||||
|
golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk=
|
||||||
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=
|
||||||
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/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.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
||||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.7.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=
|
||||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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.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.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
|
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
|
||||||
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.22.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=
|
||||||
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
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.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
|
||||||
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
||||||
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=
|
||||||
@ -219,28 +253,31 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
|
|||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4=
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY=
|
google.golang.org/api v0.137.0 h1:QrKX6uNvzJLr0Fd3vWVqcyrcmFoYi036VUAsZbiF4+s=
|
||||||
|
google.golang.org/api v0.137.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY=
|
||||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
|
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
|
||||||
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||||
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg=
|
google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5 h1:L6iMMGrtzgHsWofoFcihmDEMYeDR9KN/ThbPWGrh++g=
|
||||||
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY=
|
google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5 h1:nIgk/EEq3/YlnmVVXVnm14rC2oxgs1o0ong4sD/rd44=
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo=
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577 h1:wukfNtZmZUurLN/atp2hiIeTKn7QJWIQdHzqmsOnAOk=
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4=
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M=
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE=
|
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM=
|
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
|
||||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||||
google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
|
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||||
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
|
google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
|
||||||
|
google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw=
|
||||||
|
google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
|
||||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
@ -256,8 +293,14 @@ google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs
|
|||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
|
||||||
|
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
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=
|
||||||
|
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20230712221540-d9932eb7254e h1:nZLUtqm+u3Tf339bioyyaUsxV10RSqKeukVa52H/+DQ=
|
||||||
|
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20230712221540-d9932eb7254e/go.mod h1:SCqfOb+FHQayOQcxHQKd52Az4sur3hr3Lx1I4UiLf6g=
|
||||||
|
@ -11,10 +11,10 @@ import (
|
|||||||
"github.com/gorilla/schema"
|
"github.com/gorilla/schema"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
"gitea.pena/PenaSide/docxTemplater/penadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/penadisk"
|
||||||
"gitea.pena/PenaSide/docxTemplater/tools"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReqAmoSaveToken struct {
|
type ReqAmoSaveToken struct {
|
||||||
@ -111,16 +111,16 @@ func (h *Handlers) AmoSaveToken(w http.ResponseWriter, r *http.Request) {
|
|||||||
Subdomain: accountAmo.Subdomain,
|
Subdomain: accountAmo.Subdomain,
|
||||||
ExpiresIn: token.Expiry,
|
ExpiresIn: token.Expiry,
|
||||||
TokenType: token.TokenType,
|
TokenType: token.TokenType,
|
||||||
Privileges: map[string]model.ShortPrivilige{
|
Privileges: map[string]model.ShortPrivilige{
|
||||||
model.PrivilegeTemplateCount: {
|
model.PrivilegeTemplateCount: model.ShortPrivilige{
|
||||||
Amount: model.BasicAmountPrivilegeTemplateCount,
|
Amount: model.BasicAmountPrivilegeTemplateCount,
|
||||||
CreatedAt: time.Now(),
|
CreatedAt: time.Now(),
|
||||||
},
|
},
|
||||||
model.PrivilegeTemplateStorage: {
|
model.PrivilegeTemplateStorage: model.ShortPrivilige{
|
||||||
Amount: model.BasicAmountPrivilegeTemplateStorage,
|
Amount: model.BasicAmountPrivilegeTemplateStorage,
|
||||||
CreatedAt: time.Now(),
|
CreatedAt: time.Now(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
@ -177,7 +177,7 @@ func (h *Handlers) AmoState(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
penaStorage, err := h.dal.PenaDisk.GetByAmoID(ctx, amoData.ID)
|
penaStorage, err := h.dal.PenaDisk.GetByPenaID(ctx, amoData.PenaID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
@ -226,7 +226,7 @@ func (h *Handlers) AmoState(w http.ResponseWriter, r *http.Request) {
|
|||||||
examples = result
|
examples = result
|
||||||
}
|
}
|
||||||
|
|
||||||
if penaStorage.ID == "" {
|
if penaStorage == nil {
|
||||||
if _, err = penadisk.NewClient(amoData.AccountID).GetDisk(r.Context()); err != nil {
|
if _, err = penadisk.NewClient(amoData.AccountID).GetDisk(r.Context()); err != nil {
|
||||||
h.logger.Error("ErrorCheckPenaDisk", zap.Error(err))
|
h.logger.Error("ErrorCheckPenaDisk", zap.Error(err))
|
||||||
}
|
}
|
||||||
@ -318,18 +318,18 @@ func (h *Handlers) AmoState(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var genCount int
|
var genCount int
|
||||||
if privilege, ok := amoData.Privileges[model.PrivilegeTemplateUnlimTime]; ok {
|
if privilege, ok := amoData.Privileges[model.PrivilegeTemplateUnlimTime]; ok {
|
||||||
if privilege.CreatedAt.AddDate(0, 0, int(privilege.Amount)).After(time.Now()) {
|
if privilege.CreatedAt.AddDate(0, 0, int(privilege.Amount)).After(time.Now()) {
|
||||||
genCount = 0
|
genCount = 0
|
||||||
} else {
|
} else {
|
||||||
genCount = -10
|
genCount = -10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if privilege, ok := amoData.Privileges[model.PrivilegeTemplateCount]; genCount == 0 && ok {
|
if privilege, ok := amoData.Privileges[model.PrivilegeTemplateCount]; genCount == 0 && ok {
|
||||||
genCount = int(privilege.Amount)
|
genCount = int(privilege.Amount)
|
||||||
}
|
}
|
||||||
|
|
||||||
resp := RespAmoState{
|
resp := RespAmoState{
|
||||||
GenCount: genCount,
|
GenCount: genCount,
|
||||||
|
@ -10,11 +10,11 @@ import (
|
|||||||
"github.com/gorilla/schema"
|
"github.com/gorilla/schema"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"google.golang.org/api/drive/v3"
|
"google.golang.org/api/drive/v3"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
GDisk "gitea.pena/PenaSide/docxTemplater/gdisk"
|
GDisk "penahub.gitlab.yandexcloud.net/backend/templategen/gdisk"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
"gitea.pena/PenaSide/docxTemplater/templategen"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/templategen"
|
||||||
"gitea.pena/PenaSide/docxTemplater/tools"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReqGDiskSaveToken struct {
|
type ReqGDiskSaveToken struct {
|
||||||
|
@ -1,23 +1,26 @@
|
|||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/beevik/etree"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
"gitea.pena/PenaSide/docxTemplater/gdisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/gdisk"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
"gitea.pena/PenaSide/docxTemplater/penadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/penadisk"
|
||||||
"gitea.pena/PenaSide/docxTemplater/templategen"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/templategen"
|
||||||
"gitea.pena/PenaSide/docxTemplater/yadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/yadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReqGeneratorByAmoLead struct {
|
type ReqGeneratorByAmoLead struct {
|
||||||
@ -33,22 +36,29 @@ type RespGenerated struct {
|
|||||||
|
|
||||||
// ReqGeneratorService is the request we get on GeneratorService endpoint.
|
// ReqGeneratorService is the request we get on GeneratorService endpoint.
|
||||||
type ReqGeneratorService struct {
|
type ReqGeneratorService struct {
|
||||||
DocNumber string `json:"docnumber"`
|
DocNumber string `json:"docnumber" xml:"DocNum"`
|
||||||
Date string `json:"date"`
|
Date string `json:"date" xml:"date"`
|
||||||
OrgTaxNum string `json:"orgtaxnum"`
|
OrgTaxNum string `json:"orgtaxnum" xml:"orgtaxnum"`
|
||||||
OrgName string `json:"orgname"`
|
OrgName string `json:"orgname" xml:"orgname"`
|
||||||
Name string `json:"name"`
|
Items []Item `json:"items" xml:"items>item"`
|
||||||
Amount string `json:"amount"`
|
TotalSum string `xml:"totalsum"`
|
||||||
Price string `json:"price"`
|
|
||||||
Sum string `json:"sum"`
|
|
||||||
Unit string `json:"unit"` // default value set in NewReqGeneratorService()
|
|
||||||
Tax string `json:"tax"` // default value set in NewReqGeneratorService()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewReqGeneratorService() ReqGeneratorService {
|
type Item struct {
|
||||||
return ReqGeneratorService{
|
Name string `json:"name" xml:"docnumber"`
|
||||||
Tax: "НДС не облагается",
|
Amount string `json:"amount" xml:"amount"`
|
||||||
Unit: "-",
|
Price string `json:"price" xml:"price"`
|
||||||
|
Sum string `json:"sum" xml:"sum"`
|
||||||
|
Unit string `json:"unit" xml:"unit"` // default value set in NewItem()
|
||||||
|
Tax string `json:"tax" xml:"tax"` // default value set in NewItem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *ReqGeneratorService) NewItem() {
|
||||||
|
if r.Items != nil && len(r.Items) > 0 {
|
||||||
|
for i, _ := range r.Items {
|
||||||
|
r.Items[i].Tax = "НДС не облагается"
|
||||||
|
r.Items[i].Unit = "-"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,7 +392,6 @@ func (h *Handlers) GeneratorService(writer http.ResponseWriter, req *http.Reques
|
|||||||
}
|
}
|
||||||
|
|
||||||
email := req.FormValue("email")
|
email := req.FormValue("email")
|
||||||
|
|
||||||
if email == "" {
|
if email == "" {
|
||||||
err = errors.New("email required")
|
err = errors.New("email required")
|
||||||
h.reportError(writer, http.StatusBadRequest, err)
|
h.reportError(writer, http.StatusBadRequest, err)
|
||||||
@ -390,21 +399,19 @@ func (h *Handlers) GeneratorService(writer http.ResponseWriter, req *http.Reques
|
|||||||
}
|
}
|
||||||
|
|
||||||
dataString := req.FormValue("data")
|
dataString := req.FormValue("data")
|
||||||
|
|
||||||
if dataString == "" {
|
if dataString == "" {
|
||||||
err = errors.New("data required")
|
err = errors.New("data required")
|
||||||
h.reportError(writer, http.StatusBadRequest, err)
|
h.reportError(writer, http.StatusBadRequest, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// some default values filled
|
|
||||||
data := NewReqGeneratorService()
|
|
||||||
|
|
||||||
// maybe need to check required fields and report errors if missing
|
// maybe need to check required fields and report errors if missing
|
||||||
|
var data ReqGeneratorService
|
||||||
if err = json.Unmarshal([]byte(dataString), &data); err != nil {
|
if err = json.Unmarshal([]byte(dataString), &data); err != nil {
|
||||||
h.reportError(writer, http.StatusBadRequest, err)
|
h.reportError(writer, http.StatusBadRequest, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
data.NewItem()
|
||||||
|
|
||||||
formFile, formFileHeader, err := req.FormFile("file")
|
formFile, formFileHeader, err := req.FormFile("file")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -423,8 +430,8 @@ func (h *Handlers) GeneratorService(writer http.ResponseWriter, req *http.Reques
|
|||||||
h.reportError(writer, http.StatusBadRequest, err)
|
h.reportError(writer, http.StatusBadRequest, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// TODO
|
||||||
resultFile, err := templategen.GenerateBytesFile(file, data)
|
resultFile, err := GenerateBytesFile(file, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(writer, http.StatusBadRequest, err)
|
h.reportError(writer, http.StatusBadRequest, err)
|
||||||
return
|
return
|
||||||
@ -442,6 +449,92 @@ func (h *Handlers) GeneratorService(writer http.ResponseWriter, req *http.Reques
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GenerateBytesFile(file []byte, data ReqGeneratorService) ([]byte, error) {
|
||||||
|
// разархивируем документ чтобы содержимое поменять
|
||||||
|
files, err := tools.ExtractDocx(file)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// надо менять только document.xml
|
||||||
|
modifiedXML, err := modifyDocumentXML(files["word/document.xml"], data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
files["word/document.xml"] = modifiedXML
|
||||||
|
// заменив отредактированный - опять делаем докс файл
|
||||||
|
return tools.CreateDocx(files)
|
||||||
|
}
|
||||||
|
|
||||||
|
func modifyDocumentXML(xmlContent []byte, data ReqGeneratorService) ([]byte, error) {
|
||||||
|
doc := etree.NewDocument()
|
||||||
|
if err := doc.ReadFromBytes(xmlContent); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// базовые плейсхолдеры которые просто заменяются
|
||||||
|
replaceMap := map[string]string{
|
||||||
|
"DocNum": data.DocNumber,
|
||||||
|
"Date": data.Date,
|
||||||
|
"Orgname": data.OrgName,
|
||||||
|
"INN": data.OrgTaxNum,
|
||||||
|
"Total": data.TotalSum,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, element := range doc.FindElements("//w:t") {
|
||||||
|
if val, exists := replaceMap[element.Text()]; exists {
|
||||||
|
element.SetText(val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// создание таблицы
|
||||||
|
for _, element := range doc.FindElements("//w:t") {
|
||||||
|
if element.Text() == "ItemsTable" {
|
||||||
|
// родительские параметры находим
|
||||||
|
paragraph := element.Parent().Parent()
|
||||||
|
grandParent := paragraph.Parent()
|
||||||
|
// запоминаем где был этот абзац
|
||||||
|
prevElement := *paragraph
|
||||||
|
// дропаем старый абзац
|
||||||
|
grandParent.RemoveChild(paragraph)
|
||||||
|
|
||||||
|
// делаем таблицу
|
||||||
|
table := etree.NewElement("w:tbl")
|
||||||
|
tblPr := table.CreateElement("w:tblPr")
|
||||||
|
tblPr.CreateElement("w:tblStyle").CreateAttr("w:val", "TableGrid")
|
||||||
|
tblPr.CreateElement("w:tblW").CreateAttr("w:w", "5000")
|
||||||
|
headerRow := table.CreateElement("w:tr")
|
||||||
|
headers := []string{"№", "Наименование", "Кол-во", "Ед. изм.", "Цена за ед.", "Стоимость", "НДС"}
|
||||||
|
for _, header := range headers {
|
||||||
|
tools.CreateTableCell(headerRow, header, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// заполняем данными
|
||||||
|
for i, item := range data.Items {
|
||||||
|
row := table.CreateElement("w:tr")
|
||||||
|
tools.CreateTableCell(row, fmt.Sprintf("%d", i+1), false)
|
||||||
|
tools.CreateTableCell(row, item.Name, false)
|
||||||
|
tools.CreateTableCell(row, item.Amount, false)
|
||||||
|
tools.CreateTableCell(row, item.Unit, false)
|
||||||
|
tools.CreateTableCell(row, item.Price, false)
|
||||||
|
tools.CreateTableCell(row, item.Sum, false)
|
||||||
|
tools.CreateTableCell(row, item.Tax, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// вставляем таблицу на место удаленного абзаца где был плейсхолдер ItemsTable
|
||||||
|
grandParent.InsertChildAt(prevElement.Index(), table)
|
||||||
|
prevElement = *table
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
doc.Indent(4)
|
||||||
|
var buf bytes.Buffer
|
||||||
|
if _, err := doc.WriteTo(&buf); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.Bytes(), nil
|
||||||
|
}
|
||||||
|
|
||||||
// generate - локальная функция, для генерации файла, возвращает ссылку для скачивания сгенерированного файла.
|
// generate - локальная функция, для генерации файла, возвращает ссылку для скачивания сгенерированного файла.
|
||||||
func (h *Handlers) generate(r *http.Request, file, name, storageID, storageType,
|
func (h *Handlers) generate(r *http.Request, file, name, storageID, storageType,
|
||||||
amoID string, history *model.History, data any) (string, error) {
|
amoID string, history *model.History, data any) (string, error) {
|
||||||
|
@ -1,68 +1,91 @@
|
|||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/danilsolovyov/doc-template/docx"
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/templategen"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGeneratorService(t *testing.T) {
|
//func TestGeneratorService(t *testing.T) {
|
||||||
file, err := os.ReadFile("../assets/TestGeneratorService.docx")
|
// file, err := os.ReadFile("../assets/TestGeneratorService.docx")
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
t.Error(err)
|
// t.Error(err)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// data := NewReqGeneratorService()
|
||||||
|
//
|
||||||
|
// // is filled by json.Unmarshal
|
||||||
|
// data.DocNumber = "2"
|
||||||
|
// data.Date = "13.05.2021"
|
||||||
|
// data.OrgName = `ООО ЛИГА ХОДЬБЫ "ЖЕНЬШЕНЬ" ПРИМОРСКОГО КРАЯ`
|
||||||
|
// data.OrgTaxNum = "999888111"
|
||||||
|
// data.Sum = "60 000 руб."
|
||||||
|
// data.Name = "Консультационные услуги"
|
||||||
|
// data.Amount = "2"
|
||||||
|
// data.Price = "1500"
|
||||||
|
// data.Sum = "3000"
|
||||||
|
//
|
||||||
|
// resultBytes, err := templategen.GenerateBytesFile(file, data)
|
||||||
|
// if err != nil {
|
||||||
|
// t.Error(err)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// document := new(docx.Docx)
|
||||||
|
// err = document.ReadBytes(resultBytes)
|
||||||
|
// if err != nil {
|
||||||
|
// t.Error(err)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // _ = os.WriteFile("/tmp/out3.docx", resultBytes, 0644) // TODO delete
|
||||||
|
//
|
||||||
|
// checkAllFieldsPresent(t, document.GetContent(), data)
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//func checkAllFieldsPresent(t *testing.T, content string, data interface{}) {
|
||||||
|
// t.Helper()
|
||||||
|
//
|
||||||
|
// v := reflect.ValueOf(data)
|
||||||
|
// vt := v.Type()
|
||||||
|
//
|
||||||
|
// for i := 0; i < v.NumField(); i++ {
|
||||||
|
// field := v.Field(i)
|
||||||
|
// fieldName := vt.Field(i).Name
|
||||||
|
// fieldValue := field.Interface()
|
||||||
|
//
|
||||||
|
// switch x := fieldValue.(type) {
|
||||||
|
// case string:
|
||||||
|
// if !strings.Contains(content, x) {
|
||||||
|
// t.Errorf("missing value for '%s': '%s'", fieldName, x)
|
||||||
|
// }
|
||||||
|
// default:
|
||||||
|
// t.Error("unhandled field")
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
func Test_GenerateBytesFile(t *testing.T) {
|
||||||
|
data := ReqGeneratorService{
|
||||||
|
DocNumber: "123",
|
||||||
|
Date: "2023-10-05",
|
||||||
|
OrgTaxNum: "1234567890",
|
||||||
|
OrgName: "ООО 'Пример'",
|
||||||
|
Items: []Item{
|
||||||
|
{Name: "Услуга 1", Amount: "1", Price: "1000", Sum: "1000"},
|
||||||
|
{Name: "Услуга 2", Amount: "2", Price: "500", Sum: "1000"},
|
||||||
|
},
|
||||||
|
TotalSum: "5000",
|
||||||
}
|
}
|
||||||
|
|
||||||
data := NewReqGeneratorService()
|
data.NewItem()
|
||||||
|
|
||||||
// is filled by json.Unmarshal
|
fmt.Println(data)
|
||||||
data.DocNumber = "2"
|
|
||||||
data.Date = "13.05.2021"
|
|
||||||
data.OrgName = `ООО ЛИГА ХОДЬБЫ "ЖЕНЬШЕНЬ" ПРИМОРСКОГО КРАЯ`
|
|
||||||
data.OrgTaxNum = "999888111"
|
|
||||||
data.Sum = "60 000 руб."
|
|
||||||
data.Name = "Консультационные услуги"
|
|
||||||
data.Amount = "2"
|
|
||||||
data.Price = "1500"
|
|
||||||
data.Sum = "3000"
|
|
||||||
|
|
||||||
resultBytes, err := templategen.GenerateBytesFile(file, data)
|
file, err := os.ReadFile("../static/examples/docx/report.docx")
|
||||||
if err != nil {
|
assert.NoError(t, err)
|
||||||
t.Error(err)
|
genFileBytes, err := GenerateBytesFile(file, data)
|
||||||
}
|
assert.NoError(t, err)
|
||||||
|
|
||||||
document := new(docx.Docx)
|
err = os.WriteFile("testGenBytesFile.docx", genFileBytes, 0664)
|
||||||
err = document.ReadBytes(resultBytes)
|
assert.NoError(t, err)
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// _ = os.WriteFile("/tmp/out3.docx", resultBytes, 0644) // TODO delete
|
|
||||||
|
|
||||||
checkAllFieldsPresent(t, document.GetContent(), data)
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkAllFieldsPresent(t *testing.T, content string, data interface{}) {
|
|
||||||
t.Helper()
|
|
||||||
|
|
||||||
v := reflect.ValueOf(data)
|
|
||||||
vt := v.Type()
|
|
||||||
|
|
||||||
for i := 0; i < v.NumField(); i++ {
|
|
||||||
field := v.Field(i)
|
|
||||||
fieldName := vt.Field(i).Name
|
|
||||||
fieldValue := field.Interface()
|
|
||||||
|
|
||||||
switch x := fieldValue.(type) {
|
|
||||||
case string:
|
|
||||||
if !strings.Contains(content, x) {
|
|
||||||
t.Errorf("missing value for '%s': '%s'", fieldName, x)
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
t.Error("unhandled field")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -7,11 +7,11 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/amo"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/amo"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal"
|
||||||
GDisk "gitea.pena/PenaSide/docxTemplater/gdisk"
|
GDisk "penahub.gitlab.yandexcloud.net/backend/templategen/gdisk"
|
||||||
smtpclient "gitea.pena/PenaSide/docxTemplater/smtp-client"
|
smtpclient "penahub.gitlab.yandexcloud.net/backend/templategen/smtp-client"
|
||||||
YaDisk "gitea.pena/PenaSide/docxTemplater/yadisk"
|
YaDisk "penahub.gitlab.yandexcloud.net/backend/templategen/yadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Handlers struct {
|
type Handlers struct {
|
||||||
|
@ -4,8 +4,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/mongos"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/mongos"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReqGetHistoryByID struct {
|
type ReqGetHistoryByID struct {
|
||||||
|
@ -5,9 +5,9 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/gorilla/schema"
|
"github.com/gorilla/schema"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
"gitea.pena/PenaSide/docxTemplater/penadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/penadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReqPenaDiskSetSettings struct {
|
type ReqPenaDiskSetSettings struct {
|
||||||
|
@ -5,8 +5,8 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReqTemplateSet struct {
|
type ReqTemplateSet struct {
|
||||||
|
@ -5,8 +5,8 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReqTemplateGroupCreate struct {
|
type ReqTemplateGroupCreate struct {
|
||||||
|
@ -10,10 +10,10 @@ import (
|
|||||||
"github.com/gorilla/schema"
|
"github.com/gorilla/schema"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
"gitea.pena/PenaSide/docxTemplater/tools"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
"gitea.pena/PenaSide/docxTemplater/yadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/yadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReqYaDiskSaveToken struct {
|
type ReqYaDiskSaveToken struct {
|
||||||
|
24
main.go
24
main.go
@ -13,17 +13,17 @@ import (
|
|||||||
"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"
|
||||||
"gitea.pena/PenaSide/docxTemplater/amo"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/amo"
|
||||||
"gitea.pena/PenaSide/docxTemplater/broker/tariff"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/broker/tariff"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal"
|
||||||
"gitea.pena/PenaSide/docxTemplater/gdisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/gdisk"
|
||||||
"gitea.pena/PenaSide/docxTemplater/handlers"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/handlers"
|
||||||
"gitea.pena/PenaSide/docxTemplater/middleware"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/middleware"
|
||||||
"gitea.pena/PenaSide/docxTemplater/privileges"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/privileges"
|
||||||
smtpclient "gitea.pena/PenaSide/docxTemplater/smtp-client"
|
smtpclient "penahub.gitlab.yandexcloud.net/backend/templategen/smtp-client"
|
||||||
"gitea.pena/PenaSide/docxTemplater/tools"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
"gitea.pena/PenaSide/docxTemplater/worker"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/worker"
|
||||||
"gitea.pena/PenaSide/docxTemplater/yadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/yadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Env struct {
|
type Env struct {
|
||||||
@ -112,7 +112,7 @@ func main() {
|
|||||||
kafkaTariffClient, err := kgo.NewClient(
|
kafkaTariffClient, err := kgo.NewClient(
|
||||||
kgo.SeedBrokers(opts.KafkaBrokers...),
|
kgo.SeedBrokers(opts.KafkaBrokers...),
|
||||||
kgo.ConsumerGroup(opts.KafkaConsumerGroupID),
|
kgo.ConsumerGroup(opts.KafkaConsumerGroupID),
|
||||||
kgo.ConsumeResetOffset(kgo.NewOffset().AfterMilli(time.Now().UnixMilli())),
|
kgo.ConsumeResetOffset(kgo.NewOffset().AtStart()),
|
||||||
kgo.DefaultProduceTopic(opts.KafkaTariffTopic),
|
kgo.DefaultProduceTopic(opts.KafkaTariffTopic),
|
||||||
kgo.ConsumeTopics(opts.KafkaTariffTopic),
|
kgo.ConsumeTopics(opts.KafkaTariffTopic),
|
||||||
)
|
)
|
||||||
|
@ -4,16 +4,16 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"gitea.pena/PenaSide/common/jwt_adapter"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/amo"
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal"
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal/model"
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/tools"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
"penahub.gitlab.yandexcloud.net/backend/penahub_common/jwt_adapter"
|
||||||
|
"penahub.gitlab.yandexcloud.net/backend/templategen/amo"
|
||||||
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal"
|
||||||
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal/model"
|
||||||
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Middleware struct {
|
type Middleware struct {
|
||||||
|
BIN
static/examples/docx/report.docx
Normal file
BIN
static/examples/docx/report.docx
Normal file
Binary file not shown.
@ -3,7 +3,7 @@ package templategen
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/amo"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/amo"
|
||||||
)
|
)
|
||||||
|
|
||||||
func AmoLeadFieldsToRuMap(data *amo.Lead) map[string]interface{} {
|
func AmoLeadFieldsToRuMap(data *amo.Lead) map[string]interface{} {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package templategen
|
package templategen
|
||||||
|
|
||||||
import (
|
import (
|
||||||
GDisk "gitea.pena/PenaSide/docxTemplater/gdisk"
|
GDisk "penahub.gitlab.yandexcloud.net/backend/templategen/gdisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GDiskGenerateDoc(file, name, saveFolderID string, client *GDisk.Client, data interface{}) (string, string, error) {
|
func GDiskGenerateDoc(file, name, saveFolderID string, client *GDisk.Client, data interface{}) (string, string, error) {
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.pena/PenaSide/docxTemplater/penadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/penadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
func PenaDiskGenerateDoc(ctx context.Context, file, name, saveFolder string, client *penadisk.Client, data interface{}) (string, string, error) {
|
func PenaDiskGenerateDoc(ctx context.Context, file, name, saveFolder string, client *penadisk.Client, data interface{}) (string, string, error) {
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
YaDisk "gitea.pena/PenaSide/docxTemplater/yadisk"
|
YaDisk "penahub.gitlab.yandexcloud.net/backend/templategen/yadisk"
|
||||||
)
|
)
|
||||||
|
|
||||||
func YaDiskGenerateDoc(ctx context.Context, file, name, saveFolder string, client *YaDisk.Client, data interface{}) (string, string, error) {
|
func YaDiskGenerateDoc(ctx context.Context, file, name, saveFolder string, client *YaDisk.Client, data interface{}) (string, string, error) {
|
||||||
|
72
tools/xml_doc.go
Normal file
72
tools/xml_doc.go
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
package tools
|
||||||
|
|
||||||
|
import (
|
||||||
|
"archive/zip"
|
||||||
|
"bytes"
|
||||||
|
"github.com/beevik/etree"
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExtractDocx(file []byte) (map[string][]byte, error) {
|
||||||
|
archive, err := zip.NewReader(bytes.NewReader(file), int64(len(file)))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
files := make(map[string][]byte)
|
||||||
|
|
||||||
|
for _, f := range archive.File {
|
||||||
|
rc, err := f.Open()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
content, err := io.ReadAll(rc)
|
||||||
|
rc.Close()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
files[f.Name] = content
|
||||||
|
}
|
||||||
|
|
||||||
|
return files, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateDocx(files map[string][]byte) ([]byte, error) {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
zipWr := zip.NewWriter(&buf)
|
||||||
|
|
||||||
|
for name, content := range files {
|
||||||
|
file, err := zipWr.Create(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
_, err = file.Write(content)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err := zipWr.Close()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.Bytes(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateTableCell(row *etree.Element, text string, fat bool) {
|
||||||
|
cell := row.CreateElement("w:tc")
|
||||||
|
tcPr := cell.CreateElement("w:tcPr")
|
||||||
|
tcPr.CreateElement("w:tcW").CreateAttr("w:w", "1000")
|
||||||
|
|
||||||
|
para := cell.CreateElement("w:p")
|
||||||
|
run := para.CreateElement("w:r")
|
||||||
|
|
||||||
|
if fat {
|
||||||
|
rPr := run.CreateElement("w:rPr")
|
||||||
|
rPr.CreateElement("w:b")
|
||||||
|
}
|
||||||
|
|
||||||
|
run.CreateElement("w:t").SetText(text)
|
||||||
|
cell.AddChild(para)
|
||||||
|
}
|
@ -5,11 +5,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"gitea.pena/PenaSide/docxTemplater/broker/tariff"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/broker/tariff"
|
||||||
"gitea.pena/PenaSide/docxTemplater/broker/tariff/models"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/broker/tariff/models"
|
||||||
"gitea.pena/PenaSide/docxTemplater/dal"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/dal"
|
||||||
"gitea.pena/PenaSide/docxTemplater/penadisk"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/penadisk"
|
||||||
"gitea.pena/PenaSide/docxTemplater/privileges"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/privileges"
|
||||||
)
|
)
|
||||||
|
|
||||||
/* TODO: Сделать рефакторинг кода!
|
/* TODO: Сделать рефакторинг кода!
|
||||||
@ -41,29 +41,20 @@ func NewTariffWorker(deps TariffWorkerDeps) *TariffWorker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (w *TariffWorker) Run(ctx context.Context) {
|
func (w *TariffWorker) Run(ctx context.Context) {
|
||||||
minuteTick := time.NewTicker(time.Minute)
|
ticker := time.NewTicker(5 * time.Minute)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
w.logger.Info("tariff worker done")
|
w.logger.Info("tariff worker done")
|
||||||
minuteTick.Stop()
|
|
||||||
return
|
return
|
||||||
case <-minuteTick.C:
|
case <-ticker.C:
|
||||||
w.updatePrivilegies(ctx)
|
|
||||||
default:
|
|
||||||
w.logger.Info("tariff worker tick")
|
|
||||||
w.Do(ctx)
|
w.Do(ctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *TariffWorker) Do(ctx context.Context) {
|
func (w *TariffWorker) Do(ctx context.Context) {
|
||||||
// проверяем новые тарифы
|
|
||||||
tariffs := w.tariffConsumer.FetchTariffs(ctx)
|
|
||||||
|
|
||||||
w.logger.Info("get tariff from redpanda", zap.Any("tariff", tariffs))
|
|
||||||
|
|
||||||
// получаем актуальные привилегии
|
// получаем актуальные привилегии
|
||||||
getActualPrivileges, err := privileges.GetActualPrivileges(ctx, w.privilegesDomain)
|
getActualPrivileges, err := privileges.GetActualPrivileges(ctx, w.privilegesDomain)
|
||||||
|
|
||||||
@ -71,12 +62,11 @@ func (w *TariffWorker) Do(ctx context.Context) {
|
|||||||
w.logger.Error("cannot get actual privileges", zap.Error(err))
|
w.logger.Error("cannot get actual privileges", zap.Error(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.logger.Info("tariff worker tick2", zap.String("pdomain", w.privilegesDomain))
|
|
||||||
|
|
||||||
actualPrivileges := make(map[string]models.Privilege)
|
actualPrivileges := make(map[string]models.Privilege)
|
||||||
|
|
||||||
for _, privilege := range getActualPrivileges {
|
for _, privilege := range getActualPrivileges {
|
||||||
actualPrivileges[privilege.PrivilegeID] = models.Privilege{
|
actualPrivileges[privilege.ID] = models.Privilege{
|
||||||
ID: privilege.ID,
|
ID: privilege.ID,
|
||||||
Amount: 0,
|
Amount: 0,
|
||||||
PrivilegeID: privilege.PrivilegeID,
|
PrivilegeID: privilege.PrivilegeID,
|
||||||
@ -92,13 +82,16 @@ func (w *TariffWorker) Do(ctx context.Context) {
|
|||||||
DeletedAt: privilege.DeletedAt,
|
DeletedAt: privilege.DeletedAt,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
w.logger.Info("tariff worker tick3", zap.Any("pdoin", actualPrivileges))
|
|
||||||
|
// проверяем новые тарифы
|
||||||
|
tariffs := w.tariffConsumer.FetchTariffs(ctx)
|
||||||
|
|
||||||
for _, tariff := range tariffs {
|
for _, tariff := range tariffs {
|
||||||
|
w.logger.Info("get tariff from redpanda", zap.Any("tariff", tariff))
|
||||||
penadisk := penadisk.NewClient(tariff.UserID)
|
penadisk := penadisk.NewClient(tariff.UserID)
|
||||||
|
|
||||||
for _, newPrivilege := range tariff.Privileges {
|
for _, newPrivilege := range tariff.Privileges {
|
||||||
if newPrivilege.ServiceKey != models.ServiceKey || tariff.UserID == "" || newPrivilege.ID == "" {
|
if newPrivilege.ServiceKey != models.ServiceKey {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,9 +119,7 @@ func (w *TariffWorker) Do(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
func (w *TariffWorker) updatePrivilegies(ctx context.Context) {
|
|
||||||
// получаем пользователей
|
// получаем пользователей
|
||||||
amos, err := w.dal.Amo.GetAll(ctx)
|
amos, err := w.dal.Amo.GetAll(ctx)
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"gitea.pena/PenaSide/docxTemplater/tools"
|
"penahub.gitlab.yandexcloud.net/backend/templategen/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
Loading…
Reference in New Issue
Block a user