Skip to content

Commit 83423ff

Browse files
authored
Merge pull request #3 from everFinance/optimate-api
feat(): optimate api
2 parents a98a478 + ec1c55e commit 83423ff

File tree

4 files changed

+135
-9
lines changed

4 files changed

+135
-9
lines changed

client/client.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,11 @@ func (c *Client) GetTransactionField(id string, field string) (f string, err err
6565
return
6666
}
6767

68-
func (c *Client) GetTransactionData(id string, extension string) (body []byte, err error) {
68+
func (c *Client) GetTransactionData(id string, extension ...string) (body []byte, err error) {
6969
url := fmt.Sprintf("tx/%v/%v", id, "data")
70-
if extension != "" {
71-
url = url + "." + extension
70+
if extension != nil {
71+
url = url + "." + extension[0]
7272
}
73-
7473
body, statusCode, err := c.httpGet(url)
7574
if statusCode != 200 {
7675
err = fmt.Errorf("not found data")

example/api_example_test.go

+124
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package example
2+
3+
import (
4+
"fmt"
5+
"github.com/everFinance/goar/client"
6+
"github.com/everFinance/goar/types"
7+
wallet2 "github.com/everFinance/goar/wallet"
8+
"github.com/stretchr/testify/assert"
9+
"testing"
10+
"time"
11+
)
12+
13+
func Test_Client(t *testing.T) {
14+
// create client
15+
arNode := "https://arweave.net"
16+
c := client.New(arNode)
17+
txId := "hKMMPNh_emBf8v_at1tFzNYACisyMQNcKzeeE1QE9p8"
18+
19+
// 1. getInfo
20+
nodeInfo, err := c.GetInfo()
21+
assert.NoError(t, err)
22+
t.Logf("%v", nodeInfo)
23+
24+
// 2. full transaction via Id
25+
tx, state, err := c.GetTransactionByID(txId)
26+
assert.NoError(t, err)
27+
t.Logf("state: %s", state)
28+
t.Log(tx)
29+
30+
// 3. get transaction field by id
31+
f, err := c.GetTransactionField(txId, "signature")
32+
assert.NoError(t, err)
33+
t.Log(f)
34+
35+
// 4. get transaction data
36+
data, err := c.GetTransactionData(txId)
37+
assert.NoError(t, err)
38+
t.Log(string(data))
39+
data, err = c.GetTransactionData(txId, "html")
40+
assert.NoError(t, err)
41+
t.Log(string(data))
42+
43+
// 5. get tx send current time reward
44+
reward, err := c.GetTransactionPrice(data, nil)
45+
assert.NoError(t, err)
46+
t.Log(reward)
47+
to := "1seRanklLU_1VTGkEk7P0xAwMJfA7owA1JHW5KyZKlY"
48+
reward, err = c.GetTransactionPrice([]byte{}, &to)
49+
assert.NoError(t, err)
50+
t.Log(reward)
51+
52+
// 6. get anchor
53+
anchor, err := c.GetTransactionAnchor()
54+
assert.NoError(t, err)
55+
t.Log(anchor)
56+
57+
}
58+
59+
func Test_client2(t *testing.T) {
60+
arNode := "https://arweave.net"
61+
wallet, err := wallet2.NewFromPath("./testKey.json", arNode)
62+
assert.NoError(t, err)
63+
64+
tag := []types.Tag{
65+
types.Tag{
66+
Name: "TokenSymbol",
67+
Value: "DXN",
68+
},
69+
types.Tag{
70+
Name: "Version",
71+
Value: "1.1.0",
72+
},
73+
types.Tag{
74+
Name: "CreatedBy",
75+
Value: "ZYJ123",
76+
},
77+
}
78+
// 连续发送5 笔交易来测试交易打包顺序
79+
for i := 0; i < 5; i++ {
80+
data := fmt.Sprintf("nonce: %d", i)
81+
id, status, err := wallet.SendData([]byte(data), tag)
82+
t.Log(id)
83+
t.Log(status)
84+
t.Log(err)
85+
time.Sleep(30 * time.Second)
86+
}
87+
}
88+
89+
func Test_Arq(t *testing.T) {
90+
arqStr := `{
91+
"op": "and",
92+
"expr1": {
93+
"op": "equals",
94+
"expr1": "TokenSymbol",
95+
"expr2": "DXN"
96+
},
97+
"expr2": {
98+
"op": "equals",
99+
"expr1": "CreatedBy",
100+
"expr2": "zhou yu ji"
101+
}
102+
}`
103+
// create client
104+
arNode := "https://arweave.net"
105+
c := client.New(arNode)
106+
ids, err := c.Arql(arqStr)
107+
t.Log(len(ids))
108+
assert.NoError(t, err)
109+
sstr := make([]string, 0)
110+
sstr = append(sstr, "a")
111+
for _, val := range ids {
112+
t.Log(val)
113+
}
114+
115+
// 冒泡排序
116+
for i := 0; i < len(ids); i++ {
117+
for j := 1; j < len(ids)-i; j++ {
118+
if ids[j] > ids[j-1] {
119+
ids[j], ids[j-1] = ids[j-1], ids[j]
120+
}
121+
}
122+
}
123+
t.Log(ids)
124+
}

wallet/wallet.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@ type Wallet struct {
2020
Address string
2121
}
2222

23-
func NewFromPath(path string) (*Wallet, error) {
23+
func NewFromPath(path string, clientUrl string) (*Wallet, error) {
2424
b, err := ioutil.ReadFile(path)
2525
if err != nil {
2626
return nil, err
2727
}
2828

29-
return New(b)
29+
return New(b, clientUrl)
3030
}
3131

32-
func New(b []byte) (w *Wallet, err error) {
32+
func New(b []byte, clientUrl string) (w *Wallet, err error) {
3333
key, err := gojwk.Unmarshal(b)
3434
if err != nil {
3535
return
@@ -56,7 +56,7 @@ func New(b []byte) (w *Wallet, err error) {
5656

5757
addr := sha256.Sum256(pub.N.Bytes())
5858
w = &Wallet{
59-
Client: client.New("https://arweave.net"),
59+
Client: client.New(clientUrl),
6060
PubKey: pub,
6161
PrvKey: prv,
6262
Address: utils.Base64Encode(addr[:]),

wallet/wallet_test.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var testWallet *Wallet
1111
var err error
1212

1313
func init() {
14+
clientUrl := "https://arweave.net"
1415
testWallet, err = New([]byte(`{ "kty": "RSA",
1516
"n":
1617
"nQ9iy1fRM2xrgggjHhN1xZUnOkm9B4KFsJzH70v7uLMVyDqfyIJEVXeJ4Jhk_8KpjzYQ1kYfnCMjeXnhTUfY3PbeqY4PsK5nTje0uoOe1XGogeGAyKr6mVtKPhBku-aq1gz7LLRHndO2tvLRbLwX1931vNk94bSfJPYgMfU7OXxFXbTdKU38W6u9ShoaJGgUQI1GObd_sid1UVniCmu7P-99XPkixqyacsrkHzBajGz1S7jGmpQR669KWE9Z0unvH0KSHxAKoDD7Q7QZO7_4ujTBaIFwy_SJUxzVV8G33xvs7edmRdiqMdVK5W0LED9gbS4dv_aee9IxUJQqulSqZphPgShIiGNl9TcL5iUi9gc9cXR7ISyavos6VGiem_A-S-5f-_OKxoeZzvgAQda8sD6jtBTTuM5eLvgAbosbaSi7zFYCN7zeFdB72OfvCh72ZWSpBMH3dkdxsKCDmXUXvPdDLEnnRS87-MP5RV9Z6foq_YSEN5MFTMDdo4CpFGYl6mWTP6wUP8oM3Mpz3-_HotwSZEjASvWtiff2tc1fDHulVMYIutd52Fis_FKj6K1fzpiDYVA1W3cV4P28Q1-uF3CZ8nJEa5FXchB9lFrXB4HvsJVG6LPSt-y2R9parGi1_kEc6vOYIesKspgZ0hLyIKtqpTQFiPgKRlyUc-WEn5E",
@@ -26,7 +27,9 @@ func init() {
2627
"dq":
2728
"woDVvUZ64OAfbRNaZ_vFJHxVr6K5uppjFcYDq-h-57UMVClXMjhCxf3FIqrjnAuVAi0aSzcBXVMTT4S5pUC1iOkxoAsZdu_f0qCqRF7VojG5f8SkUxN3FuSZeSP7JESM3UGmgYUeTuIV9TnujXr92CctyST1GFv7FiRLxAYBUzdQGzPXkn9cn2GJmf0cSqVKgA2L5eGY5HxeoCes_DOh4oD_zTRjttQXzHidVbprhr43_Lx9By46hf_oCQVdf0eaaYfV9HnQW_UT_7c0FtNy8fskR2tk87ofU3Fs-MPO9PhdFonRniEiTTr0ylslk3zHahzLvjZsJG457ICWSUb8gQ",
2829
"qi":
29-
"ENtqTq3iiDkeiyPWD7pNRfiwIJnY5Zf97yXakxe04usHXWKmZulllttqsDkfHOXkBxRxHxqqTgOLuRpNsLrpI5MAxs8uSl13A70LUzHldnE8ePgt0688UpoI5Iw9oV2RdF_LvSrsgpa-SeexXxbZqXWpDNeUxYt2S327cS8HmrnETKy9z9VoVFmCT6_NCnxOaOTwr67dPBnGnW7nT3499m_aqmikCNjcmkfYihED6S2jZBRHPaSDM7JPPyQSEyRkGjR4z9JzhLOvbJf8tDKSE00JXJClmbpX-5qRcNt0gcJy6ceYQs-c94I24yGpunMMSwGo2i1-sGNwH1wj5-gv1Q" }`))
30+
"ENtqTq3iiDkeiyPWD7pNRfiwIJnY5Zf97yXakxe04usHXWKmZulllttqsDkfHOXkBxRxHxqqTgOLuRpNsLrpI5MAxs8uSl13A70LUzHldnE8ePgt0688UpoI5Iw9oV2RdF_LvSrsgpa-SeexXxbZqXWpDNeUxYt2S327cS8HmrnETKy9z9VoVFmCT6_NCnxOaOTwr67dPBnGnW7nT3499m_aqmikCNjcmkfYihED6S2jZBRHPaSDM7JPPyQSEyRkGjR4z9JzhLOvbJf8tDKSE00JXJClmbpX-5qRcNt0gcJy6ceYQs-c94I24yGpunMMSwGo2i1-sGNwH1wj5-gv1Q" }`),
31+
clientUrl)
32+
3033
if err != nil {
3134
panic(err)
3235
}

0 commit comments

Comments
 (0)