1
1
#include "apis.h"
2
2
3
- int api_get_tips (const iota_client_service_t * const service ,
4
- char * * json_result ) {
5
- int ret = 0 ;
3
+ // TODO: Generate actual pre shared keys
4
+ static mam_psk_t const psk = {
5
+ .id = {1 , 0 , -1 , -1 , 0 , -1 , -1 , 0 , 0 , 1 , -1 , 0 , 1 , 0 , 0 , 1 , 1 ,
6
+ 1 , -1 , 1 , 1 , 0 , 1 , 1 , 0 , 0 , -1 , 1 , -1 , -1 , -1 , -1 , -1 , -1 ,
7
+ -1 , 1 , -1 , -1 , 0 , -1 , -1 , 1 , 0 , -1 , -1 , -1 , 1 , 1 , 1 , 0 , 0 ,
8
+ -1 , 1 , -1 , -1 , -1 , 0 , -1 , 1 , -1 , -1 , -1 , 1 , 1 , -1 , 1 , 0 , 0 ,
9
+ 1 , 1 , 1 , -1 , -1 , 0 , 0 , -1 , -1 , 1 , 0 , -1 , 1 },
10
+ .key = {-1 , 1 , -1 , -1 , 1 , -1 , -1 , 0 , 0 , 0 , -1 , -1 , 1 , 1 , 1 , -1 , -1 ,
11
+ -1 , 0 , 0 , 0 , 0 , -1 , -1 , 1 , 1 , 1 , 0 , -1 , -1 , -1 , 0 , 0 , 0 ,
12
+ -1 , -1 , 1 , -1 , 0 , 0 , 1 , 0 , 0 , -1 , 1 , 1 , 0 , -1 , 0 , 0 , 1 ,
13
+ -1 , 1 , 0 , 1 , 0 , 0 , -1 , 1 , 1 , -1 , 1 , 0 , -1 , 0 , -1 , 1 , -1 ,
14
+ -1 , -1 , 0 , -1 , -1 , 0 , -1 , -1 , 0 , 0 , -1 , -1 , 1 , -1 , 0 , 0 , -1 ,
15
+ -1 , -1 , -1 , 0 , -1 , -1 , -1 , 1 , -1 , -1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 ,
16
+ 0 , 1 , -1 , 0 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , -1 , 0 , 1 , 1 , 0 ,
17
+ 0 , -1 , -1 , 1 , 1 , 0 , 0 , 1 , -1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 0 ,
18
+ 0 , -1 , -1 , -1 , -1 , 1 , 1 , 1 , 0 , 0 , -1 , 0 , 1 , -1 , 1 , 1 , 1 ,
19
+ 0 , 0 , 1 , -1 , -1 , 0 , -1 , 1 , -1 , 1 , 0 , 0 , 1 , -1 , 0 , 1 , -1 ,
20
+ 0 , 0 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 1 , -1 , 1 , -1 , 1 , 0 , 1 , 1 ,
21
+ 1 , -1 , 0 , 0 , -1 , 1 , 1 , 0 , -1 , -1 , 0 , 0 , -1 , 1 , 0 , 1 , -1 ,
22
+ 0 , 0 , -1 , 1 , -1 , 1 , 1 , 1 , -1 , 0 , 1 , 1 , 0 , 0 , -1 , -1 , -1 ,
23
+ 0 , 0 , 1 , 0 , 1 , 0 , -1 , 1 , -1 , 0 , 1 , 0 , -1 , 1 , 1 , -1 , -1 ,
24
+ 0 , 0 , -1 , 0 , -1 }};
25
+
26
+ status_t api_get_tips (const iota_client_service_t * const service ,
27
+ char * * json_result ) {
28
+ status_t ret = SC_OK ;
6
29
ta_get_tips_res_t * res = ta_get_tips_res_new ();
7
30
if (res == NULL ) {
31
+ ret = SC_TA_OOM ;
8
32
goto done ;
9
33
}
10
34
@@ -20,11 +44,12 @@ int api_get_tips(const iota_client_service_t* const service,
20
44
return ret ;
21
45
}
22
46
23
- int api_get_tips_pair (const iota_client_service_t * const service ,
24
- char * * json_result ) {
25
- int ret = 0 ;
47
+ status_t api_get_tips_pair (const iota_client_service_t * const service ,
48
+ char * * json_result ) {
49
+ status_t ret = SC_OK ;
26
50
ta_get_tips_res_t * res = ta_get_tips_res_new ();
27
51
if (res == NULL ) {
52
+ ret = SC_TA_OOM ;
28
53
goto done ;
29
54
}
30
55
@@ -40,11 +65,12 @@ int api_get_tips_pair(const iota_client_service_t* const service,
40
65
return ret ;
41
66
}
42
67
43
- int api_generate_address (const iota_client_service_t * const service ,
44
- char * * json_result ) {
45
- int ret = 0 ;
68
+ status_t api_generate_address (const iota_client_service_t * const service ,
69
+ char * * json_result ) {
70
+ status_t ret = SC_OK ;
46
71
ta_generate_address_res_t * res = ta_generate_address_res_new ();
47
72
if (res == NULL ) {
73
+ ret = SC_TA_OOM ;
48
74
goto done ;
49
75
}
50
76
@@ -60,11 +86,12 @@ int api_generate_address(const iota_client_service_t* const service,
60
86
return ret ;
61
87
}
62
88
63
- int api_get_transaction_object (const iota_client_service_t * const service ,
64
- const char * const obj , char * * json_result ) {
65
- int ret = 0 ;
89
+ status_t api_get_transaction_object (const iota_client_service_t * const service ,
90
+ const char * const obj , char * * json_result ) {
91
+ status_t ret = SC_OK ;
66
92
ta_get_transaction_object_res_t * res = ta_get_transaction_object_res_new ();
67
93
if (res == NULL ) {
94
+ ret = SC_TA_OOM ;
68
95
goto done ;
69
96
}
70
97
@@ -80,11 +107,13 @@ int api_get_transaction_object(const iota_client_service_t* const service,
80
107
return ret ;
81
108
}
82
109
83
- int api_find_transactions_by_tag (const iota_client_service_t * const service ,
84
- const char * const obj , char * * json_result ) {
85
- int ret = 0 ;
110
+ status_t api_find_transactions_by_tag (
111
+ const iota_client_service_t * const service , const char * const obj ,
112
+ char * * json_result ) {
113
+ status_t ret = SC_OK ;
86
114
ta_find_transactions_res_t * res = ta_find_transactions_res_new ();
87
115
if (res == NULL ) {
116
+ ret = SC_TA_OOM ;
88
117
goto done ;
89
118
}
90
119
@@ -100,12 +129,13 @@ int api_find_transactions_by_tag(const iota_client_service_t* const service,
100
129
return ret ;
101
130
}
102
131
103
- int api_find_transactions_obj_by_tag (const iota_client_service_t * const service ,
104
- const char * const obj ,
105
- char * * json_result ) {
106
- int ret = 0 ;
132
+ status_t api_find_transactions_obj_by_tag (
133
+ const iota_client_service_t * const service , const char * const obj ,
134
+ char * * json_result ) {
135
+ status_t ret = SC_OK ;
107
136
ta_find_transactions_obj_res_t * res = ta_find_transactions_obj_res_new ();
108
137
if (res == NULL ) {
138
+ ret = SC_TA_OOM ;
109
139
goto done ;
110
140
}
111
141
@@ -121,16 +151,65 @@ int api_find_transactions_obj_by_tag(const iota_client_service_t* const service,
121
151
return ret ;
122
152
}
123
153
124
- int api_send_transfer (const iota_client_service_t * const service ,
125
- const char * const obj , char * * json_result ) {
126
- int ret = 0 ;
154
+ status_t api_receive_mam_message (const iota_client_service_t * const service ,
155
+ const char * const obj , char * * json_result ) {
156
+ status_t ret = SC_OK ;
157
+ mam_api_t mam ;
158
+
159
+ tryte_t * payload_trytes = NULL ;
160
+ size_t payload_size = 0 ;
161
+ bundle_transactions_t * bundle = NULL ;
162
+ bundle_transactions_new (& bundle );
163
+ bool is_last_packet ;
164
+
165
+ // Creating MAM API
166
+ if (mam_api_init (& mam , (tryte_t * )SEED )) {
167
+ ret = SC_MAM_OOM ;
168
+ goto done ;
169
+ }
170
+
171
+ // Get bundle which is find_transactions_by_bundle
172
+ ret = ta_get_bundle (service , (tryte_t * )obj , bundle );
173
+ if (ret ) {
174
+ goto done ;
175
+ }
176
+
177
+ // Read MAM message from bundle
178
+ mam_psk_t_set_add (& mam .psks , & psk );
179
+ if (mam_api_bundle_read (& mam , bundle , & payload_trytes , & payload_size ,
180
+ & is_last_packet ) == RC_OK ) {
181
+ if (payload_trytes == NULL || payload_size == 0 ) {
182
+ ret = SC_MAM_NULL ;
183
+ } else {
184
+ char * payload = calloc (payload_size * 2 + 1 , sizeof (char ));
185
+
186
+ trytes_to_ascii (payload_trytes , payload_size , payload );
187
+ * json_result = payload ;
188
+
189
+ payload = NULL ;
190
+ free (payload_trytes );
191
+ }
192
+ } else {
193
+ ret = SC_MAM_FAILED_RESPONSE ;
194
+ }
195
+
196
+ done :
197
+ mam_api_destroy (& mam );
198
+ bundle_transactions_free (& bundle );
199
+ return ret ;
200
+ }
201
+
202
+ status_t api_send_transfer (const iota_client_service_t * const service ,
203
+ const char * const obj , char * * json_result ) {
204
+ status_t ret = SC_OK ;
127
205
char hash_trytes [NUM_TRYTES_HASH + 1 ];
128
206
ta_send_transfer_req_t * req = ta_send_transfer_req_new ();
129
207
ta_send_transfer_res_t * res = ta_send_transfer_res_new ();
130
208
ta_get_transaction_object_res_t * txn_obj_res =
131
209
ta_get_transaction_object_res_new ();
132
210
133
211
if (req == NULL || res == NULL || txn_obj_res == NULL ) {
212
+ ret = SC_TA_OOM ;
134
213
goto done ;
135
214
}
136
215
0 commit comments