Skip to content
This repository has been archived by the owner on Dec 26, 2022. It is now read-only.

Implement api_get_transaction_msg #37

Merged
merged 4 commits into from
Dec 31, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions apis.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,30 @@ int api_generate_address(const iota_client_service_t* const service,
ta_generate_address_res_free(&res);
return ret;
}

int api_get_transaction_msg(const iota_client_service_t* const service,
const char* const obj, char* json_result) {
int ret = 0;
ta_get_transaction_msg_req_t* req = ta_get_transaction_msg_req_new();
ta_get_transaction_msg_res_t* res = ta_get_transaction_msg_res_new();
if (req == NULL || res == NULL) {
goto done;
}

ret = ta_get_transaction_msg_req_deserialize(obj, req);
if (ret) {
goto done;
}

ret = ta_get_transaction_msg(service, req, res);
if (ret) {
goto done;
}

ret = ta_get_transaction_msg_res_serialize(&json_result, res);

done:
ta_get_transaction_req_free(&req);
ta_get_transaction_res_free(&res);
return ret;
}
2 changes: 2 additions & 0 deletions apis.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,7 @@ int api_get_tips(const iota_client_service_t* const service,
const char* const obj, char* json_result);
int api_send_transfer(const iota_client_service_t* const service,
const char* const obj, char* json_result);
int api_get_transaction_msg(const iota_client_service_t* const service,
const char* const obj, char* json_result);

#endif // APIS_H_
50 changes: 50 additions & 0 deletions serializer/serializer.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,3 +214,53 @@ int ta_send_transfer_res_serialize(char** obj,
cJSON_Delete(json_root);
return 0;
}

int ta_get_transaction_msg_req_deserialize(const char* const obj,
ta_get_transaction_msg_req_t* req) {
cJSON* json_obj = cJSON_Parse(obj);
cJSON* json_result = NULL;
flex_trit_t addr_trits[NUM_TRITS_HASH];
int ret;

if (json_obj == NULL) {
ret = -1;
goto done;
}

json_result = cJSON_GetObjectItemCaseSensitive(json_obj, "hash");
flex_trits_from_trytes(addr_trits, NUM_TRITS_HASH,
(const tryte_t*)json_result->valuestring,
NUM_TRYTES_HASH, NUM_TRYTES_HASH);
ret = hash243_queue_push(&req->hashes, addr_trits);

done:
cJSON_Delete(json_obj);
return ret;
}

int ta_get_transaction_msg_res_serialize(
char** obj, const ta_get_transaction_msg_res_t* const res) {
int ret = 0;
char msg_trytes[NUM_TRYTES_SIGNATURE + 1];
cJSON* json_root = cJSON_CreateObject();
if (json_root == NULL) {
ret = -1;
goto done;
}

flex_trits_to_trytes((tryte_t*)msg_trytes, NUM_TRYTES_SIGNATURE,
res->msg->hash, NUM_TRITS_SIGNATURE,
NUM_TRITS_SIGNATURE);
msg_trytes[NUM_TRYTES_SIGNATURE] = '\0';

cJSON_AddStringToObject(json_root, "message", msg_trytes);
*obj = cJSON_PrintUnformatted(json_root);
if (*obj == NULL) {
ret = -1;
goto done;
}

done:
cJSON_Delete(json_root);
return ret;
}
4 changes: 4 additions & 0 deletions serializer/serializer.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,9 @@ int ta_send_transfer_req_deserialize(const char* const obj,
ta_send_transfer_req_t* req);
int ta_send_transfer_res_serialize(char** obj,
const ta_send_transfer_res_t* const res);
int ta_get_transaction_msg_req_deserialize(const char* const obj,
ta_get_transaction_msg_req_t* req);
int ta_get_transaction_msg_res_serialize(
char** obj, const ta_get_transaction_msg_res_t* const res);

#endif // SERIALIZER_SERIALIZER_H_
33 changes: 33 additions & 0 deletions serializer/test/test_serializer.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,37 @@ void test_serialize_ta_send_transfer(void) {
free(json_result);
}

