[#607] *: Do not use deprecated elements of code

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2021-06-23 15:27:00 +03:00 committed by Leonard Lyubich
parent cbe20a2bac
commit 43eff09944
11 changed files with 42 additions and 34 deletions

View file

@ -2,6 +2,7 @@ package network
import (
"errors"
"fmt"
"sort"
"github.com/nspcc-dev/neofs-api-go/pkg/netmap"
@ -78,13 +79,12 @@ type MultiAddressIterator interface {
// The result is sorted with sort.Sort.
//
// Returns an error in the absence of addresses or if any of the addresses are incorrect.
func (x *AddressGroup) FromIterator(iter MultiAddressIterator) (err error) {
func (x *AddressGroup) FromIterator(iter MultiAddressIterator) error {
as := *x
addrNum := iter.NumberOfAddresses()
if addrNum <= 0 {
err = errors.New("missing network addresses")
return
return errors.New("missing network addresses")
}
if cap(as) >= addrNum {
@ -93,17 +93,9 @@ func (x *AddressGroup) FromIterator(iter MultiAddressIterator) (err error) {
as = make(AddressGroup, 0, addrNum)
}
iter.IterateAddresses(func(s string) bool {
var a Address
err = a.FromString(s)
fail := err != nil
if !fail {
as = append(as, a)
}
return fail
err := iterateParsedAddresses(iter, func(a Address) error {
as = append(as, a)
return nil
})
if err == nil {
@ -111,6 +103,26 @@ func (x *AddressGroup) FromIterator(iter MultiAddressIterator) (err error) {
*x = as
}
return err
}
// iterateParsedAddresses parses each address from MultiAddressIterator and passes it to f
// until 1st parsing failure or f's error.
func iterateParsedAddresses(iter MultiAddressIterator, f func(s Address) error) (err error) {
iter.IterateAddresses(func(s string) bool {
var a Address
err = a.FromString(s)
if err != nil {
err = fmt.Errorf("could not parse address from string: %w", err)
return true
}
err = f(a)
return err != nil
})
return
}

View file

@ -2,7 +2,6 @@ package network
import (
"errors"
"fmt"
"github.com/nspcc-dev/neofs-api-go/pkg/netmap"
)
@ -47,16 +46,7 @@ var (
// 3. tls(optional, may be absent)
//
func VerifyMultiAddress(ni *netmap.NodeInfo) error {
// check if it can be parsed to network.Address
var netAddr Address
err := netAddr.FromString(ni.Address())
if err != nil {
return fmt.Errorf("could not parse multiaddr from NodeInfo: %w", err)
}
// check amount of protocols and its order
return checkProtocols(netAddr)
return iterateParsedAddresses(ni, checkProtocols)
}
func checkProtocols(a Address) error {

View file

@ -58,7 +58,7 @@ func TestVerifyMultiAddress_Order(t *testing.T) {
func constructNodeInfo(address string) *netmap.NodeInfo {
ni := new(netmap.NodeInfo)
ni.SetAddress(address)
ni.SetAddresses(address)
return ni
}