mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-12-05 03:58:23 +00:00
rpc/server: unify boolean flag handling
Implement (*Param).GetBoolean() for converting parameter to bool value. It is used for verbosity flag and is false iff it is either zero number or empty sting.
This commit is contained in:
parent
44f93c7c69
commit
7b1a54c934
2 changed files with 19 additions and 24 deletions
|
@ -79,6 +79,21 @@ func (p *Param) GetString() (string, error) {
|
||||||
return str, nil
|
return str, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetBoolean returns boolean value of the parameter.
|
||||||
|
func (p *Param) GetBoolean() bool {
|
||||||
|
if p == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
switch p.Type {
|
||||||
|
case NumberT:
|
||||||
|
return p.Value != 0
|
||||||
|
case StringT:
|
||||||
|
return p.Value != ""
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// GetInt returns int value of te parameter.
|
// GetInt returns int value of te parameter.
|
||||||
func (p *Param) GetInt() (int, error) {
|
func (p *Param) GetInt() (int, error) {
|
||||||
if p == nil {
|
if p == nil {
|
||||||
|
|
|
@ -416,7 +416,7 @@ func (s *Server) getBlock(reqParams request.Params) (interface{}, *response.Erro
|
||||||
return nil, response.NewInternalServerError(fmt.Sprintf("Problem locating block with hash: %s", hash), err)
|
return nil, response.NewInternalServerError(fmt.Sprintf("Problem locating block with hash: %s", hash), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(reqParams) == 2 && reqParams[1].Value == 1 {
|
if reqParams.Value(1).GetBoolean() {
|
||||||
return result.NewBlock(block, s.chain), nil
|
return result.NewBlock(block, s.chain), nil
|
||||||
}
|
}
|
||||||
writer := io.NewBufBinWriter()
|
writer := io.NewBufBinWriter()
|
||||||
|
@ -717,26 +717,12 @@ func (s *Server) getrawtransaction(reqParams request.Params) (interface{}, *resp
|
||||||
} else if tx, height, err := s.chain.GetTransaction(txHash); err != nil {
|
} else if tx, height, err := s.chain.GetTransaction(txHash); err != nil {
|
||||||
err = errors.Wrapf(err, "Invalid transaction hash: %s", txHash)
|
err = errors.Wrapf(err, "Invalid transaction hash: %s", txHash)
|
||||||
return nil, response.NewRPCError("Unknown transaction", err.Error(), err)
|
return nil, response.NewRPCError("Unknown transaction", err.Error(), err)
|
||||||
} else if len(reqParams) >= 2 {
|
} else if reqParams.Value(1).GetBoolean() {
|
||||||
_header := s.chain.GetHeaderHash(int(height))
|
_header := s.chain.GetHeaderHash(int(height))
|
||||||
header, err := s.chain.GetHeader(_header)
|
header, err := s.chain.GetHeader(_header)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resultsErr = response.NewInvalidParamsError(err.Error(), err)
|
resultsErr = response.NewInvalidParamsError(err.Error(), err)
|
||||||
}
|
} else {
|
||||||
|
|
||||||
param1 := reqParams.Value(1)
|
|
||||||
if param1 == nil {
|
|
||||||
param1 = &request.Param{}
|
|
||||||
}
|
|
||||||
switch v := param1.Value.(type) {
|
|
||||||
|
|
||||||
case int, float64, bool, string:
|
|
||||||
if v == 0 || v == "0" || v == 0.0 || v == false || v == "false" {
|
|
||||||
results = hex.EncodeToString(tx.Bytes())
|
|
||||||
} else {
|
|
||||||
results = result.NewTransactionOutputRaw(tx, header, s.chain)
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
results = result.NewTransactionOutputRaw(tx, header, s.chain)
|
results = result.NewTransactionOutputRaw(tx, header, s.chain)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -863,18 +849,12 @@ func (s *Server) getBlockSysFee(reqParams request.Params) (interface{}, *respons
|
||||||
|
|
||||||
// getBlockHeader returns the corresponding block header information according to the specified script hash.
|
// getBlockHeader returns the corresponding block header information according to the specified script hash.
|
||||||
func (s *Server) getBlockHeader(reqParams request.Params) (interface{}, *response.Error) {
|
func (s *Server) getBlockHeader(reqParams request.Params) (interface{}, *response.Error) {
|
||||||
var verbose bool
|
|
||||||
|
|
||||||
hash, err := reqParams.ValueWithType(0, request.StringT).GetUint256()
|
hash, err := reqParams.ValueWithType(0, request.StringT).GetUint256()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, response.ErrInvalidParams
|
return nil, response.ErrInvalidParams
|
||||||
}
|
}
|
||||||
|
|
||||||
v, err := reqParams.ValueWithType(1, request.NumberT).GetInt()
|
verbose := reqParams.Value(1).GetBoolean()
|
||||||
if err == nil {
|
|
||||||
verbose = v != 0
|
|
||||||
}
|
|
||||||
|
|
||||||
h, err := s.chain.GetHeader(hash)
|
h, err := s.chain.GetHeader(hash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, response.NewRPCError("unknown block", "", nil)
|
return nil, response.NewRPCError("unknown block", "", nil)
|
||||||
|
|
Loading…
Reference in a new issue