7 log "github.com/sirupsen/logrus"
9 "github.com/bytom/blockchain/txfeed"
10 "github.com/bytom/errors"
13 // POST /create-txfeed
14 func (a *API) createTxFeed(ctx context.Context, in struct {
15 Alias string `json:"alias"`
16 Filter string `json:"filter"`
18 if err := a.bcr.txFeedTracker.Create(ctx, in.Alias, in.Filter); err != nil {
19 log.WithField("error", err).Error("Add TxFeed Failed")
20 return NewErrorResponse(err)
22 return NewSuccessResponse(nil)
25 func (bcr *BlockchainReactor) getTxFeedByAlias(ctx context.Context, filter string) ([]byte, error) {
26 jf, err := json.Marshal(filter)
31 value := bcr.txFeedTracker.DB.Get(jf)
33 return nil, errors.New("No transaction feed")
39 // POST /get-transaction-feed
40 func (a *API) getTxFeed(ctx context.Context, in struct {
41 Alias string `json:"alias,omitempty"`
43 var tmpTxFeed interface{}
44 rawTxfeed, err := a.bcr.getTxFeedByAlias(ctx, in.Alias)
46 return NewErrorResponse(err)
48 err = json.Unmarshal(rawTxfeed, &tmpTxFeed)
50 return NewErrorResponse(err)
52 data := map[string]interface{}{"txfeed": tmpTxFeed}
53 return NewSuccessResponse(data)
56 // POST /delete-transaction-feed
57 func (a *API) deleteTxFeed(ctx context.Context, in struct {
58 Alias string `json:"alias,omitempty"`
60 if err := a.bcr.txFeedTracker.Delete(ctx, in.Alias); err != nil {
61 return NewErrorResponse(err)
63 return NewSuccessResponse(nil)
66 // POST /update-transaction-feed
67 func (a *API) updateTxFeed(ctx context.Context, in struct {
68 Alias string `json:"alias"`
69 Filter string `json:"filter"`
71 if err := a.bcr.txFeedTracker.Delete(ctx, in.Alias); err != nil {
72 return NewErrorResponse(err)
74 if err := a.bcr.txFeedTracker.Create(ctx, in.Alias, in.Filter); err != nil {
75 log.WithField("error", err).Error("Update TxFeed Failed")
76 return NewErrorResponse(err)
78 return NewSuccessResponse(nil)
81 func (a *API) getTxFeeds() ([]txfeed.TxFeed, error) {
82 txFeed := txfeed.TxFeed{}
83 txFeeds := make([]txfeed.TxFeed, 0)
85 iter := a.bcr.txFeedTracker.DB.Iterator()
89 if err := json.Unmarshal(iter.Value(), &txFeed); err != nil {
92 txFeeds = append(txFeeds, txFeed)
98 // listTxFeeds is an http handler for listing txfeeds. It does not take a filter.
99 // POST /list-transaction-feeds
100 func (a *API) listTxFeeds(ctx context.Context) Response {
101 txFeeds, err := a.getTxFeeds()
103 return NewErrorResponse(err)
106 return NewSuccessResponse(txFeeds)