Task (#862kbz8hr)
This commit is contained in:
parent
36684badfd
commit
ae7f7ccbd3
@ -67,8 +67,9 @@ func NewClientApp(clientID, clientSecret string, redirectURI string) *ClientApp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ca *ClientApp) GenerateOAuthURL(penaID, redirectURL string) (string, error) {
|
func (ca *ClientApp) GenerateOAuthURL(amoID, penaID, redirectURL string) (string, error) {
|
||||||
state, err := tools.EncryptTokenAES(tools.StateToken{
|
state, err := tools.EncryptTokenAES(tools.StateToken{
|
||||||
|
AmoID: amoID,
|
||||||
PenaID: penaID,
|
PenaID: penaID,
|
||||||
Service: "amo",
|
Service: "amo",
|
||||||
RedirectURL: redirectURL,
|
RedirectURL: redirectURL,
|
||||||
|
@ -13,6 +13,8 @@ type GDisk struct {
|
|||||||
|
|
||||||
PenaID string `bson:"pena_id" json:"pena_id"`
|
PenaID string `bson:"pena_id" json:"pena_id"`
|
||||||
|
|
||||||
|
AmoID string `bson:"amo_id" json:"amo_id"`
|
||||||
|
|
||||||
/* Google email. Уникальное поле и закрепляется только за одним пользователем. */
|
/* Google email. Уникальное поле и закрепляется только за одним пользователем. */
|
||||||
Email string `bson:"email" json:"email"`
|
Email string `bson:"email" json:"email"`
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@ type PenaDisk struct {
|
|||||||
|
|
||||||
PenaID string `bson:"pena_id" json:"pena_id"`
|
PenaID string `bson:"pena_id" json:"pena_id"`
|
||||||
|
|
||||||
|
AmoID string `bson:"amo_id" json:"amo_id"`
|
||||||
|
|
||||||
/* Пользовательское название хранилища */
|
/* Пользовательское название хранилища */
|
||||||
Name string `bson:"name" json:"name"`
|
Name string `bson:"name" json:"name"`
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@ import (
|
|||||||
type Template struct {
|
type Template struct {
|
||||||
ID string `bson:"_id,omitempty" json:"id"`
|
ID string `bson:"_id,omitempty" json:"id"`
|
||||||
|
|
||||||
|
AmoID string `bson:"amo_id" json:"amo_id"`
|
||||||
|
|
||||||
PenaID string `bson:"pena_id" json:"pena_id"`
|
PenaID string `bson:"pena_id" json:"pena_id"`
|
||||||
|
|
||||||
/* AMO lead */
|
/* AMO lead */
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
|
|
||||||
type TemplateGroup struct {
|
type TemplateGroup struct {
|
||||||
ID string `bson:"_id,omitempty" json:"id"`
|
ID string `bson:"_id,omitempty" json:"id"`
|
||||||
|
AmoID string `bson:"amo_id" json:"amo_id"`
|
||||||
PenaID string `bson:"pena_id" json:"pena_id"`
|
PenaID string `bson:"pena_id" json:"pena_id"`
|
||||||
Name string `bson:"name" json:"name"`
|
Name string `bson:"name" json:"name"`
|
||||||
CreatedAt time.Time `bson:"created_at" json:"created_at"`
|
CreatedAt time.Time `bson:"created_at" json:"created_at"`
|
||||||
|
@ -14,6 +14,8 @@ YaDisk (StorageType) - хранит информацию о пользовате
|
|||||||
type YaDisk struct {
|
type YaDisk struct {
|
||||||
ID string `bson:"_id,omitempty" json:"id"`
|
ID string `bson:"_id,omitempty" json:"id"`
|
||||||
|
|
||||||
|
AmoID string `bson:"amo_id" json:"amo_id"`
|
||||||
|
|
||||||
PenaID string `bson:"pena_id" json:"pena_id"`
|
PenaID string `bson:"pena_id" json:"pena_id"`
|
||||||
|
|
||||||
/* Yandex UID. уникальное поле и закрепляется только за одним пользователем */
|
/* Yandex UID. уникальное поле и закрепляется только за одним пользователем */
|
||||||
|
@ -121,6 +121,27 @@ func (d *GDisk) GetByEmail(ctx context.Context, email string) (*model.GDisk, err
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *GDisk) GetByAmoID(ctx context.Context, amoID string) (*model.GDisk, error) {
|
||||||
|
filter := bson.M{"amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
var result model.GDisk
|
||||||
|
|
||||||
|
err := d.coll.FindOne(ctx, filter).Decode(&result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
d.logger.Info("InfoGetGDisk", zap.String("id", "not found"))
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Error("ErrorGetGDisk", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Info("InfoGetGDisk", zap.String("id", result.ID))
|
||||||
|
return &result, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *GDisk) GetListByPenaID(ctx context.Context, penaID string) ([]model.GDisk, error) {
|
func (d *GDisk) GetListByPenaID(ctx context.Context, penaID string) ([]model.GDisk, error) {
|
||||||
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
||||||
|
|
||||||
@ -148,6 +169,33 @@ func (d *GDisk) GetListByPenaID(ctx context.Context, penaID string) ([]model.GDi
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *GDisk) GetListByAmoID(ctx context.Context, amoID string) ([]model.GDisk, error) {
|
||||||
|
filter := bson.M{"amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
var result []model.GDisk
|
||||||
|
|
||||||
|
cur, err := d.coll.Find(ctx, filter)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
d.logger.Info("InfoGetListGDisk", zap.String("id", "not found"))
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Error("ErrorGetListGDisk", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = cur.All(ctx, &result)
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorGetListGDisk", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Info("InfoGetListGDisk")
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *GDisk) Update(ctx context.Context, record *model.GDisk) error {
|
func (d *GDisk) Update(ctx context.Context, record *model.GDisk) error {
|
||||||
filter := bson.M{"is_deleted": false}
|
filter := bson.M{"is_deleted": false}
|
||||||
|
|
||||||
@ -239,6 +287,20 @@ func (d *GDisk) Update(ctx context.Context, record *model.GDisk) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *GDisk) DeleteByAmoID(ctx context.Context, amoID string) error {
|
||||||
|
filter := bson.M{"amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
update := bson.M{"updated_at": time.Now(), "is_deleted": true}
|
||||||
|
|
||||||
|
_, err := d.coll.UpdateOne(ctx, filter, bson.D{{Key: "$set", Value: update}})
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorDeleteGDisk", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *GDisk) DeleteByPenaID(ctx context.Context, penaID string) error {
|
func (d *GDisk) DeleteByPenaID(ctx context.Context, penaID string) error {
|
||||||
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
||||||
|
|
||||||
|
@ -26,7 +26,16 @@ func (d *PenaDisk) InsertOrUpdate(ctx context.Context, record *model.PenaDisk) (
|
|||||||
record.CreatedAt = time.Now()
|
record.CreatedAt = time.Now()
|
||||||
record.UpdatedAt = record.CreatedAt
|
record.UpdatedAt = record.CreatedAt
|
||||||
|
|
||||||
found, err := d.GetByPenaID(ctx, record.PenaID)
|
found, err := d.GetByAmoID(ctx, record.AmoID)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorInsertOrUpdatePenaDisk", zap.Error(err))
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if found == nil {
|
||||||
|
found, err = d.GetByAmoID(ctx, record.AmoID)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
d.logger.Error("ErrorInsertOrUpdatePenaDisk", zap.Error(err))
|
d.logger.Error("ErrorInsertOrUpdatePenaDisk", zap.Error(err))
|
||||||
@ -102,7 +111,28 @@ func (d *PenaDisk) GetByPenaID(ctx context.Context, penaID string) (*model.PenaD
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update - обновляет запись по её id или PenaID.
|
func (d *PenaDisk) GetByAmoID(ctx context.Context, amoID string) (*model.PenaDisk, error) {
|
||||||
|
filter := bson.M{"amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
var result model.PenaDisk
|
||||||
|
|
||||||
|
err := d.coll.FindOne(ctx, filter).Decode(&result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
d.logger.Info("InfoGetPenaDisk", zap.String("id", "not found"))
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Error("ErrorGetPenaDisk", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Info("InfoGetPenaDisk", zap.String("id", result.ID))
|
||||||
|
return &result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update - обновляет запись по её id, AmoID или PenaID.
|
||||||
func (d *PenaDisk) Update(ctx context.Context, record *model.PenaDisk) error {
|
func (d *PenaDisk) Update(ctx context.Context, record *model.PenaDisk) error {
|
||||||
filter := bson.M{"is_deleted": false}
|
filter := bson.M{"is_deleted": false}
|
||||||
|
|
||||||
@ -115,8 +145,10 @@ func (d *PenaDisk) Update(ctx context.Context, record *model.PenaDisk) error {
|
|||||||
filter["_id"] = objID
|
filter["_id"] = objID
|
||||||
} else if record.PenaID != "" {
|
} else if record.PenaID != "" {
|
||||||
filter["pena_id"] = record.PenaID
|
filter["pena_id"] = record.PenaID
|
||||||
|
} else if record.AmoID != "" {
|
||||||
|
filter["amo_id"] = record.AmoID
|
||||||
} else {
|
} else {
|
||||||
err := errors.New("got empty id and pena_id")
|
err := errors.New("got empty id, amo_id and pena_id")
|
||||||
d.logger.Error("ErrorUpdatePenaDisk", zap.Error(err))
|
d.logger.Error("ErrorUpdatePenaDisk", zap.Error(err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -145,6 +177,20 @@ func (d *PenaDisk) Update(ctx context.Context, record *model.PenaDisk) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *PenaDisk) DeleteByAmoID(ctx context.Context, amoID string) error {
|
||||||
|
filter := bson.M{"amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
update := bson.M{"updated_at": time.Now(), "is_deleted": true}
|
||||||
|
|
||||||
|
_, err := d.coll.UpdateOne(ctx, filter, bson.D{{Key: "$set", Value: update}})
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorDeletePenaDisk", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *PenaDisk) DeleteByPenaID(ctx context.Context, penaID string) error {
|
func (d *PenaDisk) DeleteByPenaID(ctx context.Context, penaID string) error {
|
||||||
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
||||||
|
|
||||||
|
@ -28,12 +28,6 @@ func (d *Template) Insert(ctx context.Context, record *model.Template) (string,
|
|||||||
record.UpdatedAt = now
|
record.UpdatedAt = now
|
||||||
record.IsDeleted = false
|
record.IsDeleted = false
|
||||||
|
|
||||||
if record.PenaID == "" {
|
|
||||||
err := errors.New("got empty pena_id")
|
|
||||||
d.logger.Error("ErrorDeleteTemplate", zap.Error(err))
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
if record.GroupIDs == nil {
|
if record.GroupIDs == nil {
|
||||||
record.GroupIDs = []string{}
|
record.GroupIDs = []string{}
|
||||||
}
|
}
|
||||||
@ -125,6 +119,30 @@ func (d *Template) GetByNameAndPenaID(ctx context.Context, name, penaID string)
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *Template) GetByNameAndAmoID(ctx context.Context, name, amoID string) (*model.Template, error) {
|
||||||
|
filter := bson.M{"name": name, "amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
fmt.Println("-----------------------------------")
|
||||||
|
fmt.Println(filter)
|
||||||
|
|
||||||
|
var result model.Template
|
||||||
|
err := d.coll.FindOne(ctx, filter).Decode(&result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
d.logger.Info("InfoGetTemplate", zap.String("id", "not found"))
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Error("ErrorGetTemplate", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Info("InfoGetTemplate", zap.String("id", result.ID))
|
||||||
|
|
||||||
|
return &result, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *Template) GetByFilenameAndPenaID(ctx context.Context, name, penaID string) (*model.Template, error) {
|
func (d *Template) GetByFilenameAndPenaID(ctx context.Context, name, penaID string) (*model.Template, error) {
|
||||||
filter := bson.M{"filename": name, "pena_id": penaID, "is_deleted": false}
|
filter := bson.M{"filename": name, "pena_id": penaID, "is_deleted": false}
|
||||||
|
|
||||||
@ -147,6 +165,28 @@ func (d *Template) GetByFilenameAndPenaID(ctx context.Context, name, penaID stri
|
|||||||
return &result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *Template) GetByFilenameAndAmoID(ctx context.Context, name, amoID string) (*model.Template, error) {
|
||||||
|
filter := bson.M{"filename": name, "amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
var result model.Template
|
||||||
|
|
||||||
|
err := d.coll.FindOne(ctx, filter).Decode(&result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
d.logger.Info("InfoGetTemplate", zap.String("id", "not found"))
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Error("ErrorGetTemplate", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Info("InfoGetTemplate", zap.String("id", result.ID))
|
||||||
|
|
||||||
|
return &result, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *Template) GetListByPenaID(ctx context.Context, penaID string) ([]model.Template, error) {
|
func (d *Template) GetListByPenaID(ctx context.Context, penaID string) ([]model.Template, error) {
|
||||||
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
filter := bson.M{"pena_id": penaID, "is_deleted": false}
|
||||||
|
|
||||||
@ -176,6 +216,35 @@ func (d *Template) GetListByPenaID(ctx context.Context, penaID string) ([]model.
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *Template) GetListByAmoID(ctx context.Context, amoID string) ([]model.Template, error) {
|
||||||
|
filter := bson.M{"amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
var result []model.Template
|
||||||
|
|
||||||
|
cursor, err := d.coll.Find(ctx, filter)
|
||||||
|
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
return nil, nil
|
||||||
|
} else if err != nil {
|
||||||
|
d.logger.Error("ErrorGetTemplate", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = cursor.All(ctx, &result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
d.logger.Info("InfoGetTemplate", zap.String("id", "not found"))
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Error("ErrorGetTemplate", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *Template) GetListByPenaIDAndStorageType(ctx context.Context, penaID, storageType string) ([]model.Template,
|
func (d *Template) GetListByPenaIDAndStorageType(ctx context.Context, penaID, storageType string) ([]model.Template,
|
||||||
error) {
|
error) {
|
||||||
filter := bson.M{"pena_id": penaID, "storage_type": storageType, "is_deleted": false}
|
filter := bson.M{"pena_id": penaID, "storage_type": storageType, "is_deleted": false}
|
||||||
@ -205,8 +274,37 @@ func (d *Template) GetListByPenaIDAndStorageType(ctx context.Context, penaID, st
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Template) GetListByGroupID(ctx context.Context, groupID, penaID string) ([]model.Template, error) {
|
func (d *Template) GetListByAmoIDAndStorageType(ctx context.Context, amoID, storageType string) ([]model.Template,
|
||||||
filter := bson.M{"pena_id": penaID}
|
error) {
|
||||||
|
filter := bson.M{"amo_id": amoID, "storage_type": storageType, "is_deleted": false}
|
||||||
|
|
||||||
|
var result []model.Template
|
||||||
|
|
||||||
|
cursor, err := d.coll.Find(ctx, filter)
|
||||||
|
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
return nil, nil
|
||||||
|
} else if err != nil {
|
||||||
|
d.logger.Error("ErrorGetTemplate", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = cursor.All(ctx, &result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
d.logger.Info("InfoGetTemplate", zap.String("id", "not found"))
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Error("ErrorGetTemplate", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *Template) GetListByGroupID(ctx context.Context, groupID, amoID, penaID string) ([]model.Template, error) {
|
||||||
|
filter := bson.M{"pena_id": penaID, "amo_id": amoID}
|
||||||
|
|
||||||
if groupID == "" {
|
if groupID == "" {
|
||||||
filter["group_ids"] = []string{}
|
filter["group_ids"] = []string{}
|
||||||
@ -232,7 +330,7 @@ func (d *Template) GetListByGroupID(ctx context.Context, groupID, penaID string)
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Template) PushGroup(ctx context.Context, id, groupID, penaID string) error {
|
func (d *Template) PushGroup(ctx context.Context, id, groupID, amoID, penaID string) error {
|
||||||
objID, err := primitive.ObjectIDFromHex(id)
|
objID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -252,6 +350,10 @@ func (d *Template) PushGroup(ctx context.Context, id, groupID, penaID string) er
|
|||||||
filter["pena_id"] = penaID
|
filter["pena_id"] = penaID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if amoID != "" {
|
||||||
|
filter["amo_id"] = amoID
|
||||||
|
}
|
||||||
|
|
||||||
update := bson.M{
|
update := bson.M{
|
||||||
"$addToSet": bson.M{"group_ids": groupID},
|
"$addToSet": bson.M{"group_ids": groupID},
|
||||||
"$set": bson.M{"updated_at": time.Now()},
|
"$set": bson.M{"updated_at": time.Now()},
|
||||||
@ -269,7 +371,7 @@ func (d *Template) PushGroup(ctx context.Context, id, groupID, penaID string) er
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Template) PullGroup(ctx context.Context, id, groupID, penaID string) error {
|
func (d *Template) PullGroup(ctx context.Context, id, groupID, amoID, penaID string) error {
|
||||||
objID, err := primitive.ObjectIDFromHex(id)
|
objID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -289,6 +391,10 @@ func (d *Template) PullGroup(ctx context.Context, id, groupID, penaID string) er
|
|||||||
filter["pena_id"] = penaID
|
filter["pena_id"] = penaID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if amoID != "" {
|
||||||
|
filter["amo_id"] = amoID
|
||||||
|
}
|
||||||
|
|
||||||
update := bson.M{
|
update := bson.M{
|
||||||
"$pull": bson.M{"group_ids": groupID},
|
"$pull": bson.M{"group_ids": groupID},
|
||||||
"$set": bson.M{"updated_at": time.Now()},
|
"$set": bson.M{"updated_at": time.Now()},
|
||||||
|
@ -26,18 +26,6 @@ func (d *TemplateGroup) Insert(ctx context.Context, record *model.TemplateGroup)
|
|||||||
record.CreatedAt = now
|
record.CreatedAt = now
|
||||||
record.UpdatedAt = now
|
record.UpdatedAt = now
|
||||||
|
|
||||||
if record.PenaID == "" {
|
|
||||||
err := errors.New("pena_id required")
|
|
||||||
d.logger.Error("ErrorInsertTemplateGroup", zap.Error(err))
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
if record.Name == "" {
|
|
||||||
err := errors.New("name required")
|
|
||||||
d.logger.Error("ErrorInsertTemplateGroup", zap.Error(err))
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err := d.coll.InsertOne(ctx, record)
|
result, err := d.coll.InsertOne(ctx, record)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -115,6 +103,41 @@ func (d *TemplateGroup) GetListByPenaID(ctx context.Context, penaID string) ([]m
|
|||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *TemplateGroup) GetListByAmoID(ctx context.Context, amoID string) ([]model.TemplateGroup, error) {
|
||||||
|
if amoID == "" {
|
||||||
|
err := errors.New("amo_id required")
|
||||||
|
d.logger.Error("ErrorGetListTemplateGroup")
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
filter := bson.M{"amo_id": amoID}
|
||||||
|
|
||||||
|
var result []model.TemplateGroup
|
||||||
|
|
||||||
|
cur, err := d.coll.Find(ctx, filter)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
d.logger.Info("InfoGetTemplateGroup", zap.String("id", "not found"))
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Error("ErrorGetTemplateGroup", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = cur.All(ctx, &result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorGetListTemplateGroup", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Info("InfoGetListTemplateGroup")
|
||||||
|
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
func (d *TemplateGroup) Update(ctx context.Context, record *model.TemplateGroup) error {
|
func (d *TemplateGroup) Update(ctx context.Context, record *model.TemplateGroup) error {
|
||||||
objID, err := primitive.ObjectIDFromHex(record.ID)
|
objID, err := primitive.ObjectIDFromHex(record.ID)
|
||||||
|
|
||||||
@ -129,6 +152,10 @@ func (d *TemplateGroup) Update(ctx context.Context, record *model.TemplateGroup)
|
|||||||
filter["pena_id"] = record.PenaID
|
filter["pena_id"] = record.PenaID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if record.AmoID != "" {
|
||||||
|
filter["amo_id"] = record.AmoID
|
||||||
|
}
|
||||||
|
|
||||||
update := bson.M{"updated_at": time.Now()}
|
update := bson.M{"updated_at": time.Now()}
|
||||||
|
|
||||||
if record.Name != "" {
|
if record.Name != "" {
|
||||||
@ -178,3 +205,16 @@ func (d *TemplateGroup) DeleteByPenaID(ctx context.Context, penaID string) error
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *TemplateGroup) DeleteByAmoID(ctx context.Context, amoID string) error {
|
||||||
|
filter := bson.M{"amo_id": amoID}
|
||||||
|
|
||||||
|
_, err := d.coll.DeleteMany(ctx, filter)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorDeleteTemplateGroup", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -145,6 +145,29 @@ func (d *YaDisk) GetListByPenaID(ctx context.Context, penaID string) ([]model.Ya
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *YaDisk) GetListByAmoID(ctx context.Context, amoID string) ([]model.YaDisk, error) {
|
||||||
|
filter := bson.M{"amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
result := []model.YaDisk{}
|
||||||
|
|
||||||
|
cur, err := d.coll.Find(ctx, filter)
|
||||||
|
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
return nil, nil
|
||||||
|
} else if err != nil {
|
||||||
|
d.logger.Error("ErrorGetListYaDisk", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = cur.All(ctx, &result)
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorGetListYaDisk", zap.Error(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
d.logger.Info("InfoGetListYaDisk")
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Update - обновляет запись по её id или логину Yandex.
|
// Update - обновляет запись по её id или логину Yandex.
|
||||||
func (d *YaDisk) Update(ctx context.Context, record *model.YaDisk) error {
|
func (d *YaDisk) Update(ctx context.Context, record *model.YaDisk) error {
|
||||||
filter := bson.M{"is_deleted": false}
|
filter := bson.M{"is_deleted": false}
|
||||||
@ -226,3 +249,17 @@ func (d *YaDisk) DeleteByPenaID(ctx context.Context, penaID string) error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *YaDisk) DeleteByAmoID(ctx context.Context, amoID string) error {
|
||||||
|
filter := bson.M{"amo_id": amoID, "is_deleted": false}
|
||||||
|
|
||||||
|
update := bson.M{"updated_at": time.Now(), "is_deleted": true}
|
||||||
|
|
||||||
|
_, err := d.coll.UpdateMany(ctx, filter, bson.D{{Key: "$set", Value: update}})
|
||||||
|
if err != nil {
|
||||||
|
d.logger.Error("ErrorDeleteYaDisk", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -54,8 +54,9 @@ func NewClientApp(credentials string) (*ClientApp, error) {
|
|||||||
return &ClientApp{Config: config}, nil
|
return &ClientApp{Config: config}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ca *ClientApp) GenerateOAuthURL(penaID, redirectURL string) (string, error) {
|
func (ca *ClientApp) GenerateOAuthURL(amoID, penaID, redirectURL string) (string, error) {
|
||||||
state, err := tools.EncryptTokenAES(tools.StateToken{
|
state, err := tools.EncryptTokenAES(tools.StateToken{
|
||||||
|
AmoID: amoID,
|
||||||
PenaID: penaID,
|
PenaID: penaID,
|
||||||
Service: "google",
|
Service: "google",
|
||||||
RedirectURL: redirectURL,
|
RedirectURL: redirectURL,
|
||||||
|
@ -144,47 +144,19 @@ func (h *Handlers) AmoState(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
amoData := middleware.GetAmoData(r)
|
amoData := middleware.GetAmoData(r)
|
||||||
|
|
||||||
if amoData == nil {
|
yaStorages, err := h.dal.YaDisk.GetListByPenaID(r.Context(), amoData.PenaID)
|
||||||
h.reportError(w, http.StatusUnauthorized, ErrorUnauthorized)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
account, err := h.dal.Amo.GetByAccountID(ctx, amoData.AccountID)
|
|
||||||
if err != nil {
|
|
||||||
h.reportError(w, http.StatusInternalServerError, fmt.Errorf("db unexpected error %s", err.Error()))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if account == nil {
|
|
||||||
account = &model.Amo{
|
|
||||||
AccountID: amoData.AccountID,
|
|
||||||
PenaID: middleware.GetPenaUserID(r),
|
|
||||||
}
|
|
||||||
|
|
||||||
var id string
|
|
||||||
|
|
||||||
id, err = h.dal.Amo.InsertOrUpdate(ctx, account)
|
|
||||||
if err != nil {
|
|
||||||
h.reportError(w, http.StatusInternalServerError, fmt.Errorf("db unexpected error %s", err.Error()))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
account.ID = id
|
|
||||||
}
|
|
||||||
|
|
||||||
yaStorages, err := h.dal.YaDisk.GetListByPenaID(r.Context(), account.PenaID)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
gStorages, err := h.dal.GDisk.GetListByPenaID(r.Context(), account.PenaID)
|
gStorages, err := h.dal.GDisk.GetListByAmoID(r.Context(), amoData.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
penaStorage, err := h.dal.PenaDisk.GetByPenaID(ctx, account.PenaID)
|
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
|
||||||
@ -197,19 +169,19 @@ func (h *Handlers) AmoState(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
redirectURI := "https://" + amoData.Referer + h.opts.AmoRedirectUrn
|
redirectURI := "https://" + amoData.Referer + h.opts.AmoRedirectUrn
|
||||||
authYandexURL, err := h.YaDisk.GenerateOAuthURL(account.PenaID, redirectURI)
|
authYandexURL, err := h.YaDisk.GenerateOAuthURL(amoData.ID, amoData.PenaID, redirectURI)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
authGoogleURL, err := h.GDisk.GenerateOAuthURL(account.PenaID, redirectURI)
|
authGoogleURL, err := h.GDisk.GenerateOAuthURL(amoData.ID, amoData.PenaID, redirectURI)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
authAmoURL, err := h.Amo.GenerateOAuthURL(account.PenaID, redirectURI)
|
authAmoURL, err := h.Amo.GenerateOAuthURL(amoData.ID, amoData.PenaID, redirectURI)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
@ -303,36 +275,55 @@ func (h *Handlers) AmoState(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Amo tokens
|
// Amo tokens
|
||||||
amoList, err := h.dal.Amo.GetListByPenaID(r.Context(), amoData.PenaID)
|
// amoList, err := h.dal.Amo.GetListByPenaID(r.Context(), amoData.PenaID)
|
||||||
|
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
// h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
|
||||||
for _, amo := range amoList {
|
// for _, amo := range amoList {
|
||||||
if amo.Token().Valid() {
|
// if amo.Token().Valid() {
|
||||||
continue
|
// continue
|
||||||
|
// }
|
||||||
|
|
||||||
|
// var token *oauth2.Token
|
||||||
|
// token, err = h.Amo.RefreshToken(r.Context(), amo.Token(), amo.Referer)
|
||||||
|
|
||||||
|
// if err == nil {
|
||||||
|
// _, err = h.dal.Amo.InsertOrUpdate(r.Context(), &model.Amo{
|
||||||
|
// ID: amo.ID,
|
||||||
|
// AccountID: amo.AccountID,
|
||||||
|
// AccessToken: token.AccessToken,
|
||||||
|
// RefreshToken: token.RefreshToken,
|
||||||
|
// ExpiresIn: token.Expiry,
|
||||||
|
// TokenType: token.TokenType,
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if err != nil {
|
||||||
|
// h.logger.Error("ErrorCheckAmoTokens", zap.Error(err))
|
||||||
|
// invalidTokens["amo"] = amo
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
if !amoData.Token().Valid() {
|
||||||
|
token, err := h.Amo.RefreshToken(r.Context(), amoData.Token(), amoData.Referer)
|
||||||
|
if err != nil {
|
||||||
|
h.logger.Error("ErrorCheckAmoTokens", zap.Error(err))
|
||||||
|
invalidTokens["amo"] = amoData
|
||||||
}
|
}
|
||||||
|
|
||||||
var token *oauth2.Token
|
|
||||||
token, err = h.Amo.RefreshToken(r.Context(), amo.Token(), amo.Referer)
|
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
_, err = h.dal.Amo.InsertOrUpdate(r.Context(), &model.Amo{
|
_, err = h.dal.Amo.InsertOrUpdate(r.Context(), &model.Amo{
|
||||||
ID: amo.ID,
|
ID: amoData.ID,
|
||||||
AccountID: amo.AccountID,
|
AccountID: amoData.AccountID,
|
||||||
AccessToken: token.AccessToken,
|
AccessToken: token.AccessToken,
|
||||||
RefreshToken: token.RefreshToken,
|
RefreshToken: token.RefreshToken,
|
||||||
ExpiresIn: token.Expiry,
|
ExpiresIn: token.Expiry,
|
||||||
TokenType: token.TokenType,
|
TokenType: token.TokenType,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
h.logger.Error("ErrorCheckAmoTokens", zap.Error(err))
|
|
||||||
invalidTokens["amo"] = amo
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resp := RespAmoState{
|
resp := RespAmoState{
|
||||||
|
@ -107,6 +107,7 @@ func (h *Handlers) GDiskSaveToken(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// Insert/Update token in DB
|
// Insert/Update token in DB
|
||||||
_, err = h.dal.GDisk.InsertOrUpdate(r.Context(), &model.GDisk{
|
_, err = h.dal.GDisk.InsertOrUpdate(r.Context(), &model.GDisk{
|
||||||
|
AmoID: state.AmoID,
|
||||||
PenaID: state.PenaID,
|
PenaID: state.PenaID,
|
||||||
Name: fmt.Sprintf("Google Disk (%v)", gUser.EmailAddress),
|
Name: fmt.Sprintf("Google Disk (%v)", gUser.EmailAddress),
|
||||||
DisplayName: gUser.DisplayName,
|
DisplayName: gUser.DisplayName,
|
||||||
@ -314,7 +315,7 @@ func (h *Handlers) GDiskGetList(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
gdiskInfo, err := h.dal.GDisk.GetListByPenaID(r.Context(), amoData.PenaID)
|
gdiskInfo, err := h.dal.GDisk.GetListByAmoID(r.Context(), amoData.ID)
|
||||||
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) GeneratorByData(w http.ResponseWriter, r *http.Request) {
|
|||||||
name = request.Name
|
name = request.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
exportURL, err := h.generate(r, file, name, storageID, storageType, amoData.PenaID, history, request.Data)
|
exportURL, err := h.generate(r, file, name, storageID, storageType, amoData.ID, history, request.Data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
history.AddError(err)
|
history.AddError(err)
|
||||||
h.sendResponse(w, http.StatusInternalServerError, err)
|
h.sendResponse(w, http.StatusInternalServerError, err)
|
||||||
@ -322,7 +322,7 @@ func (h *Handlers) GeneratorByAmoWebhook(w http.ResponseWriter, r *http.Request)
|
|||||||
task := &model.WorkerTask{
|
task := &model.WorkerTask{
|
||||||
PenaID: amoData.PenaID,
|
PenaID: amoData.PenaID,
|
||||||
AmoID: amoData.ID,
|
AmoID: amoData.ID,
|
||||||
AmoUserID: 0,
|
AmoUserID: middleware.GetAmoUserID(r),
|
||||||
Status: model.WorkerTaskStatusNew,
|
Status: model.WorkerTaskStatusNew,
|
||||||
LeadID: convertedLeadID,
|
LeadID: convertedLeadID,
|
||||||
TemplateID: templateID,
|
TemplateID: templateID,
|
||||||
@ -353,8 +353,8 @@ func (h *Handlers) GeneratorByAmoWebhook(w http.ResponseWriter, r *http.Request)
|
|||||||
|
|
||||||
// generate - локальная функция, для генерации файла, возвращает ссылку для скачивания сгенерированного файла.
|
// generate - локальная функция, для генерации файла, возвращает ссылку для скачивания сгенерированного файла.
|
||||||
func (h *Handlers) generate(r *http.Request, file, name, storageID, storageType,
|
func (h *Handlers) generate(r *http.Request, file, name, storageID, storageType,
|
||||||
penaID string, history *model.History, data any) (string, error) {
|
amoID string, history *model.History, data any) (string, error) {
|
||||||
amoData, err := h.dal.Amo.GetByPenaID(r.Context(), penaID)
|
amoData, err := h.dal.Amo.GetByID(r.Context(), amoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@ -452,7 +452,7 @@ func (h *Handlers) generate(r *http.Request, file, name, storageID, storageType,
|
|||||||
exportURL = fmt.Sprintf("https://%v/%v", h.opts.Domain, generatedFile)
|
exportURL = fmt.Sprintf("https://%v/%v", h.opts.Domain, generatedFile)
|
||||||
|
|
||||||
case "penadisk":
|
case "penadisk":
|
||||||
client := penadisk.NewClient(penaID)
|
client := penadisk.NewClient(amoID)
|
||||||
|
|
||||||
saveFolder := "templategen/saved"
|
saveFolder := "templategen/saved"
|
||||||
history.Target.File, exportURL, err = templategen.PenaDiskGenerateDocBytes(r.Context(), file, name, saveFolder,
|
history.Target.File, exportURL, err = templategen.PenaDiskGenerateDocBytes(r.Context(), file, name, saveFolder,
|
||||||
|
@ -69,7 +69,7 @@ func (h *Handlers) GetHistoryListByFilter(w http.ResponseWriter, r *http.Request
|
|||||||
request.AmoUserID = amoUserID
|
request.AmoUserID = amoUserID
|
||||||
}
|
}
|
||||||
|
|
||||||
request.AmoID = amoData.AccountID
|
request.AmoID = amoData.ID
|
||||||
|
|
||||||
result, err := h.dal.History.GetByFilter(r.Context(), &request)
|
result, err := h.dal.History.GetByFilter(r.Context(), &request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -33,6 +33,7 @@ func (h *Handlers) PenaDiskSetSettings(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
err = h.dal.PenaDisk.Update(r.Context(), &model.PenaDisk{
|
err = h.dal.PenaDisk.Update(r.Context(), &model.PenaDisk{
|
||||||
PenaID: amoData.PenaID,
|
PenaID: amoData.PenaID,
|
||||||
|
AmoID: amoData.ID,
|
||||||
Name: request.Name,
|
Name: request.Name,
|
||||||
TemplateFolder: request.TemplateFolder,
|
TemplateFolder: request.TemplateFolder,
|
||||||
SaveFolder: request.SaveFolder})
|
SaveFolder: request.SaveFolder})
|
||||||
@ -48,7 +49,7 @@ func (h *Handlers) PenaDiskSetSettings(w http.ResponseWriter, r *http.Request) {
|
|||||||
type ReqPenaDiskGetResources struct {
|
type ReqPenaDiskGetResources struct {
|
||||||
Path string `json:"path"`
|
Path string `json:"path"`
|
||||||
Recursive bool `json:"recursive"`
|
Recursive bool `json:"recursive"`
|
||||||
WIthVersions bool `json:"w_ith_versions"`
|
WithVersions bool `json:"with_versions"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handlers) PenaDiskGetResources(w http.ResponseWriter, r *http.Request) {
|
func (h *Handlers) PenaDiskGetResources(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -67,9 +68,9 @@ func (h *Handlers) PenaDiskGetResources(w http.ResponseWriter, r *http.Request)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
client := penadisk.NewClient(amoData.PenaID)
|
client := penadisk.NewClient(amoData.ID)
|
||||||
|
|
||||||
resource, err := client.GetResources(r.Context(), request.Path, request.Recursive, request.WIthVersions)
|
resource, err := client.GetResources(r.Context(), request.Path, request.Recursive, request.WithVersions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
@ -101,7 +102,7 @@ func (h *Handlers) PenaDiskPutResources(w http.ResponseWriter, r *http.Request)
|
|||||||
h.reportError(w, http.StatusBadRequest, errors.New("path required"))
|
h.reportError(w, http.StatusBadRequest, errors.New("path required"))
|
||||||
}
|
}
|
||||||
|
|
||||||
client := penadisk.NewClient(amoData.PenaID)
|
client := penadisk.NewClient(amoData.ID)
|
||||||
|
|
||||||
err = client.PutResources(r.Context(), request.Path)
|
err = client.PutResources(r.Context(), request.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -137,7 +138,7 @@ func (h *Handlers) PenaDiskDeleteResources(w http.ResponseWriter, r *http.Reques
|
|||||||
h.reportError(w, http.StatusBadRequest, errors.New("path required"))
|
h.reportError(w, http.StatusBadRequest, errors.New("path required"))
|
||||||
}
|
}
|
||||||
|
|
||||||
client := penadisk.NewClient(amoData.PenaID)
|
client := penadisk.NewClient(amoData.ID)
|
||||||
|
|
||||||
err = client.DeleteResources(r.Context(), request.Path, request.Permanently)
|
err = client.DeleteResources(r.Context(), request.Path, request.Permanently)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -194,7 +195,7 @@ func (h *Handlers) PenaDiskUploadResources(w http.ResponseWriter, r *http.Reques
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Upload file to the storage
|
// Upload file to the storage
|
||||||
client := penadisk.NewClient(pd.PenaID)
|
client := penadisk.NewClient(pd.AmoID)
|
||||||
|
|
||||||
_, _, err = client.UploadResources(r.Context(), request.Path, fileHeader.Filename, false, fileData)
|
_, _, err = client.UploadResources(r.Context(), request.Path, fileHeader.Filename, false, fileData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -229,7 +230,7 @@ func (h *Handlers) PenaDiskDownloadLink(w http.ResponseWriter, r *http.Request)
|
|||||||
h.reportError(w, http.StatusBadRequest, errors.New("path required"))
|
h.reportError(w, http.StatusBadRequest, errors.New("path required"))
|
||||||
}
|
}
|
||||||
|
|
||||||
client := penadisk.NewClient(amoData.PenaID)
|
client := penadisk.NewClient(amoData.ID)
|
||||||
|
|
||||||
href, err := client.GetPublicDownloadURL(r.Context(), request.Path)
|
href, err := client.GetPublicDownloadURL(r.Context(), request.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -58,6 +58,7 @@ func (h *Handlers) TemplateSet(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
update := &model.Template{
|
update := &model.Template{
|
||||||
ID: request.TemplateID,
|
ID: request.TemplateID,
|
||||||
|
AmoID: amoData.ID,
|
||||||
PenaID: amoData.PenaID,
|
PenaID: amoData.PenaID,
|
||||||
LeadID: request.LeadID,
|
LeadID: request.LeadID,
|
||||||
Name: request.Name,
|
Name: request.Name,
|
||||||
@ -93,7 +94,7 @@ func (h *Handlers) TemplateGetListByUser(w http.ResponseWriter, r *http.Request)
|
|||||||
h.reportError(w, http.StatusUnauthorized, ErrorUnauthorized)
|
h.reportError(w, http.StatusUnauthorized, ErrorUnauthorized)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := h.dal.Template.GetListByPenaID(r.Context(), amoData.PenaID)
|
result, err := h.dal.Template.GetListByAmoID(r.Context(), amoData.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
@ -123,7 +124,7 @@ func (h *Handlers) TemplateGetListByGroup(w http.ResponseWriter, r *http.Request
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := h.dal.Template.GetListByGroupID(r.Context(), request.GroupID, amoData.PenaID)
|
resp, err := h.dal.Template.GetListByGroupID(r.Context(), request.GroupID, amoData.ID, amoData.PenaID)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
@ -180,6 +181,7 @@ func (h *Handlers) TemplateGet(w http.ResponseWriter, r *http.Request) {
|
|||||||
if template == nil {
|
if template == nil {
|
||||||
var templateID string
|
var templateID string
|
||||||
templateID, err = h.dal.Template.Insert(r.Context(), &model.Template{
|
templateID, err = h.dal.Template.Insert(r.Context(), &model.Template{
|
||||||
|
AmoID: amoData.ID,
|
||||||
PenaID: amoData.PenaID,
|
PenaID: amoData.PenaID,
|
||||||
LeadID: request.LeadID,
|
LeadID: request.LeadID,
|
||||||
})
|
})
|
||||||
@ -223,6 +225,7 @@ func (h *Handlers) TemplateUpdate(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
record := &model.Template{
|
record := &model.Template{
|
||||||
ID: request.ID,
|
ID: request.ID,
|
||||||
|
AmoID: amoData.ID,
|
||||||
PenaID: amoData.PenaID,
|
PenaID: amoData.PenaID,
|
||||||
Name: request.Name,
|
Name: request.Name,
|
||||||
File: request.File,
|
File: request.File,
|
||||||
|
@ -39,7 +39,8 @@ func (h *Handlers) TemplateGroupCreate(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
groupID, err := h.dal.TemplateGroup.Insert(r.Context(), &model.TemplateGroup{
|
groupID, err := h.dal.TemplateGroup.Insert(r.Context(), &model.TemplateGroup{
|
||||||
PenaID: amoData.AccountID,
|
AmoID: amoData.ID,
|
||||||
|
PenaID: amoData.PenaID,
|
||||||
Name: request.Name,
|
Name: request.Name,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -77,7 +78,7 @@ func (h *Handlers) TemplateGroupGetList(w http.ResponseWriter, r *http.Request)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := h.dal.TemplateGroup.GetListByPenaID(r.Context(), amoData.AccountID)
|
resp, err := h.dal.TemplateGroup.GetListByAmoID(r.Context(), amoData.ID)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
@ -120,7 +121,8 @@ func (h *Handlers) TemplateGroupEdit(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
err = h.dal.TemplateGroup.Update(r.Context(), &model.TemplateGroup{
|
err = h.dal.TemplateGroup.Update(r.Context(), &model.TemplateGroup{
|
||||||
ID: request.ID,
|
ID: request.ID,
|
||||||
PenaID: amoData.AccountID,
|
AmoID: amoData.ID,
|
||||||
|
PenaID: amoData.PenaID,
|
||||||
Name: request.Name,
|
Name: request.Name,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -206,7 +208,7 @@ func (h *Handlers) TemplateGroupPut(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = h.dal.Template.PushGroup(r.Context(), request.TemplateID, request.GroupID, amoData.AccountID)
|
err = h.dal.Template.PushGroup(r.Context(), request.TemplateID, request.GroupID, amoData.ID, amoData.PenaID)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
@ -247,7 +249,7 @@ func (h *Handlers) TemplateGroupRemove(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = h.dal.Template.PullGroup(r.Context(), request.TemplateID, request.GroupID, amoData.AccountID)
|
err = h.dal.Template.PullGroup(r.Context(), request.TemplateID, request.GroupID, amoData.ID, amoData.PenaID)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
|
@ -93,6 +93,7 @@ func (h *Handlers) YaDiskSaveToken(w http.ResponseWriter, r *http.Request) {
|
|||||||
// Insert/Update token in DB
|
// Insert/Update token in DB
|
||||||
_, err = h.dal.YaDisk.InsertOrUpdate(r.Context(), &model.YaDisk{
|
_, err = h.dal.YaDisk.InsertOrUpdate(r.Context(), &model.YaDisk{
|
||||||
PenaID: state.PenaID,
|
PenaID: state.PenaID,
|
||||||
|
AmoID: state.AmoID,
|
||||||
Name: fmt.Sprintf("Yandex Disk (%v)", yaUser.Login),
|
Name: fmt.Sprintf("Yandex Disk (%v)", yaUser.Login),
|
||||||
UID: yaUser.UID,
|
UID: yaUser.UID,
|
||||||
Login: yaUser.Login,
|
Login: yaUser.Login,
|
||||||
@ -179,7 +180,7 @@ func (h *Handlers) YaDiskGetList(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
yadiskInfo, err := h.dal.YaDisk.GetListByPenaID(r.Context(), amoData.PenaID)
|
yadiskInfo, err := h.dal.YaDisk.GetListByAmoID(r.Context(), amoData.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.reportError(w, http.StatusInternalServerError, err)
|
h.reportError(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
|
@ -16,6 +16,7 @@ func SetToken(token string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type StateToken struct {
|
type StateToken struct {
|
||||||
|
AmoID string `json:"amo_id"`
|
||||||
PenaID string `json:"pena_id"`
|
PenaID string `json:"pena_id"`
|
||||||
Service string `json:"service"` // yandex, google, etc
|
Service string `json:"service"` // yandex, google, etc
|
||||||
RedirectURL string `json:"redirect_url"`
|
RedirectURL string `json:"redirect_url"`
|
||||||
|
@ -54,8 +54,9 @@ func NewClientApp(clientID, clientSecret, redirectURI, serviceURL string) *Clien
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ca *ClientApp) GenerateOAuthURL(penaID, redirectURL string) (string, error) {
|
func (ca *ClientApp) GenerateOAuthURL(amoID, penaID, redirectURL string) (string, error) {
|
||||||
state, err := tools.EncryptTokenAES(tools.StateToken{
|
state, err := tools.EncryptTokenAES(tools.StateToken{
|
||||||
|
AmoID: amoID,
|
||||||
PenaID: penaID,
|
PenaID: penaID,
|
||||||
Service: "yandex",
|
Service: "yandex",
|
||||||
RedirectURL: redirectURL,
|
RedirectURL: redirectURL,
|
||||||
|
Loading…
Reference in New Issue
Block a user