AccountInfo string `json:"account_info"`
Tags map[string]interface{} `json:"tags"`
}) Response {
-
err := a.wallet.AccountMgr.UpdateTags(nil, updateTag.AccountInfo, updateTag.Tags)
if err != nil {
return NewErrorResponse(err)
"github.com/bytom/net/http/authn"
"github.com/bytom/net/http/httpjson"
"github.com/bytom/net/http/static"
+ "github.com/bytom/protocol"
"github.com/bytom/blockchain/wallet"
)
httpWriteTimeout = time.Hour
)
+//NewSuccessResponse success response
+func NewSuccessResponse(data interface{}) Response {
+ return Response{Status: SUCCESS, Data: data}
+}
+
+//NewErrorResponse error response
+func NewErrorResponse(err error) Response {
+ return Response{Status: FAIL, Msg: err.Error()}
+}
+
type waitHandler struct {
h http.Handler
wg sync.WaitGroup
type API struct {
bcr *BlockchainReactor
wallet *wallet.Wallet
+ chain *protocol.Chain
server *http.Server
handler http.Handler
}
var handler http.Handler = mux
if config.Auth.Disable == false {
- handler = AuthHandler(handler, a.bcr.wallet.Tokens)
+ handler = AuthHandler(handler, a.wallet.Tokens)
}
handler = RedirectHandler(handler)
api := &API{
bcr: bcr,
wallet: bcr.wallet,
+ chain: bcr.chain,
}
api.buildHandler()
api.initServer(config)
// buildHandler is in charge of all the rpc handling.
func (a *API) buildHandler() {
m := http.NewServeMux()
- if a.bcr.wallet != nil && a.bcr.wallet.AccountMgr != nil && a.bcr.wallet.AssetReg != nil {
+ if a.wallet != nil && a.wallet.AccountMgr != nil && a.wallet.AssetReg != nil {
m.Handle("/create-account", jsonHandler(a.createAccount))
m.Handle("/update-account-tags", jsonHandler(a.updateAccountTags))
m.Handle("/create-account-receiver", jsonHandler(a.createAccountReceiver))
- m.Handle("/list-accounts", jsonHandler(a.bcr.listAccounts))
+ m.Handle("/list-accounts", jsonHandler(a.listAccounts))
m.Handle("/list-addresses", jsonHandler(a.listAddresses))
m.Handle("/delete-account", jsonHandler(a.deleteAccount))
m.Handle("/validate-address", jsonHandler(a.validateAddress))
// return best block hash
func (a *API) getBestBlockHash() Response {
- blockHash := map[string]string{"blockHash": a.bcr.chain.BestBlockHash().String()}
+ blockHash := map[string]string{"blockHash": a.chain.BestBlockHash().String()}
return NewSuccessResponse(blockHash)
}
log.WithField("error", err).Error("Error occurs when transforming string hash to hash struct")
return NewErrorResponse(err)
}
- block, err := a.bcr.chain.GetBlockByHash(&hash)
+ block, err := a.chain.GetBlockByHash(&hash)
if err != nil {
log.WithField("error", err).Error("Fail to get block by hash")
return NewErrorResponse(err)
b32 := [32]byte{}
copy(b32[:], ins.BlockHash)
hash := bc.NewHash(b32)
- block, err = a.bcr.chain.GetBlockByHash(&hash)
+ block, err = a.chain.GetBlockByHash(&hash)
} else {
- block, err = a.bcr.chain.GetBlockByHeight(ins.BlockHeight)
+ block, err = a.chain.GetBlockByHeight(ins.BlockHeight)
}
if err != nil {
return NewErrorResponse(err)
}
blockHash := block.Hash()
- txStatus, err := a.bcr.chain.GetTransactionStatus(&blockHash)
+ txStatus, err := a.chain.GetTransactionStatus(&blockHash)
rawBlock, err := block.MarshalText()
if err != nil {
return NewErrorResponse(err)
return NewErrorResponse(err)
}
- legacyBlock, err := a.bcr.chain.GetBlockByHash(&hash)
+ legacyBlock, err := a.chain.GetBlockByHash(&hash)
if err != nil {
log.WithField("error", err).Error("Fail to get block by hash")
return NewErrorResponse(err)
// return block transactions count by height
func (a *API) getBlockTransactionsCountByHeight(height uint64) Response {
- legacyBlock, err := a.bcr.chain.GetBlockByHeight(height)
+ legacyBlock, err := a.chain.GetBlockByHeight(height)
if err != nil {
log.WithField("error", err).Error("Fail to get block by hash")
return NewErrorResponse(err)
// return current block count
func (a *API) getBlockCount() Response {
- blockHeight := map[string]uint64{"block_count": a.bcr.chain.Height()}
+ blockHeight := map[string]uint64{"block_count": a.chain.Height()}
return NewSuccessResponse(blockHeight)
}
)
// POST /list-accounts
-func (bcr *BlockchainReactor) listAccounts(ctx context.Context, filter struct {
+func (a *API) listAccounts(ctx context.Context, filter struct {
ID string `json:"id"`
}) Response {
- accounts, err := bcr.wallet.AccountMgr.ListAccounts(filter.ID)
+ accounts, err := a.wallet.AccountMgr.ListAccounts(filter.ID)
if err != nil {
log.Errorf("listAccounts: %v", err)
return NewErrorResponse(err)
Data interface{} `json:"data,omitempty"`
}
-//NewSuccessResponse success response
-func NewSuccessResponse(data interface{}) Response {
- return Response{Status: SUCCESS, Data: data}
-}
-
-//NewErrorResponse error response
-func NewErrorResponse(err error) Response {
- return Response{Status: FAIL, Msg: err.Error()}
-}
-
//BlockchainReactor handles long-term catchup syncing.
type BlockchainReactor struct {
p2p.BaseReactor
return nil, errors.Wrap(txbuilder.ErrMissingRawTx)
}
- if err := txbuilder.FinalizeTx(ctx, a.bcr.chain, tpl.Transaction); err != nil {
+ if err := txbuilder.FinalizeTx(ctx, a.chain, tpl.Transaction); err != nil {
return nil, errors.Wrapf(err, "tx %s", tpl.Transaction.ID.String())
}
func (a *API) submit(ctx context.Context, ins struct {
Tx types.Tx `json:"raw_transaction"`
}) Response {
- if err := txbuilder.FinalizeTx(ctx, a.bcr.chain, &ins.Tx); err != nil {
+ if err := txbuilder.FinalizeTx(ctx, a.chain, &ins.Tx); err != nil {
return NewErrorResponse(err)
}