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.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 // POST /get-transaction-feed
26 func (a *API) getTxFeed(ctx context.Context, in struct {
27 Alias string `json:"alias,omitempty"`
29 var tmpTxFeed interface{}
30 rawTxfeed, err := a.GetTxFeedByAlias(ctx, in.Alias)
32 return NewErrorResponse(err)
34 err = json.Unmarshal(rawTxfeed, &tmpTxFeed)
36 return NewErrorResponse(err)
38 data := map[string]interface{}{"txfeed": tmpTxFeed}
39 return NewSuccessResponse(data)
42 // POST /delete-transaction-feed
43 func (a *API) deleteTxFeed(ctx context.Context, in struct {
44 Alias string `json:"alias,omitempty"`
46 if err := a.txFeedTracker.Delete(ctx, in.Alias); err != nil {
47 return NewErrorResponse(err)
49 return NewSuccessResponse(nil)
52 // POST /update-transaction-feed
53 func (a *API) updateTxFeed(ctx context.Context, in struct {
54 Alias string `json:"alias"`
55 Filter string `json:"filter"`
57 if err := a.txFeedTracker.Delete(ctx, in.Alias); err != nil {
58 return NewErrorResponse(err)
60 if err := a.txFeedTracker.Create(ctx, in.Alias, in.Filter); err != nil {
61 log.WithField("error", err).Error("Update TxFeed Failed")
62 return NewErrorResponse(err)
64 return NewSuccessResponse(nil)
67 func (a *API) getTxFeeds() ([]txfeed.TxFeed, error) {
68 txFeed := txfeed.TxFeed{}
69 txFeeds := make([]txfeed.TxFeed, 0)
71 iter := a.txFeedTracker.DB.Iterator()
75 if err := json.Unmarshal(iter.Value(), &txFeed); err != nil {
78 txFeeds = append(txFeeds, txFeed)
84 // listTxFeeds is an http handler for listing txfeeds. It does not take a filter.
85 // POST /list-transaction-feeds
86 func (a *API) listTxFeeds(ctx context.Context) Response {
87 txFeeds, err := a.getTxFeeds()
89 return NewErrorResponse(err)
92 return NewSuccessResponse(txFeeds)
95 func (a *API) GetTxFeedByAlias(ctx context.Context, filter string) ([]byte, error) {
96 jf, err := json.Marshal(filter)
101 value := a.txFeedTracker.DB.Get(jf)
103 return nil, errors.New("No transaction feed")