frostfs-node/pkg/services/object/rangehash/v2/util.go
Leonard Lyubich 39c17253be [#57] services/object: Combine common service parameters
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-10-02 11:25:36 +03:00

51 lines
1.3 KiB
Go

package rangehashsvc
import (
"github.com/nspcc-dev/neofs-api-go/pkg"
"github.com/nspcc-dev/neofs-api-go/pkg/object"
objectV2 "github.com/nspcc-dev/neofs-api-go/v2/object"
"github.com/nspcc-dev/neofs-api-go/v2/refs"
rangehashsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/rangehash"
"github.com/nspcc-dev/neofs-node/pkg/services/object/util"
"github.com/pkg/errors"
)
func toPrm(req *objectV2.GetRangeHashRequest) (*rangehashsvc.Prm, error) {
body := req.GetBody()
var typ pkg.ChecksumType
switch t := body.GetType(); t {
default:
return nil, errors.Errorf("unknown checksum type %v", t)
case refs.SHA256:
typ = pkg.ChecksumSHA256
case refs.TillichZemor:
typ = pkg.ChecksumTZ
}
rngsV2 := body.GetRanges()
rngs := make([]*object.Range, 0, len(rngsV2))
for i := range rngsV2 {
rngs = append(rngs, object.NewRangeFromV2(rngsV2[i]))
}
return new(rangehashsvc.Prm).
WithAddress(
object.NewAddressFromV2(body.GetAddress()),
).
WithChecksumType(typ).
FromRanges(rngs...).
WithCommonPrm(util.CommonPrmFromV2(req)), nil
}
func fromResponse(r *rangehashsvc.Response, typ refs.ChecksumType) *objectV2.GetRangeHashResponse {
body := new(objectV2.GetRangeHashResponseBody)
body.SetType(typ)
body.SetHashList(r.Hashes())
resp := new(objectV2.GetRangeHashResponse)
resp.SetBody(body)
return resp
}