Skip to content

Commit

Permalink
feat: Adding getCost to all the queries, Changed getNodeAccountIDsFor…
Browse files Browse the repository at this point in the history
…Transaction to getNodeAccountIdsForExecute
  • Loading branch information
andrix10 authored and janaakhterov committed Nov 4, 2020
1 parent 785aebf commit ff4d655
Show file tree
Hide file tree
Showing 18 changed files with 517 additions and 22 deletions.
37 changes: 36 additions & 1 deletion account_balance_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,41 @@ func (query *AccountBalanceQuery) GetContractID() ContractID {
}
}

func (query *AccountBalanceQuery) GetCost(client *Client) (Hbar, error) {
if client == nil || client.operator == nil {
return Hbar{}, errNoClientProvided
}

paymentTransaction, err := query_makePaymentTransaction(TransactionID{}, AccountID{}, client.operator, Hbar{})
if err != nil {
return Hbar{}, err
}

query.pbHeader.Payment = paymentTransaction
query.pbHeader.ResponseType = proto.ResponseType_COST_ANSWER
query.nodeIDs = client.getNodeAccountIdsForExecute()

resp, err := execute(
client,
request{
query: &query.Query,
},
query_shouldRetry,
costQuery_makeRequest,
costQuery_advanceRequest,
costQuery_getNodeAccountID,
accountInfoQuery_getMethod,
accountInfoQuery_mapResponseStatus,
query_mapResponse,
)

if err != nil {
return Hbar{}, err
}

return HbarFromTinybar(int64(resp.query.GetCryptoGetInfo().Header.Cost)), nil
}

func accountBalanceQuery_mapResponseStatus(_ request, response response) Status {
return Status(response.query.GetCryptogetAccountBalance().Header.NodeTransactionPrecheckCode)
}
Expand All @@ -95,7 +130,7 @@ func (query *AccountBalanceQuery) Execute(client *Client) (AccountBalance, error
}

if len(query.Query.GetNodeAccountIDs()) == 0 {
query.SetNodeAccountIDs(client.getNodeAccountIDsForTransaction())
query.SetNodeAccountIDs(client.getNodeAccountIdsForExecute())
}

