From d054e4182eebbb20a4bace44c6c7b4d768b9ddff Mon Sep 17 00:00:00 2001 From: Luca Moser <moser.luca@gmail.com> Date: Wed, 15 Jan 2020 14:23:43 +0100 Subject: [PATCH] Set new txs as modified, adjusts webapi endpoint methods (#120) --- client/lib.go | 32 ++++++++++++----------- plugins/tangle/solidifier.go | 4 ++- plugins/webapi/findTransactions/plugin.go | 3 +-- plugins/webapi/getTransactions/plugin.go | 2 +- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/client/lib.go b/client/lib.go index fbe735e7..d60200d6 100644 --- a/client/lib.go +++ b/client/lib.go @@ -40,13 +40,16 @@ const ( contentTypeJSON = "application/json" ) -func NewGoShimmerAPI(node string) *GoShimmerAPI { +func NewGoShimmerAPI(node string, httpClient ...http.Client) *GoShimmerAPI { + if len(httpClient) > 0 { + return &GoShimmerAPI{node: node, httpClient: httpClient[0]} + } return &GoShimmerAPI{node: node} } type GoShimmerAPI struct { - http.Client - node string + httpClient http.Client + node string } type errorresponse struct { @@ -60,7 +63,7 @@ func interpretBody(res *http.Response, decodeTo interface{}) error { } defer res.Body.Close() - if res.StatusCode == http.StatusOK { + if res.StatusCode == http.StatusOK || res.StatusCode == http.StatusCreated { return json.Unmarshal(resBody, decodeTo) } @@ -80,20 +83,17 @@ func interpretBody(res *http.Response, decodeTo interface{}) error { return errors.Wrap(ErrUnknownError, errRes.Error) } -func (api *GoShimmerAPI) BroadcastData(targetAddress trinary.Trytes, data trinary.Trytes) (trinary.Hash, error) { +func (api *GoShimmerAPI) BroadcastData(targetAddress trinary.Trytes, data string) (trinary.Hash, error) { if !guards.IsHash(targetAddress) { return "", errors.Wrapf(consts.ErrInvalidHash, "invalid address: %s", targetAddress) } - if !guards.IsTrytes(data) { - return "", errors.Wrapf(consts.ErrInvalidTrytes, "invalid trytes: %s", data) - } reqBytes, err := json.Marshal(&webapi_broadcastData.Request{Address: targetAddress, Data: data}) if err != nil { return "", err } - res, err := api.Post(fmt.Sprintf("%s/%s", api.node, routeBroadcastData), contentTypeJSON, bytes.NewReader(reqBytes)) + res, err := api.httpClient.Post(fmt.Sprintf("%s/%s", api.node, routeBroadcastData), contentTypeJSON, bytes.NewReader(reqBytes)) if err != nil { return "", err } @@ -118,7 +118,7 @@ func (api *GoShimmerAPI) GetTrytes(txHashes trinary.Hashes) ([]trinary.Trytes, e return nil, err } - res, err := api.Post(fmt.Sprintf("%s/%s", api.node, routeGetTrytes), contentTypeJSON, bytes.NewReader(reqBytes)) + res, err := api.httpClient.Post(fmt.Sprintf("%s/%s", api.node, routeGetTrytes), contentTypeJSON, bytes.NewReader(reqBytes)) if err != nil { return nil, err } @@ -143,7 +143,7 @@ func (api *GoShimmerAPI) GetTransactions(txHashes trinary.Hashes) ([]webapi_getT return nil, err } - res, err := api.Post(fmt.Sprintf("%s/%s", api.node, routeGetTransactions), contentTypeJSON, bytes.NewReader(reqBytes)) + res, err := api.httpClient.Post(fmt.Sprintf("%s/%s", api.node, routeGetTransactions), contentTypeJSON, bytes.NewReader(reqBytes)) if err != nil { return nil, err } @@ -168,7 +168,7 @@ func (api *GoShimmerAPI) FindTransactions(query *webapi_findTransactions.Request return nil, err } - res, err := api.Post(fmt.Sprintf("%s/%s", api.node, routeFindTransactions), contentTypeJSON, bytes.NewReader(reqBytes)) + res, err := api.httpClient.Post(fmt.Sprintf("%s/%s", api.node, routeFindTransactions), contentTypeJSON, bytes.NewReader(reqBytes)) if err != nil { return nil, err } @@ -181,8 +181,9 @@ func (api *GoShimmerAPI) FindTransactions(query *webapi_findTransactions.Request return resObj.Transactions, nil } + func (api *GoShimmerAPI) GetNeighbors() (*webapi_getNeighbors.Response, error) { - res, err := api.Get(fmt.Sprintf("%s/%s", api.node, routeGetNeighbors)) + res, err := api.httpClient.Get(fmt.Sprintf("%s/%s", api.node, routeGetNeighbors)) if err != nil { return nil, err } @@ -195,8 +196,9 @@ func (api *GoShimmerAPI) GetNeighbors() (*webapi_getNeighbors.Response, error) { return resObj, nil } + func (api *GoShimmerAPI) GetTips() (*webapi_gtta.Response, error) { - res, err := api.Get(fmt.Sprintf("%s/%s", api.node, routeGetTransactionsToApprove)) + res, err := api.httpClient.Get(fmt.Sprintf("%s/%s", api.node, routeGetTransactionsToApprove)) if err != nil { return nil, err } @@ -210,7 +212,7 @@ func (api *GoShimmerAPI) GetTips() (*webapi_gtta.Response, error) { } func (api *GoShimmerAPI) ToggleSpammer(enable bool) (*webapi_spammer.Response, error) { - res, err := api.Get(fmt.Sprintf("%s/%s?cmd=%s", api.node, routeSpammer, func() string { + res, err := api.httpClient.Get(fmt.Sprintf("%s/%s?cmd=%s", api.node, routeSpammer, func() string { if enable { return "start" } diff --git a/plugins/tangle/solidifier.go b/plugins/tangle/solidifier.go index 2ab00159..1a90076b 100644 --- a/plugins/tangle/solidifier.go +++ b/plugins/tangle/solidifier.go @@ -181,7 +181,9 @@ func processMetaTransaction(metaTransaction *meta_transaction.MetaTransaction) { if tx, err := GetTransaction(metaTransaction.GetHash(), func(transactionHash trinary.Trytes) *value_transaction.ValueTransaction { newTransaction = true - return value_transaction.FromMetaTransaction(metaTransaction) + tx := value_transaction.FromMetaTransaction(metaTransaction) + tx.SetModified(true) + return tx }); err != nil { log.Errorf("Unable to load transaction %s: %s", metaTransaction.GetHash(), err.Error()) } else if newTransaction { diff --git a/plugins/webapi/findTransactions/plugin.go b/plugins/webapi/findTransactions/plugin.go index 9c4fc937..ff9b406a 100644 --- a/plugins/webapi/findTransactions/plugin.go +++ b/plugins/webapi/findTransactions/plugin.go @@ -16,7 +16,7 @@ var log *logger.Logger func configure(plugin *node.Plugin) { log = logger.NewLogger("API-findTransactions") - webapi.Server.GET("findTransactions", findTransactions) + webapi.Server.POST("findTransactions", findTransactions) } // findTransactions returns the array of transaction hashes for the @@ -24,7 +24,6 @@ func configure(plugin *node.Plugin) { // If a node doesn't have any transaction hash for a given address in its ledger, // the value at the index of that address is empty. func findTransactions(c echo.Context) error { - var request Request if err := c.Bind(&request); err != nil { diff --git a/plugins/webapi/getTransactions/plugin.go b/plugins/webapi/getTransactions/plugin.go index 448243f9..70c23132 100644 --- a/plugins/webapi/getTransactions/plugin.go +++ b/plugins/webapi/getTransactions/plugin.go @@ -16,7 +16,7 @@ var log *logger.Logger func configure(plugin *node.Plugin) { log = logger.NewLogger("API-getTransactions") - webapi.Server.GET("getTransactions", getTransactions) + webapi.Server.POST("getTransactions", getTransactions) } // getTransactions returns the array of transactions for the -- GitLab