39 lines
888 B
Go
39 lines
888 B
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package policies
|
|
|
|
import (
|
|
"strings"
|
|
|
|
cb "github.com/hyperledger/fabric-protos-go/common"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func ImplicitMetaFromString(input string) (*cb.ImplicitMetaPolicy, error) {
|
|
args := strings.Split(input, " ")
|
|
if len(args) != 2 {
|
|
return nil, errors.Errorf("expected two space separated tokens, but got %d", len(args))
|
|
}
|
|
|
|
res := &cb.ImplicitMetaPolicy{
|
|
SubPolicy: args[1],
|
|
}
|
|
|
|
switch args[0] {
|
|
case cb.ImplicitMetaPolicy_ANY.String():
|
|
res.Rule = cb.ImplicitMetaPolicy_ANY
|
|
case cb.ImplicitMetaPolicy_ALL.String():
|
|
res.Rule = cb.ImplicitMetaPolicy_ALL
|
|
case cb.ImplicitMetaPolicy_MAJORITY.String():
|
|
res.Rule = cb.ImplicitMetaPolicy_MAJORITY
|
|
default:
|
|
return nil, errors.Errorf("unknown rule type '%s', expected ALL, ANY, or MAJORITY", args[0])
|
|
}
|
|
|
|
return res, nil
|
|
}
|