void test_deserialize_ta_get_transaction_msg(void) {
const char* json =
"{\"command\":\"get_transaction_msg\","
"\"hash\":\"" TRYTES_81_1 "\"}";

ta_get_transaction_msg_req_t* req = ta_get_transaction_msg_req_new();
ta_get_transaction_msg_req_deserialize(json, req);

TEST_ASSERT_EQUAL_MEMORY(TRITS_81_1, req->hashes->hash, 81);

ta_get_transaction_msg_req_free(&req);
}

void test_serialize_ta_get_transaction_msg(void) {
const char* json = "{\"message\":\"" TRYTES_2187_1 "\"}";
char* json_result;
flex_trit_t msg_trits[NUM_TRITS_SIGNATURE + 1];
ta_get_transaction_msg_res_t* res = ta_get_transaction_msg_res_new();

flex_trits_from_trytes(msg_trits, NUM_TRITS_SIGNATURE,
(const tryte_t*)TRYTES_2187_1, NUM_TRYTES_SIGNATURE,
NUM_TRYTES_SIGNATURE);
hash8019_queue_push(&res->msg, msg_trits);

ta_get_transaction_msg_res_serialize(&json_result, res);

TEST_ASSERT_EQUAL_STRING(json, json_result);
ta_get_transaction_msg_res_free(&res);
free(json_result);
}

