Skip to content

Commit

Permalink
refactor: makePayment moved to query
Browse files Browse the repository at this point in the history
  • Loading branch information
andrix10 committed Oct 15, 2020
1 parent 7b71428 commit 4efd566
Show file tree
Hide file tree
Showing 24 changed files with 100 additions and 51 deletions.
1 change: 1 addition & 0 deletions account_create_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ func (transaction *AccountCreateTransaction) Execute(
accountCreateTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions account_delete_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ func (transaction *AccountDeleteTransaction) Execute(
accountDeleteTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions account_update_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ func (transaction *AccountUpdateTransaction) Execute(
accountUpdateTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions contract_create_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ func (transaction *ContractCreateTransaction) Execute(
contractCreateTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions contract_delete_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ func (transaction *ContractDeleteTransaction) Execute(
contractDeleteTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions contract_execute_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ func (transaction *ContractExecuteTransaction) Execute(
contractExecuteTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions contract_update_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ func (transaction *ContractUpdateTransaction) Execute(
contractUpdateTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions crypto_transfer_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ func (transaction *CryptoTransferTransaction) Execute(
cryptoTransferTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
5 changes: 5 additions & 0 deletions executable.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ type protoRequest struct {
transaction *proto.Transaction
}

type QueryHeader struct {
header *proto.QueryHeader
}

type protoResponseHeader struct {
responseHeader proto.ResponseHeader
}
Expand All @@ -56,6 +60,7 @@ func execute(
getMethod func(request, *channel) method,
mapResponseStatus func(request, response) Status,
mapResponse func(request, response, AccountID, protoRequest) (intermediateResponse, error),
makePayment func(TransactionID,AccountID, *operator,Hbar) (*proto.Transaction, error),
) (intermediateResponse, error) {
for attempt := 0; ; /* loop forever */ attempt++ {
delay := time.Duration(250*int64(math.Pow(2, float64(attempt)))) * time.Millisecond
Expand Down
1 change: 1 addition & 0 deletions file_append_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ func (transaction *FileAppendTransaction) Execute(
fileAppendTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions file_create_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ func (transaction *FileCreateTransaction) Execute(
fileCreateTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions file_delete_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ func (transaction *FileDeleteTransaction) Execute(
fileDeleteTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions file_update_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ func (transaction *FileUpdateTransaction) Execute(
fileUpdateTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions freeze_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ func (transaction *FreezeTransaction) Execute(
freezeTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions live_hash_add_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ func (transaction *LiveHashAddTransaction) Execute(
liveHashAddTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions live_hash_delete_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ func (transaction *LiveHashDeleteTransaction) Execute(
liveHashDeleteTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
68 changes: 68 additions & 0 deletions query.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package hedera

import (
protobuf "github.com/golang/protobuf/proto"
"github.com/hashgraph/hedera-sdk-go/proto"
)

Expand Down Expand Up @@ -88,5 +89,72 @@ func query_advanceRequest(request request) {
func query_mapResponse(request request, response response, _ AccountID, protoRequest protoRequest) (intermediateResponse, error) {
return intermediateResponse{
query: response.query,
//transaction: TransactionResponse{
// TransactionID: request.transaction.id,
// NodeID: request.transaction.nodeIDs[request.transaction.nextTransactionIndex],
//},
}, nil
}

//func query_mapResponseHeader(request request, response response) (protoResponseHeader, error) {
// return protoResponseHeader{
// responseHeader: proto.ResponseHeader{
// NodeTransactionPrecheckCode: response.transaction.NodeTransactionPrecheckCode,
// ResponseType: request.query.pbHeader.ResponseType,
// Cost: response.transaction.Cost,
// },
// }, nil
//}
//
//func query_mapRequestHeader(request request, response response) (QueryHeader, error) {
// return QueryHeader{
// header: &proto.QueryHeader{
// Payment: request.transaction.,
// ResponseType: 0,
// },
// }, nil
//}

func query_makePaymentTransaction(transactionID TransactionID, nodeID AccountID, operator *operator, cost Hbar) (*proto.Transaction, error) {
accountAmounts := make([]*proto.AccountAmount, 0)
accountAmounts = append(accountAmounts, &proto.AccountAmount{
AccountID: nodeID.toProtobuf(),
Amount: cost.tinybar,
})
accountAmounts = append(accountAmounts, &proto.AccountAmount{
AccountID: nodeID.toProtobuf(),
Amount: -cost.tinybar,
})

body := proto.TransactionBody{
TransactionID: transactionID.toProtobuf(),
NodeAccountID: nodeID.toProtobuf(),
TransactionFee: uint64(NewHbar(1).tinybar),
TransactionValidDuration: &proto.Duration{
Seconds: 120,
},
Data: &proto.TransactionBody_CryptoTransfer{
CryptoTransfer: &proto.CryptoTransferTransactionBody{
Transfers: &proto.TransferList{
AccountAmounts: accountAmounts,
},
},
},
}

bodyBytes, err := protobuf.Marshal(&body)
if err != nil {
return nil, err
}

signature := operator.signer(bodyBytes)
sigPairs := make([]*proto.SignaturePair, 0)
sigPairs = append(sigPairs, operator.publicKey.toSignaturePairProtobuf(signature))

return &proto.Transaction{
BodyBytes: bodyBytes,
SigMap: &proto.SignatureMap{
SigPair: sigPairs,
},
}, nil
}
1 change: 1 addition & 0 deletions system_delete_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ func (transaction *SystemDeleteTransaction) Execute(
systemDeleteTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions system_undelete_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ func (transaction *SystemUndeleteTransaction) Execute(
systemUndeleteTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions topic_create_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ func (transaction *TopicCreateTransaction) Execute(
topicCreateTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions topic_delete_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ func (transaction *TopicDeleteTransaction) Execute(
topicDeleteTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
1 change: 1 addition & 0 deletions topic_update_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ func (transaction *TopicUpdateTransaction) Execute(
topicUpdateTransaction_getMethod,
transaction_mapResponseStatus,
transaction_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand Down
8 changes: 4 additions & 4 deletions transaction_receipt.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func newTransactionReceipt(
topicID TopicID, fileID FileID,
contractID ContractID, accountID AccountID,
topicSequenceNumber uint64, topicRunningHash []byte,
topicRunningHashVersion uint64) *TransactionReceipt {
topicRunningHashVersion uint64) TransactionReceipt {

receipt := TransactionReceipt{
Status: status,
Expand All @@ -35,7 +35,7 @@ func newTransactionReceipt(
TopicRunningHashVersion: topicRunningHashVersion,
}

return &receipt
return receipt

}

Expand Down Expand Up @@ -83,8 +83,8 @@ func transactionReceiptFromProtobuf(protoReceipt *proto.TransactionReceipt) Tran
}
}

func (receipt TransactionReceipt) toProtobuf() proto.TransactionReceipt {
return proto.TransactionReceipt{
func (receipt TransactionReceipt) toProtobuf() *proto.TransactionReceipt {
return &proto.TransactionReceipt{
Status: proto.ResponseCodeEnum(receipt.Status),
AccountID: receipt.AccountID.toProtobuf(),
FileID: receipt.FileID.toProto(),
Expand Down
50 changes: 3 additions & 47 deletions transaction_receipt_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package hedera

import (
"fmt"
protobuf "github.com/golang/protobuf/proto"
"github.com/hashgraph/hedera-sdk-go/proto"
)

Expand Down Expand Up @@ -48,7 +47,7 @@ func transactionReceiptQuery_mapResponseStatus(_ request, response response) Sta
return Status(response.query.GetTransactionGetReceipt().Header.NodeTransactionPrecheckCode)
}

func transactionReceiptQuery_getMethod(channel *channel) method {
func transactionReceiptQuery_getMethod(_ request, channel *channel) method {
return method{
query: channel.getCrypto().GetTransactionReceipts,
}
Expand Down Expand Up @@ -105,7 +104,7 @@ func (query *TransactionReceiptQuery) Execute(client *Client) (TransactionReceip
}

for _, nodeID := range query.paymentTransactionNodeIDs {
transaction, err := makePaymentTransaction(
transaction, err := query_makePaymentTransaction(
query.paymentTransactionID,
nodeID,
client.operator,
Expand All @@ -131,6 +130,7 @@ func (query *TransactionReceiptQuery) Execute(client *Client) (TransactionReceip
transactionReceiptQuery_getMethod,
transactionReceiptQuery_mapResponseStatus,
query_mapResponse,
query_makePaymentTransaction,
)

if err != nil {
Expand All @@ -139,47 +139,3 @@ func (query *TransactionReceiptQuery) Execute(client *Client) (TransactionReceip

return transactionReceiptFromProtobuf(resp.query.GetTransactionGetReceipt().Receipt), nil
}

func makePaymentTransaction(transactionID TransactionID, nodeID AccountID, operator *operator, cost Hbar) (*proto.Transaction, error) {
accountAmounts := make([]*proto.AccountAmount, 0)
accountAmounts = append(accountAmounts, &proto.AccountAmount{
AccountID: nodeID.toProtobuf(),
Amount: cost.tinybar,
})
accountAmounts = append(accountAmounts, &proto.AccountAmount{
AccountID: nodeID.toProtobuf(),
Amount: -cost.tinybar,
})

body := proto.TransactionBody{
TransactionID: transactionID.toProtobuf(),
NodeAccountID: nodeID.toProtobuf(),
TransactionFee: uint64(NewHbar(1).tinybar),
TransactionValidDuration: &proto.Duration{
Seconds: 120,
},
Data: &proto.TransactionBody_CryptoTransfer{
CryptoTransfer: &proto.CryptoTransferTransactionBody{
Transfers: &proto.TransferList{
AccountAmounts: accountAmounts,
},
},
},
}

bodyBytes, err := protobuf.Marshal(&body)
if err != nil {
return nil, err
}

signature := operator.signer(bodyBytes)
sigPairs := make([]*proto.SignaturePair, 0)
sigPairs = append(sigPairs, operator.publicKey.toSignaturePairProtobuf(signature))

return &proto.Transaction{
BodyBytes: bodyBytes,
SigMap: &proto.SignatureMap{
SigPair: sigPairs,
},
}, nil
}

0 comments on commit 4efd566

Please sign in to comment.