@@ -3,15 +3,15 @@ package servd
3
3
import (
4
4
"net/http"
5
5
6
- "encoding/json"
7
-
8
6
log "github.com/sirupsen/logrus"
9
7
10
8
"github.com/labstack/echo"
11
9
"github.com/skycoin/skycoin/src/visor"
12
10
13
11
"github.com/skycoin/services/coin-api/internal/locator"
12
+ "github.com/skycoin/services/coin-api/internal/model"
14
13
"github.com/skycoin/services/coin-api/internal/multi"
14
+ "github.com/skycoin/services/errhandler"
15
15
)
16
16
17
17
type handlerMulti struct {
@@ -33,83 +33,140 @@ func newHandlerMulti(host string, port int) *handlerMulti {
33
33
34
34
// generateKeys returns a keypair
35
35
func (h * handlerMulti ) generateKeys (e echo.Context ) error {
36
- rsp := h .service .GenerateKeyPair ()
37
- data , err := json .Marshal (rsp )
38
- if err != nil || rsp .Code != 0 {
39
- log .Errorf ("unable to generate key, rsp code is %d, error %v" , rsp .Code , err )
40
- return err
36
+ keysResponse := h .service .GenerateKeyPair ()
37
+ rsp := struct {
38
+ Status string `json:"status"`
39
+ Code int `json:"code"`
40
+ Result * model.KeysResponse `json:"result"`
41
+ }{
42
+ Status : model .StatusOk ,
43
+ Code : 0 ,
44
+ Result : keysResponse ,
41
45
}
42
- return e .JSONBlob (http .StatusCreated , data )
46
+
47
+ return e .JSONPretty (http .StatusCreated , & rsp , "\t " )
43
48
}
44
49
45
50
func (h * handlerMulti ) generateSeed (e echo.Context ) error {
46
51
key := e .QueryParam ("key" )
47
- rsp , err := h .service .GenerateAddr (key )
48
- data , err := json .Marshal (rsp )
52
+ addressResponse , err := h .service .GenerateAddr (key )
49
53
if err != nil {
50
- log .Errorf ("error encoding response %v, code %d" , err , rsp .Code )
51
- return err
54
+ log .Errorf ("error encoding response %v, code" , err )
55
+ rsp := struct {
56
+ Status string `json:"status"`
57
+ Code int `json:"code"`
58
+ Result * model.AddressResponse `json:"result"`
59
+ }{
60
+ Status : model .StatusError ,
61
+ Code : errhandler .RPCInvalidAddressOrKey ,
62
+ Result : & model.AddressResponse {},
63
+ }
64
+
65
+ return e .JSONPretty (http .StatusNotFound , rsp , "\t " )
52
66
}
53
- if rsp .Code != 0 {
54
- e .JSONBlob (http .StatusNotFound , data )
67
+
68
+ rsp := struct {
69
+ Status string `json:"status"`
70
+ Code int `json:"code"`
71
+ Result * model.AddressResponse `json:"result"`
72
+ }{
73
+ Status : model .StatusOk ,
74
+ Code : 0 ,
75
+ Result : addressResponse ,
55
76
}
56
77
57
- return e .JSONBlob (http .StatusCreated , data )
78
+ return e .JSONPretty (http .StatusCreated , & rsp , " \t " )
58
79
}
59
80
60
81
func (h * handlerMulti ) checkBalance (e echo.Context ) error {
61
82
address := e .QueryParam ("address" )
62
- rsp , err := h .service .CheckBalance (address )
83
+ balanceResponse , err := h .service .CheckBalance (address )
63
84
if err != nil {
64
85
log .Errorf ("balance checking error %v" , err )
86
+ rsp := struct {
87
+ Status string `json:"status"`
88
+ Code int `json:"code"`
89
+ Result * model.BalanceResponse `json:"result"`
90
+ }{
91
+ Status : model .StatusError ,
92
+ Code : errhandler .RPCInvalidAddressOrKey ,
93
+ Result : & model.BalanceResponse {},
94
+ }
95
+
96
+ return e .JSONPretty (http .StatusNotFound , rsp , "\t " )
65
97
}
66
- data , err := json .Marshal (rsp )
67
- if err != nil {
68
- log .Errorf ("encoding response error %v" , err )
69
- return err
70
- }
71
- if rsp .Code != 0 {
72
- return e .JSONBlob (http .StatusNotFound , data )
98
+
99
+ rsp := struct {
100
+ Status string `json:"status"`
101
+ Code int `json:"code"`
102
+ Result * model.BalanceResponse `json:"result"`
103
+ }{
104
+ Status : model .StatusOk ,
105
+ Code : 0 ,
106
+ Result : balanceResponse ,
73
107
}
74
- return e .JSONBlob (http .StatusOK , data )
108
+
109
+ return e .JSONPretty (http .StatusOK , rsp , "\t " )
75
110
}
76
111
77
112
func (h * handlerMulti ) signTransaction (e echo.Context ) error {
78
113
transid := e .QueryParam ("signid" )
79
114
srcTrans := e .QueryParam ("sourceTrans" )
80
- rsp , err := h .service .SignTransaction (transid , srcTrans )
115
+ transactionSign , err := h .service .SignTransaction (transid , srcTrans )
81
116
if err != nil {
82
117
log .Errorf ("sign transaction error %v" , err )
83
- return err
84
- }
85
- data , err := json .Marshal (rsp )
86
- if err != nil {
87
- log .Errorf ("error encoding %v" , err )
88
- return err
118
+ rsp := struct {
119
+ Status string `json:"status"`
120
+ Code int `json:"code"`
121
+ Result * model.TransactionSign `json:"result"`
122
+ }{
123
+ Status : model .StatusError ,
124
+ Code : errhandler .RPCTransactionError ,
125
+ Result : & model.TransactionSign {},
126
+ }
127
+ return e .JSONPretty (http .StatusNotFound , & rsp , "\t " )
89
128
}
90
- if rsp .Code != 0 {
91
- e .JSONBlob (http .StatusNotFound , data )
129
+
130
+ rsp := struct {
131
+ Status string `json:"status"`
132
+ Code int `json:"code"`
133
+ Result * model.TransactionSign `json:"result"`
134
+ }{
135
+ Status : model .StatusOk ,
136
+ Code : 0 ,
137
+ Result : transactionSign ,
92
138
}
93
- return e .JSONBlob (http .StatusOK , data )
139
+ return e .JSONPretty (http .StatusOK , & rsp , " \t " )
94
140
}
95
141
96
142
func (h * handlerMulti ) injectTransaction (e echo.Context ) error {
97
143
transid := e .Param ("transid" )
98
- rsp , err := h .service .InjectTransaction (transid )
144
+ injectedTransaction , err := h .service .InjectTransaction (transid )
99
145
if err != nil {
100
146
log .Errorf ("inject transaction error %v" , err )
101
- return err
102
- }
103
- data , err := json .Marshal (rsp )
104
- if err != nil {
105
- log .Errorf ("responce encoding error %v" , err )
106
- return err
147
+ rsp := struct {
148
+ Status string `json:"status"`
149
+ Code int `json:"code"`
150
+ Result * model.Transaction `json:"result"`
151
+ }{
152
+ Status : model .StatusError ,
153
+ Code : errhandler .RPCTransactionRejected ,
154
+ Result : & model.Transaction {},
155
+ }
156
+ return e .JSONPretty (http .StatusNotFound , & rsp , "\t " )
107
157
}
108
- if rsp .Code != 0 {
109
- log .Warningf ("response error %d" , rsp .Code )
110
- return e .JSONBlob (http .StatusNotFound , data )
158
+
159
+ rsp := struct {
160
+ Status string `json:"status"`
161
+ Code int `json:"code"`
162
+ Result * model.Transaction `json:"result"`
163
+ }{
164
+ Status : model .StatusOk ,
165
+ Code : 0 ,
166
+ Result : injectedTransaction ,
111
167
}
112
- return e .JSONBlob (http .StatusCreated , data )
168
+
169
+ return e .JSONPretty (http .StatusCreated , & rsp , "\t " )
113
170
}
114
171
115
172
func (h * handlerMulti ) checkTransaction (ctx echo.Context ) error {
@@ -122,7 +179,7 @@ func (h *handlerMulti) checkTransaction(ctx echo.Context) error {
122
179
Code int `json:"code"`
123
180
Result string `json:"result"`
124
181
}{
125
- "Ok" ,
182
+ model . StatusOk ,
126
183
0 ,
127
184
err .Error (),
128
185
}, "\t " )
@@ -133,8 +190,8 @@ func (h *handlerMulti) checkTransaction(ctx echo.Context) error {
133
190
Code int `json:"code"`
134
191
Result visor.TransactionStatus `json:"result"`
135
192
}{
136
- "Ok" ,
137
- http . StatusOK ,
193
+ model . StatusOk ,
194
+ 0 ,
138
195
* status ,
139
196
}, "\t " )
140
197
0 commit comments