int main(void) {
UNITY_BEGIN();

Expand All @@ -81,6 +112,8 @@ int main(void) {
RUN_TEST(test_serialize_ta_generate_address);
RUN_TEST(test_deserialize_ta_send_transfer);
RUN_TEST(test_serialize_ta_send_transfer);
RUN_TEST(test_deserialize_ta_get_transaction_msg);
RUN_TEST(test_serialize_ta_get_transaction_msg);

return UNITY_END();
}
33 changes: 33 additions & 0 deletions serializer/test/test_serializer.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,39 @@
"99IROUICDOXKSYZTDPEDKOQENTJOWJONDEWROCEJIEWFWLUAACVSJFTMCHHXJBJRKAAPUDXX" \
"VXFWP9X9999"

#define TRYTES_2187_1 \
"ZDBDBUAFDYHOVOYSJVVPGMVBBDUXYTWPXYDIZJQLLHQFDEDXHTVIFVPOLSZVVXQTOXNFOJME" \
"ANCKALZGCNZDQVLRMBQDZPLTEA9RPAJTPPA9INAOTENXDKLJXHQHHOOO9FIN9FPQORUFDMXV" \
"VRFOMFQPUHMLACRQEXMJKOKRJSKVDXVDXALF9UEUGWJPEQBCYXMEHCRYW9GCWFAGCDZAAKKX" \
"WDCZPWXXZMNRTWEPBETFJAVMERWZCNCNAS9NQOUBJIHWQQQBEEQJSCMOK9DBVOQEHXGDYNXQ" \
"ZGBEKPWOPJLQQNVRJEZYDVOGONYYIISPWLXADJWPFPJ9ORZLWUQDCMRYORKJHOK9GIMRVDYN" \
"NFGLORDDRXDUTFLZEHOZMFDQBWWJLFZUQVOROTKTCRETDBAEWIKDJCWVNNHXDCCWQTMKCTPN" \
"ITUOSVGFTHYOAZQ9QFCMXKDDXMBNIPN9RBHICWXKHNTRZLKKUWAGYCDYTAHONHOZAYGTUFZT" \
"SFPQ9MXZPXLPJWWWT9NOSTTKLJEDZTBTW9CYLSHJHSBUBDFHDVTONZEAS9OXHYCCDAWEPLBR" \
"WNZOQPR9EIWCZAHLMDE9OHJIMCKJRBIEAAQGIKIQYTTIUHOVBSGL9EUVGBMSJSXDXQWFHOVW" \
"LQARHRNCLMDDNGZUFAXXIZKUBQ9AQSGEHYKVBHMYOSTLEFSZATPFETGTGUDTPIXNNWNAVSLJ" \
"IVBPEEWA9NDF9JOTKOMATQIWHXCKMNLCNUKEEJHMDBRSYZCRZIKLG9J9CCCKCY9HXXS9GBFM" \
"CSZBVWUKAUZWTAZBRWAXRNOAOKYURURJXLHUTMC9TFEC9AWEGTBAVFPVEOFX9H9CHNHJRATA" \
"GFF9ZZKHLDVMZNBZTFGPEN9O9PDOXGNTFOYTVGUXOMENLBRTXI9NPGCEMWZSNJAHL9ZEYLGN" \
"ZWDBB9NOMHCTFRDUAGGXAFRUVUJGSXBHOOGWPHCEQYGBISQJELNRXXFHWWPASDWTZYUUHUBQ" \
"EOFWZHYTVNPVZINNBNUSWAIZVEJJCIFZPXPYB9IZLKTQWDUCLNPIOVKBWKWSGDGYFXZLFBFF" \
"JBGODHGEIPYXVPDEEKBWOYPWZMHXBWCOCOMIFDVOQOTOMKAURJXYDCHQKBWSTXUWEWKHEGQS" \
"UUTGZUVVJCVCWTKPFWJLVBWQNOQCLRTCLNXVRIFZXMOXYEKJTKWMBXWFYFDXKI99DCVBGIMG" \
"DQKJDYJOYRPEGPJSRPXLJNJFQ9BDRODYJECNCWPSO9UZIYIGFESSLIREAHBTHLBVRAMYROIW" \
"F9BRITFZVCNAWKBNYMSYVJTGINHSPPSOK9IYWZAGHDTHNXPRRHRDWX9TLWWUPWEWFLFDBYBO" \
"MLWCDUOUWCKVCSYQPGQCXDY9JJIKYBXTMSQEIVALVZBMZRUOIAAHQZRGBPHTFCLACUA9YLJE" \
"T9VIBHVTDQRDADQTFYR9BRKCJUGCOKLXYQXIOPIOKVBHTKIBI9WXZHXKXXPDJIIEHJSYYS9I" \
"J9I9UIAJMXFYFODJPOZIMOQNAM9OYMHP99BOPTWWD9QT9CSITJUZUWZX9VFQJXY99VTL9KIW" \
"WSZQTFIKTWMNTSOCCDKVNDMTXWPPMNDUDSQCIBRJSEDRQVDQTCBDZE9LFJMOPEISTE9DIIRC" \
"WCPY9FCVLAWQAAHTPWLDPLXSJPMWTMAUKGGZMHXHODSBWKQPQWZNDWUHCWNF9PDXSGBTMNQI" \
"BLHVCHUSQYCLENFNVXYOZXFTUUKQGOGJP9M9MEMVTQE9KCNQILTCNDXQFXXFOY9PYB9FTVAB" \
"HKBUGVJHZRLOISXCSJIIFXVHJJBBOAHCGKLFRH9LONKKJZKMPGNZOAZGJLBIWRWPKFSCHESH" \
"GDLAPXCQPJZHOLMQSPNMEVLQLGMADEDHRIJQIXZVNACZGIYBYMTLDADALYLZXQGUMUVJCZDD" \
"ARPFTCMOMQGCFULDQLSACLI9YUONUWQJSRDI9NOUFRGOXQKIGNKPIEMMLCFMOGRTWUODYRUL" \
"NEKEDAUHAUTUNNMDWTTTKBCRCYMZYQIZESNOWZACHTKBRUIISOBGFZMNOC9PUSFTSWRHINPQ" \
"DCMSUEOUBPGUC9DIQ9SWPPDVGGDKZIPJGAGEOHSOBGZUMKYOLY9KTVGKWMHKNUWIQJYCPRFS" \
"BGVRKUHIW9JCQPXULPURGJQVCS9"

const flex_trit_t TRITS_81_1[] = {
76, 67, 73, 75, 89, 83, 66, 69, 57, 73, 72, 88, 76, 73, 75, 67,
69, 74, 84, 84, 73, 81, 79, 84, 84, 65, 87, 83, 81, 67, 67, 81,
Expand Down