From 356f7ecd965e9d4bcd737b5f9592d9df8ebb51b6 Mon Sep 17 00:00:00 2001 From: j-rafique Date: Wed, 17 Jul 2024 20:03:45 +0500 Subject: [PATCH] [PSL-1228] fix burn-txid field for single file registration --- walletnode/api/services/cascade.go | 20 ++++++++++++++++--- walletnode/api/services/multipart.go | 5 +++-- .../services/cascaderegister/service.go | 11 +++++----- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/walletnode/api/services/cascade.go b/walletnode/api/services/cascade.go index 949f68697..7a9ff6abe 100644 --- a/walletnode/api/services/cascade.go +++ b/walletnode/api/services/cascade.go @@ -131,13 +131,15 @@ func (service *CascadeAPIHandler) StartProcessing(ctx context.Context, p *cascad return nil, cascade.MakeInternalServerError(err) } - if p.BurnTxid == nil { - return nil, cascade.MakeInternalServerError(errors.New("BurnTxId must not be null for single related file")) + burnTxID, err := validateBurnTxID(p.BurnTxid, p.BurnTxids) + if err != nil { + log.WithContext(ctx).WithError(err).Error("error validating burn-txid from the payload") + return nil, cascade.MakeInternalServerError(err) } addTaskPayload := &common.AddTaskPayload{ FileID: p.FileID, - BurnTxid: p.BurnTxid, + BurnTxid: &burnTxID, AppPastelID: p.AppPastelID, MakePubliclyAccessible: p.MakePubliclyAccessible, Key: p.Key, @@ -233,6 +235,18 @@ func isDuplicateExists(burnTxIDs []string) bool { return false } +func validateBurnTxID(burnTxID *string, burnTxIDs []string) (string, error) { + if burnTxID != nil { + return *burnTxID, nil + } + + if len(burnTxIDs) > 0 { + return burnTxIDs[0], nil + } + + return "", errors.New("burn txid should either passed in burn_txid field or as an item in burn_txids array") +} + // RegisterTaskState - Registers a task state func (service *CascadeAPIHandler) RegisterTaskState(ctx context.Context, p *cascade.RegisterTaskStatePayload, stream cascade.RegisterTaskStateServerStream) (err error) { defer stream.Close() diff --git a/walletnode/api/services/multipart.go b/walletnode/api/services/multipart.go index efc3e9a10..bd60348b0 100644 --- a/walletnode/api/services/multipart.go +++ b/walletnode/api/services/multipart.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "encoding/hex" - "fmt" "io" "io/ioutil" "mime/multipart" @@ -214,7 +213,6 @@ func handleUploadFile(ctx context.Context, reader *multipart.Reader, baseDir str } filename = part.FileName() - fmt.Printf("Upload image %q\n", filename) outputFilePath = filepath.Join(dirPath, filename) outputFile, err := os.Create(outputFilePath) if err != nil { @@ -246,6 +244,9 @@ func handleUploadFile(ctx context.Context, reader *multipart.Reader, baseDir str // Use 7z to split the file err := fs.SplitFile(outputFilePath) if err != nil { + if strings.Contains(err.Error(), "no such file or directory") { + return "", "", 0, errors.New("seems like `p7zip-full` is not installed in your system, kindly proceed after installing the package") + } return "", "", 0, err } // Remove the original file after splitting diff --git a/walletnode/services/cascaderegister/service.go b/walletnode/services/cascaderegister/service.go index 8f81e5125..44bf4640e 100644 --- a/walletnode/services/cascaderegister/service.go +++ b/walletnode/services/cascaderegister/service.go @@ -632,7 +632,7 @@ func (service *CascadeRegistrationService) RegisterVolumeTicket(ctx context.Cont } if len(relatedFiles) <= 1 { - return "", errors.New("related files must be greater than 1") + return "", errors.New("related volumes must be greater than 1 for creating multi-volume ticket") } concludedCount := 0 @@ -867,10 +867,11 @@ func (service *CascadeRegistrationService) RestoreFile(ctx context.Context, p *c } } - // only set base file txId return by pastel register all else remains nil - _, err = service.RegisterVolumeTicket(ctx, p.BaseFileID) - if err != nil { - return nil, err + if len(volumes) > 1 { + _, err = service.RegisterVolumeTicket(ctx, p.BaseFileID) + if err != nil { + return nil, err + } } return &cascade.RestoreFile{