From d2f7f00997e141965f4f6e6a832f3f2b4877119d Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Tue, 6 Apr 2021 16:56:19 +0300 Subject: [PATCH] oracle: change neofs URI scheme Strip '//', see neo-project/neo-modules#518. --- pkg/services/oracle/neofs/neofs.go | 12 ++++++------ pkg/services/oracle/neofs/neofs_test.go | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkg/services/oracle/neofs/neofs.go b/pkg/services/oracle/neofs/neofs.go index a767e5467..ee09ae424 100644 --- a/pkg/services/oracle/neofs/neofs.go +++ b/pkg/services/oracle/neofs/neofs.go @@ -47,7 +47,7 @@ var ( ) // Get returns neofs object from the provided url. -// URI scheme is "neofs:////". +// URI scheme is "neofs://". // If Command is not provided, full object is requested. func Get(ctx context.Context, priv *keys.PrivateKey, u *url.URL, addr string) ([]byte, error) { objectAddr, ps, err := parseNeoFSURL(u) @@ -80,25 +80,25 @@ func parseNeoFSURL(u *url.URL) (*object.Address, []string, error) { return nil, nil, ErrInvalidScheme } - ps := strings.Split(strings.TrimPrefix(u.Path, "/"), "/") - if len(ps) == 0 || ps[0] == "" { + ps := strings.Split(u.Opaque, "/") + if len(ps) < 2 { return nil, nil, ErrMissingObject } containerID := container.NewID() - if err := containerID.Parse(u.Hostname()); err != nil { + if err := containerID.Parse(ps[0]); err != nil { return nil, nil, fmt.Errorf("%w: %v", ErrInvalidContainer, err) } objectID := object.NewID() - if err := objectID.Parse(ps[0]); err != nil { + if err := objectID.Parse(ps[1]); err != nil { return nil, nil, fmt.Errorf("%w: %v", ErrInvalidObject, err) } objectAddr := object.NewAddress() objectAddr.SetContainerID(containerID) objectAddr.SetObjectID(objectID) - return objectAddr, ps[1:], nil + return objectAddr, ps[2:], nil } func getPayload(ctx context.Context, c *client.Client, addr *object.Address) ([]byte, error) { diff --git a/pkg/services/oracle/neofs/neofs_test.go b/pkg/services/oracle/neofs/neofs_test.go index 8f13cead5..6483875b9 100644 --- a/pkg/services/oracle/neofs/neofs_test.go +++ b/pkg/services/oracle/neofs/neofs_test.go @@ -44,7 +44,7 @@ func TestParseNeoFSURL(t *testing.T) { oid := object.NewID() require.NoError(t, oid.Parse(oStr)) - validPrefix := "neofs://" + cStr + "/" + oStr + validPrefix := "neofs:" + cStr + "/" + oStr objectAddr := object.NewAddress() objectAddr.SetContainerID(cid) objectAddr.SetObjectID(oid) @@ -57,10 +57,10 @@ func TestParseNeoFSURL(t *testing.T) { {validPrefix, nil, nil}, {validPrefix + "/", []string{""}, nil}, {validPrefix + "/range/1|2", []string{"range", "1|2"}, nil}, - {"neoffs://" + cStr + "/" + oStr, nil, ErrInvalidScheme}, - {"neofs://" + cStr, nil, ErrMissingObject}, - {"neofs://" + cStr + "ooo/" + oStr, nil, ErrInvalidContainer}, - {"neofs://" + cStr + "/ooo" + oStr, nil, ErrInvalidObject}, + {"neoffs:" + cStr + "/" + oStr, nil, ErrInvalidScheme}, + {"neofs:" + cStr, nil, ErrMissingObject}, + {"neofs:" + cStr + "ooo/" + oStr, nil, ErrInvalidContainer}, + {"neofs:" + cStr + "/ooo" + oStr, nil, ErrInvalidObject}, } for _, tc := range testCases { t.Run(tc.url, func(t *testing.T) {