resp, err := execute(
Expand Down
4 changes: 2 additions & 2 deletions account_info_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func (query *AccountInfoQuery) GetCost(client *Client) (Hbar, error) {

query.pbHeader.Payment = paymentTransaction
query.pbHeader.ResponseType = proto.ResponseType_COST_ANSWER
query.nodeIDs = client.getNodeAccountIDsForTransaction()
query.nodeIDs = client.getNodeAccountIdsForExecute()

resp, err := execute(
client,
Expand Down Expand Up @@ -106,7 +106,7 @@ func (query *AccountInfoQuery) Execute(client *Client) (AccountInfo, error) {
}

if len(query.Query.GetNodeAccountIDs()) == 0 {
query.SetNodeAccountIDs(client.getNodeAccountIDsForTransaction())
query.SetNodeAccountIDs(client.getNodeAccountIdsForExecute())
}

query.queryPayment = NewHbar(2)
Expand Down
2 changes: 1 addition & 1 deletion account_records_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func (query *AccountRecordsQuery) Execute(client *Client) ([]TransactionRecord,
}

if len(query.Query.GetNodeAccountIDs()) == 0 {
query.SetNodeAccountIDs(client.getNodeAccountIDsForTransaction())
query.SetNodeAccountIDs(client.getNodeAccountIdsForExecute())
}

var records = []TransactionRecord{}
Expand Down
37 changes: 36 additions & 1 deletion account_stakers_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,41 @@ func (query *AccountStakersQuery) GetAccountID() AccountID {
}
}

func (query *AccountStakersQuery) GetCost(client *Client) (Hbar, error) {
if client == nil || client.operator == nil {
return Hbar{}, errNoClientProvided
}

paymentTransaction, err := query_makePaymentTransaction(TransactionID{}, AccountID{}, client.operator, Hbar{})
if err != nil {
return Hbar{}, err
}

query.pbHeader.Payment = paymentTransaction
query.pbHeader.ResponseType = proto.ResponseType_COST_ANSWER
query.nodeIDs = client.getNodeAccountIdsForExecute()

resp, err := execute(
client,
request{
query: &query.Query,
},
query_shouldRetry,
costQuery_makeRequest,
costQuery_advanceRequest,
costQuery_getNodeAccountID,
accountInfoQuery_getMethod,
accountInfoQuery_mapResponseStatus,
query_mapResponse,
)

if err != nil {
return Hbar{}, err
}

return HbarFromTinybar(int64(resp.query.GetCryptoGetInfo().Header.Cost)), nil
}

func accountStakersQuery_mapResponseStatus(_ request, response response) Status {
return Status(response.query.GetCryptoGetProxyStakers().Header.NodeTransactionPrecheckCode)
}
Expand All @@ -58,7 +93,7 @@ func (query *AccountStakersQuery) Execute(client *Client) ([]Transfer, error) {
}

if len(query.Query.GetNodeAccountIDs()) == 0 {
query.SetNodeAccountIDs(client.getNodeAccountIDsForTransaction())
query.SetNodeAccountIDs(client.getNodeAccountIdsForExecute())
}

query.queryPayment = NewHbar(2)
Expand Down
2 changes: 1 addition & 1 deletion client.go
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ func (client *Client) getChannel(id AccountID) (*channel, error) {
return &ch, nil
}

func (client *Client) getNodeAccountIDsForTransaction() []AccountID {
func (client *Client) getNodeAccountIdsForExecute() []AccountID {
if client.lastSortedNodeAccountIDs+1000 < time.Now().UTC().UnixNano() {
sort.Sort(nodes{nodes: client.networkNodeIds})
client.lastSortedNodeAccountIDs = time.Now().UTC().UnixNano()
Expand Down
37 changes: 36 additions & 1 deletion contract_bytecode_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,41 @@ func (query *ContractBytecodeQuery) GetContractID() ContractID {
return contractIDFromProtobuf(query.pb.ContractID)
}

func (query *ContractBytecodeQuery) GetCost(client *Client) (Hbar, error) {
if client == nil || client.operator == nil {
return Hbar{}, errNoClientProvided
}

paymentTransaction, err := query_makePaymentTransaction(TransactionID{}, AccountID{}, client.operator, Hbar{})
if err != nil {
return Hbar{}, err
}

query.pbHeader.Payment = paymentTransaction
query.pbHeader.ResponseType = proto.ResponseType_COST_ANSWER
query.nodeIDs = client.getNodeAccountIdsForExecute()

resp, err := execute(
client,
request{
query: &query.Query,
},
query_shouldRetry,
costQuery_makeRequest,
costQuery_advanceRequest,
costQuery_getNodeAccountID,
accountInfoQuery_getMethod,
accountInfoQuery_mapResponseStatus,
query_mapResponse,
)

if err != nil {
return Hbar{}, err
}

return HbarFromTinybar(int64(resp.query.GetCryptoGetInfo().Header.Cost)), nil
}

func contractBytecodeQuery_mapResponseStatus(_ request, response response) Status {
return Status(response.query.GetContractGetBytecodeResponse().Header.NodeTransactionPrecheckCode)
}
Expand All @@ -52,7 +87,7 @@ func (query *ContractBytecodeQuery) Execute(client *Client) ([]byte, error) {
}

if len(query.Query.GetNodeAccountIDs()) == 0 {
query.SetNodeAccountIDs(client.getNodeAccountIDsForTransaction())
query.SetNodeAccountIDs(client.getNodeAccountIdsForExecute())
}

query.queryPayment = NewHbar(2)
Expand Down
42 changes: 41 additions & 1 deletion contract_call_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,50 @@ func (query *ContractCallQuery) SetFunction(name string, params *ContractFunctio
return query
}

func (query *ContractCallQuery) SetFunctionParameters(byteArray []byte) *ContractCallQuery {
query.pb.FunctionParameters = byteArray
return query
}

func (query *ContractCallQuery) GetFunctionParameters() []byte {
return query.pb.FunctionParameters
}

func (query *ContractCallQuery) GetCost(client *Client) (Hbar, error) {
if client == nil || client.operator == nil {
return Hbar{}, errNoClientProvided
}

paymentTransaction, err := query_makePaymentTransaction(TransactionID{}, AccountID{}, client.operator, Hbar{})
if err != nil {
return Hbar{}, err
}

query.pbHeader.Payment = paymentTransaction
query.pbHeader.ResponseType = proto.ResponseType_COST_ANSWER
query.nodeIDs = client.getNodeAccountIdsForExecute()

resp, err := execute(
client,
request{
query: &query.Query,
},
query_shouldRetry,
costQuery_makeRequest,
costQuery_advanceRequest,
costQuery_getNodeAccountID,
accountInfoQuery_getMethod,
accountInfoQuery_mapResponseStatus,
query_mapResponse,
)

if err != nil {
return Hbar{}, err
}

return HbarFromTinybar(int64(resp.query.GetCryptoGetInfo().Header.Cost)), nil
}

func contractCallQuery_mapResponseStatus(_ request, response response) Status {
return Status(response.query.GetContractCallLocal().Header.NodeTransactionPrecheckCode)
}
Expand All @@ -90,7 +130,7 @@ func (query *ContractCallQuery) Execute(client *Client) (ContractFunctionResult,
}

if len(query.Query.GetNodeAccountIDs()) == 0 {
query.SetNodeAccountIDs(client.getNodeAccountIDsForTransaction())
query.SetNodeAccountIDs(client.getNodeAccountIdsForExecute())
}

query.queryPayment = NewHbar(2)
Expand Down
37 changes: 36 additions & 1 deletion contract_info_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,41 @@ func (query *ContractInfoQuery) GetContractID() ContractID {
return contractIDFromProtobuf(query.pb.ContractID)
}

func (query *ContractInfoQuery) GetCost(client *Client) (Hbar, error) {
if client == nil || client.operator == nil {
return Hbar{}, errNoClientProvided
}

paymentTransaction, err := query_makePaymentTransaction(TransactionID{}, AccountID{}, client.operator, Hbar{})
if err != nil {
return Hbar{}, err
}

query.pbHeader.Payment = paymentTransaction
query.pbHeader.ResponseType = proto.ResponseType_COST_ANSWER
query.nodeIDs = client.getNodeAccountIdsForExecute()

resp, err := execute(
client,
request{
query: &query.Query,
},
query_shouldRetry,
costQuery_makeRequest,
costQuery_advanceRequest,
costQuery_getNodeAccountID,
accountInfoQuery_getMethod,
accountInfoQuery_mapResponseStatus,
query_mapResponse,
)

if err != nil {
return Hbar{}, err
}

return HbarFromTinybar(int64(resp.query.GetCryptoGetInfo().Header.Cost)), nil
}

func contractInfoQuery_mapResponseStatus(_ request, response response) Status {
return Status(response.query.GetContractGetInfo().Header.NodeTransactionPrecheckCode)
}
Expand All @@ -53,7 +88,7 @@ func (query *ContractInfoQuery) Execute(client *Client) (ContractInfo, error) {
}

if len(query.Query.GetNodeAccountIDs()) == 0 {
query.SetNodeAccountIDs(client.getNodeAccountIDsForTransaction())
query.SetNodeAccountIDs(client.getNodeAccountIdsForExecute())
}

query.queryPayment = NewHbar(2)
Expand Down
37 changes: 36 additions & 1 deletion contract_records_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,41 @@ func (query *ContractRecordsQuery) GetContractID(id ContractID) ContractID {
return contractIDFromProtobuf(query.pb.GetContractID())
}

func (query *ContractRecordsQuery) GetCost(client *Client) (Hbar, error) {
if client == nil || client.operator == nil {
return Hbar{}, errNoClientProvided
}

paymentTransaction, err := query_makePaymentTransaction(TransactionID{}, AccountID{}, client.operator, Hbar{})
if err != nil {
return Hbar{}, err
}

query.pbHeader.Payment = paymentTransaction
query.pbHeader.ResponseType = proto.ResponseType_COST_ANSWER
query.nodeIDs = client.getNodeAccountIdsForExecute()

resp, err := execute(
client,
request{
query: &query.Query,
},
query_shouldRetry,
costQuery_makeRequest,
costQuery_advanceRequest,
costQuery_getNodeAccountID,
accountInfoQuery_getMethod,
accountInfoQuery_mapResponseStatus,
query_mapResponse,
)

if err != nil {
return Hbar{}, err
}

return HbarFromTinybar(int64(resp.query.GetCryptoGetInfo().Header.Cost)), nil
}

func contractRecordsQuery_mapResponseStatus(_ request, response response) Status {
return Status(response.query.GetContractGetRecordsResponse().Header.NodeTransactionPrecheckCode)
}
Expand All @@ -51,7 +86,7 @@ func (query *ContractRecordsQuery) Execute(client *Client) ([]TransactionRecord,
}

if len(query.Query.GetNodeAccountIDs()) == 0 {
query.SetNodeAccountIDs(client.getNodeAccountIDsForTransaction())
query.SetNodeAccountIDs(client.getNodeAccountIdsForExecute())
}

query.queryPayment = NewHbar(2)
Expand Down
Loading

0 comments on commit ff4d655

Please sign in to comment.