Skip to content

Commit

Permalink
Return raw transaction if send transaction
Browse files Browse the repository at this point in the history
  • Loading branch information
crossle committed May 14, 2019
1 parent 33f891c commit e06ad21
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 12 deletions.
5 changes: 3 additions & 2 deletions cli/main.go
Expand Up @@ -77,10 +77,11 @@ func transferCmd(c *cli.Context) error {
OpponentKey: opponentKey,
Amount: number.FromString(amount),
}
err := bot.CreateTransaction(context.Background(), in, uid, sid, private, pin, pinToken)
transaction, err := bot.CreateTransaction(context.Background(), in, uid, sid, private, pin, pinToken)
if err != nil {
return err
}
fmt.Println("Mixin transfer success")
s := fmt.Sprintf("Mixin transfer success snapshotId: %s, transaction hash: %s", transaction.SnapshotId, transaction.TransactionHash)
fmt.Println(s)
return nil
}
36 changes: 26 additions & 10 deletions transfer.go
Expand Up @@ -18,14 +18,29 @@ type TransferInput struct {
OpponentKey string
}

func CreateTransaction(ctx context.Context, in *TransferInput, uid, sid, sessionKey, pin, pinToken string) error {
type RawTransaction struct {
Type string `json:"type"`
SnapshotId string `json:"snapshot"`
OpponentKey string `json:"opponent_key"`
AssetId string `json:"asset_id"`
Amount string `json:"amount"`
TraceId string `json:"trace_id"`
Memo string `json:"memo"`
State string `json:"state"`
CreatedAt time.Time `json:"created_at"`
TransactionHash string `json:"transaction_hash"`
SnapshotHash string `json:"snapshot_hash"`
SnapshotAt time.Time `json:"snapshot_at"`
}

func CreateTransaction(ctx context.Context, in *TransferInput, uid, sid, sessionKey, pin, pinToken string) (*RawTransaction, error) {
if in.Amount.Exhausted() {
return fmt.Errorf("Amount exhausted")
return nil, fmt.Errorf("Amount exhausted")
}

encryptedPIN, err := EncryptPIN(ctx, pin, pinToken, sid, sessionKey, uint64(time.Now().UnixNano()))
if err != nil {
return err
return nil, err
}
data, err := json.Marshal(map[string]interface{}{
"asset_id": in.AssetId,
Expand All @@ -36,30 +51,31 @@ func CreateTransaction(ctx context.Context, in *TransferInput, uid, sid, session
"pin": encryptedPIN,
})
if err != nil {
return err
return nil, err
}

path := "/transactions"
token, err := SignAuthenticationToken(uid, sid, sessionKey, "POST", path, string(data))
if err != nil {
return err
return nil, err
}
body, err := Request(ctx, "POST", path, data, token)
if err != nil {
return err
return nil, err
}

var resp struct {
Error Error `json:"error"`
Error Error `json:"error"`
Data RawTransaction `json:"data"`
}
err = json.Unmarshal(body, &resp)
if err != nil {
return err
return nil, err
}
if resp.Error.Code > 0 {
return resp.Error
return nil, resp.Error
}
return nil
return &resp.Data, nil
}

func CreateTransfer(ctx context.Context, in *TransferInput, uid, sid, sessionKey, pin, pinToken string) error {
Expand Down

0 comments on commit e06ad21

Please sign in to comment.