OSDN Git Service

remove get-block-transactions-count-by-height
[bytom/bytom.git] / api / request.go
1 package api
2
3 import (
4         "context"
5         "strings"
6
7         "github.com/bytom/consensus"
8         "github.com/bytom/encoding/json"
9         "github.com/bytom/errors"
10         "github.com/bytom/protocol/bc/types"
11 )
12
13 var (
14         errBadActionType = errors.New("bad action type")
15         errBadAction     = errors.New("bad action object")
16 )
17
18 // BuildRequest is main struct when building transactions
19 type BuildRequest struct {
20         Tx        *types.TxData            `json:"base_transaction"`
21         Actions   []map[string]interface{} `json:"actions"`
22         TTL       json.Duration            `json:"ttl"`
23         TimeRange uint64                   `json:"time_range"`
24 }
25
26 func (a *API) filterAliases(ctx context.Context, br *BuildRequest) error {
27         for i, m := range br.Actions {
28                 id, _ := m["asset_id"].(string)
29                 alias, _ := m["asset_alias"].(string)
30                 alias = strings.ToUpper(alias)
31                 if id == "" && alias != "" {
32                         switch alias {
33                         case consensus.BTMAlias:
34                                 m["asset_id"] = consensus.BTMAssetID.String()
35                         default:
36                                 asset, err := a.wallet.AssetReg.FindByAlias(alias)
37                                 if err != nil {
38                                         return errors.WithDetailf(err, "invalid asset alias %s on action %d", alias, i)
39                                 }
40                                 m["asset_id"] = asset.AssetID.String()
41                         }
42                 }
43
44                 id, _ = m["account_id"].(string)
45                 alias, _ = m["account_alias"].(string)
46                 if id == "" && alias != "" {
47                         acc, err := a.wallet.AccountMgr.FindByAlias(ctx, alias)
48                         if err != nil {
49                                 return errors.WithDetailf(err, "invalid account alias %s on action %d", alias, i)
50                         }
51                         m["account_id"] = acc.ID
52                 }
53         }
54         return nil
55 }