From 9d496d70a71378677153872d5c3036a6788b4906 Mon Sep 17 00:00:00 2001
From: Angira Kekteeva <kira@nspcc.ru>
Date: Thu, 20 May 2021 13:14:17 +0300
Subject: [PATCH] [#53] *: Remove external pkg/errors dependency

Replaced functions from pkg/errors by functions from errors, fixed not fully correct comment

Signed-off-by: Angira Kekteeva <kira@nspcc.ru>
---
 api/auth/center.go   |  8 ++++----
 api/layer/layer.go   | 17 +++++++++++------
 api/layer/object.go  |  2 +-
 authmate/authmate.go | 18 +++++++++---------
 cmd/authmate/main.go |  3 +--
 go.mod               |  1 -
 6 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/api/auth/center.go b/api/auth/center.go
index 2aca7b6c..0d0d35f4 100644
--- a/api/auth/center.go
+++ b/api/auth/center.go
@@ -2,6 +2,7 @@ package auth
 
 import (
 	"context"
+	"errors"
 	"fmt"
 	"io"
 	"net/http"
@@ -17,7 +18,6 @@ import (
 	"github.com/nspcc-dev/cdn-sdk/creds/s3"
 	"github.com/nspcc-dev/neofs-api-go/pkg/object"
 	"github.com/nspcc-dev/neofs-api-go/pkg/token"
-	"github.com/pkg/errors"
 	"go.uber.org/zap"
 )
 
@@ -85,14 +85,14 @@ func (c *center) Authenticate(r *http.Request) (*token.BearerToken, error) {
 
 	signatureDateTime, err := time.Parse("20060102T150405Z", r.Header.Get("X-Amz-Date"))
 	if err != nil {
-		return nil, errors.Wrap(err, "failed to parse x-amz-date header field")
+		return nil, fmt.Errorf("failed to parse x-amz-date header field: %w", err)
 	}
 
 	accessKeyID := fmt.Sprintf("%s/%s", sms1["access_key_id_cid"], sms1["access_key_id_oid"])
 
 	address := object.NewAddress()
 	if err = address.Parse(accessKeyID); err != nil {
-		return nil, errors.Wrapf(err, "could not parse AccessBox address: %s", accessKeyID)
+		return nil, fmt.Errorf("could not parse AccessBox address: %s : %w", accessKeyID, err)
 	}
 
 	tkn, err := c.cli.Get(r.Context(), address)
@@ -122,7 +122,7 @@ func (c *center) Authenticate(r *http.Request) (*token.BearerToken, error) {
 
 	// body not required
 	if _, err := signer.Sign(otherRequest, nil, sms1["service"], sms1["region"], signatureDateTime); err != nil {
-		return nil, errors.Wrap(err, "failed to sign temporary HTTP request")
+		return nil, fmt.Errorf("failed to sign temporary HTTP request: %w", err)
 	}
 
 	sms2 := c.reg.getSubmatches(otherRequest.Header.Get("Authorization"))
diff --git a/api/layer/layer.go b/api/layer/layer.go
index 4feafded..c32711a4 100644
--- a/api/layer/layer.go
+++ b/api/layer/layer.go
@@ -2,6 +2,8 @@ package layer
 
 import (
 	"context"
+	"errors"
+	"fmt"
 	"io"
 	"net/url"
 	"time"
@@ -13,7 +15,6 @@ import (
 	"github.com/nspcc-dev/neofs-api-go/pkg/object"
 	"github.com/nspcc-dev/neofs-api-go/pkg/owner"
 	"github.com/nspcc-dev/neofs-s3-gw/api"
-	"github.com/pkg/errors"
 	"go.uber.org/zap"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
@@ -116,7 +117,7 @@ func (n *layer) Get(ctx context.Context, address *object.Address) (*object.Objec
 	return n.cli.Object().Get(ctx, address)
 }
 
-// GetBucketInfo returns bucket name.
+// GetBucketInfo returns bucket info by name.
 func (n *layer) GetBucketInfo(ctx context.Context, name string) (*BucketInfo, error) {
 	name, err := url.QueryUnescape(name)
 	if err != nil {
@@ -227,9 +228,9 @@ func (n *layer) GetObject(ctx context.Context, p *GetObjectParams) error {
 	)
 
 	if bkt, err = n.GetBucketInfo(ctx, p.Bucket); err != nil {
-		return errors.Wrapf(err, "bucket = %s", p.Bucket)
+		return fmt.Errorf("couldn't find bucket: %s : %w", p.Bucket, err)
 	} else if oid, err = n.objectFindID(ctx, &findParams{cid: bkt.CID, val: p.Object}); err != nil {
-		return errors.Wrapf(err, "cid: %s, val: %s", bkt.CID, p.Object)
+		return fmt.Errorf("search of the object failed: cid: %s, val: %s : %w", bkt.CID, p.Object, err)
 	}
 
 	addr := object.NewAddress()
@@ -245,7 +246,11 @@ func (n *layer) GetObject(ctx context.Context, p *GetObjectParams) error {
 		length: p.Length,
 	})
 
-	return errors.Wrapf(err, "cid: %s", bkt.CID)
+	if err != nil {
+		return fmt.Errorf("couldn't get object, cid: %s : %w", bkt.CID, err)
+	}
+
+	return nil
 }
 
 func (n *layer) checkObject(ctx context.Context, cid *container.ID, filename string) error {
@@ -300,7 +305,7 @@ func (n *layer) PutObject(ctx context.Context, p *PutObjectParams) (*ObjectInfo,
 func (n *layer) CopyObject(ctx context.Context, p *CopyObjectParams) (*ObjectInfo, error) {
 	info, err := n.GetObjectInfo(ctx, p.SrcBucket, p.SrcObject)
 	if err != nil {
-		return nil, errors.Wrap(err, "get-object-info")
+		return nil, fmt.Errorf("couldn't get object info: %w", err)
 	}
 
 	pr, pw := io.Pipe()
diff --git a/api/layer/object.go b/api/layer/object.go
index 33713309..c1232420 100644
--- a/api/layer/object.go
+++ b/api/layer/object.go
@@ -2,6 +2,7 @@ package layer
 
 import (
 	"context"
+	"errors"
 	"io"
 	"net/url"
 	"strconv"
@@ -11,7 +12,6 @@ import (
 	"github.com/nspcc-dev/neofs-api-go/pkg/container"
 	"github.com/nspcc-dev/neofs-api-go/pkg/object"
 	"github.com/nspcc-dev/neofs-s3-gw/api"
-	"github.com/pkg/errors"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/authmate/authmate.go b/authmate/authmate.go
index b27dd45f..0f00cd32 100644
--- a/authmate/authmate.go
+++ b/authmate/authmate.go
@@ -4,6 +4,7 @@ import (
 	"context"
 	"crypto/ecdsa"
 	"encoding/json"
+	"fmt"
 	"io"
 	"math"
 	"strconv"
@@ -21,7 +22,6 @@ import (
 	"github.com/nspcc-dev/neofs-api-go/pkg/owner"
 	"github.com/nspcc-dev/neofs-api-go/pkg/token"
 	"github.com/nspcc-dev/neofs-node/pkg/policy"
-	"github.com/pkg/errors"
 	"go.uber.org/zap"
 )
 
@@ -78,7 +78,7 @@ func (a *Agent) checkContainer(ctx context.Context, cid *container.ID, friendlyN
 
 	pp, err := buildPlacementPolicy("")
 	if err != nil {
-		return nil, errors.Wrap(err, "failed to build placement policy")
+		return nil, fmt.Errorf("failed to build placement policy: %w", err)
 	}
 
 	cnr := container.New(
@@ -108,12 +108,12 @@ func (a *Agent) IssueSecret(ctx context.Context, w io.Writer, options *IssueSecr
 
 	table, err := buildEACLTable(cid, options.EACLRules)
 	if err != nil {
-		return errors.Wrap(err, "failed to build eacl table")
+		return fmt.Errorf("failed to build eacl table: %w", err)
 	}
 
 	tkn, err := buildBearerToken(options.NEOFSCreds.PrivateKey(), options.NEOFSCreds.Owner(), table)
 	if err != nil {
-		return errors.Wrap(err, "failed to build bearer token")
+		return fmt.Errorf("failed to build bearer token: %w", err)
 	}
 
 	a.log.Info("store bearer token into NeoFS",
@@ -124,12 +124,12 @@ func (a *Agent) IssueSecret(ctx context.Context, w io.Writer, options *IssueSecr
 		New(a.cli.Object(), options.OwnerPrivateKey).
 		Put(ctx, cid, tkn, options.GatesPublicKeys...)
 	if err != nil {
-		return errors.Wrap(err, "failed to put bearer token")
+		return fmt.Errorf("failed to put bearer token: %w", err)
 	}
 
 	secret, err := s3.SecretAccessKey(tkn)
 	if err != nil {
-		return errors.Wrap(err, "failed to get bearer token secret key")
+		return fmt.Errorf("failed to get bearer token secret key: %w", err)
 	}
 
 	ir := &issuingResult{
@@ -149,17 +149,17 @@ func (a *Agent) ObtainSecret(ctx context.Context, w io.Writer, options *ObtainSe
 	bearerCreds := bearer.New(a.cli.Object(), options.GatePrivateKey)
 	address := object.NewAddress()
 	if err := address.Parse(options.SecretAddress); err != nil {
-		return errors.Wrap(err, "failed to parse secret address")
+		return fmt.Errorf("failed to parse secret address: %w", err)
 	}
 
 	tkn, err := bearerCreds.Get(ctx, address)
 	if err != nil {
-		return errors.Wrap(err, "failed to get bearer token")
+		return fmt.Errorf("failed to get bearer token: %w", err)
 	}
 
 	secret, err := s3.SecretAccessKey(tkn)
 	if err != nil {
-		return errors.Wrap(err, "failed to get bearer token secret key")
+		return fmt.Errorf("failed to get bearer token secret key: %w", err)
 	}
 
 	or := &obtainingResult{
diff --git a/cmd/authmate/main.go b/cmd/authmate/main.go
index 8ec1ddb6..9adc3b7e 100644
--- a/cmd/authmate/main.go
+++ b/cmd/authmate/main.go
@@ -15,7 +15,6 @@ import (
 	"github.com/nspcc-dev/cdn-sdk/pool"
 	"github.com/nspcc-dev/neofs-api-go/pkg/container"
 	"github.com/nspcc-dev/neofs-s3-gw/authmate"
-	"github.com/pkg/errors"
 	"github.com/urfave/cli/v2"
 	"go.uber.org/zap"
 	"go.uber.org/zap/zapcore"
@@ -379,7 +378,7 @@ func createSDKClient(ctx context.Context, log *zap.Logger, neofsCreds neofs.Cred
 		pool.WithConnectTimeout(poolConnectTimeout),
 		pool.WithRequestTimeout(poolRequestTimeout))
 	if err != nil {
-		return nil, errors.Wrap(err, "failed to create connection pool")
+		return nil, fmt.Errorf("failed to create connection pool: %w", err)
 	}
 
 	log.Debug("prepare sdk client")
diff --git a/go.mod b/go.mod
index 2f13780e..d163875e 100644
--- a/go.mod
+++ b/go.mod
@@ -9,7 +9,6 @@ require (
 	github.com/nspcc-dev/cdn-sdk v0.3.4
 	github.com/nspcc-dev/neofs-api-go v1.23.0
 	github.com/nspcc-dev/neofs-node v1.22.0
-	github.com/pkg/errors v0.9.1
 	github.com/prometheus/client_golang v1.9.0
 	github.com/spf13/pflag v1.0.5
 	github.com/spf13/viper v1.7.1