diff --git a/libmobile_hilink.c b/libmobile_hilink.c index b2a9a7eebe7568ac1b684c60c1530a8af018813a..2ed6efcb8ab3bb4c1507ad2af016812f61cf2fb7 100644 --- a/libmobile_hilink.c +++ b/libmobile_hilink.c @@ -284,72 +284,243 @@ leave: struct json_object *mobile_get_device_info_hilink() { char *api_url = "http://192.168.8.1/api/device/information"; + struct write_result *result; + struct json_object *result_json; + + result = get_request(home_url, api_url); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); - return get_request(home_url, api_url); + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } struct json_object *mobile_get_monitoring_status_hilink() { char *api_url = "http://192.168.8.1/api/monitoring/status"; + struct write_result *result; + struct json_object *result_json; + + result = get_request(home_url, api_url); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; - return get_request(home_url, api_url); +fail_converter: + free(result); +fail_result: + return NULL; } struct json_object *mobile_get_trafficstatistics_hilink() { char *api_url = "http://192.168.8.1/api/monitoring/traffic-statistics"; + struct write_result *result; + struct json_object *result_json; + + result = get_request(home_url, api_url); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; - return get_request(home_url, api_url); + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } struct json_object *mobile_get_provider_hilink() { char *api_url = "http://192.168.8.1/api/net/current-plmn"; + struct write_result *result; + struct json_object *result_json; + + result = get_request(home_url, api_url); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); - return get_request(home_url, api_url); + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } struct json_object *mobile_get_pin_status_hilink() { char *api_url = "http://192.168.8.1/api/pin/status"; + struct write_result *result; + struct json_object *result_json; + + result = get_request(home_url, api_url); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); - return get_request(home_url, api_url); + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } struct json_object *mobile_get_connection_status_hilink() { char *api_url = "http://192.168.8.1/api/dialup/connection"; + struct write_result *result; + struct json_object *result_json; - return get_request(home_url, api_url); + result = get_request(home_url, api_url); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } struct json_object *mobile_get_apn_profiles_hilink() { char *api_url = "http://192.168.8.1/api/dialup/profiles"; + struct write_result *result; + struct json_object *result_json; + + result = get_request(home_url, api_url); + if (!result) + goto fail_result; - return get_request(home_url, api_url); + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } struct json_object *mobile_get_notification_hilink() { char *api_url = "http://192.168.8.1/api/monitoring/check-notifications"; + struct write_result *result; + struct json_object *result_json; + + result = get_request(home_url, api_url); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); - return get_request(home_url, api_url); + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } struct json_object *mobile_get_sms_count_hilink() { char *api_url = "http://192.168.8.1/api/sms/sms-count"; + struct write_result *result; + struct json_object *result_json; + + result = get_request(home_url, api_url); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; - return get_request(home_url, api_url); +fail_converter: + free(result); +fail_result: + return NULL; } @@ -357,12 +528,26 @@ struct json_object *mobile_get_language_hilink() { char *api_url = "http://192.168.8.1/api/language/current-language"; struct write_result *result; + struct json_object *result_json; result = get_request(home_url, api_url); + if (!result) + goto fail_result; debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); - return xml_to_json_converter(result); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } /* post calls */ @@ -370,10 +555,28 @@ struct json_object *mobile_create_apn_profile_hilink(char *name, char *apn_name, { char *api_url = "http://192.168.8.1/api/dialup/profiles"; char post_query[1024]; + struct write_result *result; + struct json_object *result_json; snprintf(post_query, 1023, "<request><Delete>0</Delete><SetDefault>0</SetDefault><Modify>1</Modify><Profile><Index></Index><IsValid>1</IsValid><Name>%s</Name><ApnIsStatic>1</ApnIsStatic><ApnName>%s</ApnName><DialupNum>*99#</DialupNum><Username>%s</Username><Password>%s</Password><AuthMode>0</AuthMode><IpIsStatic></IpIsStatic><IpAddress></IpAddress><DnsIsStatic></DnsIsStatic><PrimaryDns></PrimaryDns><SecondaryDns></SecondaryDns><ReadOnly>0</ReadOnly><iptype>2</iptype></Profile></request>", name, apn_name, username, password); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -381,10 +584,28 @@ struct json_object *mobile_set_apn_profile_default_hilink(char *name, char *apn_ { char *api_url = "http://192.168.8.1/api/dialup/profiles"; char post_query[1024]; + struct write_result *result; + struct json_object *result_json; snprintf(post_query, 1023, "<request><Delete>0</Delete><SetDefault>3</SetDefault><Modify>2</Modify><Profile><Index>3</Index><IsValid>1</IsValid><Name>%s</Name><ApnIsStatic>1</ApnIsStatic><ApnName>%s</ApnName><DialupNum>*99#</DialupNum><Username>%s</Username><Password>%s</Password><AuthMode>0</AuthMode><IpIsStatic>0</IpIsStatic><IpAddress></IpAddress><DnsIsStatic>0</DnsIsStatic><PrimaryDns></PrimaryDns><SecondaryDns></SecondaryDns><ReadOnly>0</ReadOnly><iptype>0</iptype></Profile></request>", name, apn_name, username, password); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -392,10 +613,28 @@ struct json_object *mobile_delete_apn_profile_hilink(int profile_name_location) { char *api_url = "http://192.168.8.1/api/dialup/profiles"; char post_query[512]; + struct write_result *result; + struct json_object *result_json; sprintf(post_query, "<request><Delete>%d</Delete><SetDefault>1</SetDefault><Modify>0</Modify></request>", profile_name_location); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -403,10 +642,28 @@ struct json_object *mobile_sms_read_hilink(int sms_location) { char *api_url = "http://192.168.8.1/api/sms/set-read"; char post_query[256]; + struct write_result *result; + struct json_object *result_json; sprintf(post_query, "<request><Index>%d</Index></request>", sms_location); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -414,10 +671,28 @@ struct json_object *mobile_sms_delete_hilink(int sms_location) { char *api_url = "http://192.168.8.1/api/sms/delete-sms"; char post_query[256]; + struct write_result *result; + struct json_object *result_json; sprintf(post_query, "<request><Index>%d</Index></request>", sms_location); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -425,8 +700,26 @@ struct json_object *mobile_reset_traffic_hilink() { char *api_url = "http://192.168.8.1/api/monitoring/clear-traffic"; char *post_query = "<request><ClearTraffic>1</ClearTraffic></request>"; + struct write_result *result; + struct json_object *result_json; + + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; - return post_request(sess_tok_url, api_url, post_query); + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } /* mobile_LTE_register has to be called to enbale or disable LTE */ @@ -434,8 +727,26 @@ struct json_object *mobile_LTE_register_hilink() { char *api_url = "http://192.168.8.1/api/net/register"; char *post_query = "<request><Mode>0</Mode><Plmn></Plmn><Rat></Rat></request>"; + struct write_result *result; + struct json_object *result_json; + + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; - return post_request(sess_tok_url, api_url, post_query); + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -443,8 +754,26 @@ struct json_object *mobile_LTE_enable_hilink() { char *api_url = "http://192.168.8.1/api/net/net-mode"; char *post_query = "<request><NetworkMode>00</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>7FFFFFFFFFFFFFFF</LTEBand></request>"; + struct write_result *result; + struct json_object *result_json; + + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); - return post_request(sess_tok_url, api_url, post_query); + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -452,8 +781,26 @@ struct json_object *mobile_LTE_disable_hilink() { char *api_url = "http://192.168.8.1/api/net/net-mode"; char *post_query = "<NetworkMode>0201</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>7FFFFFFFFFFFFFFF</LTEBand></request>"; + struct write_result *result; + struct json_object *result_json; + + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); - return post_request(sess_tok_url, api_url, post_query); + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -462,10 +809,28 @@ struct json_object *mobile_set_connection_type_hilink(int connection_type) { char *api_url = "http://192.168.8.1/api/dialup/connection"; char post_query[256]; + struct write_result *result; + struct json_object *result_json; sprintf(post_query, "<request><NetworkMode>%d</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>7FFFFFFFFFFFFFFF</LTEBand></request>", connection_type); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -473,10 +838,28 @@ struct json_object *data_roaming(int action) { char *api_url = "http://192.168.8.1/api/dialup/connection"; char post_query[256]; + struct write_result *result; + struct json_object *result_json; sprintf(post_query, "<request><RoamAutoConnectEnable>%d</RoamAutoConnectEnable><MaxIdelTime>600</MaxIdelTime><ConnectMode>0</ConnectMode><MTU>1500</MTU><auto_dial_switch>1</auto_dial_switch><pdp_always_on>0</pdp_always_on></request>", action); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -496,10 +879,28 @@ struct json_object *pin_action(char *type, char *current_pin, char *new_pin, cha { char *api_url = "http://192.168.8.1/api/pin/operate"; char post_query[256]; + struct write_result *result; + struct json_object *result_json; sprintf(post_query, "<request><OperateType>%s</OperateType><CurrentPin>%s</CurrentPin><NewPin>%s</NewPin><PukCode>%s</PukCode></request>", type, current_pin, new_pin, puk); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; } @@ -525,8 +926,27 @@ struct json_object *mobile_set_language_hilink(char *language_name) { char *api_url = "http://192.168.8.1/api/language/current-language"; char post_query[128]; + struct write_result *result; + struct json_object *result_json; snprintf(post_query, 128, "<request><CurrentLanguage>%s</CurrentLanguage></request>", language_name); - return post_request(sess_tok_url, api_url, post_query); + result = post_request(sess_tok_url, api_url, post_query); + if (!result) + goto fail_result; + + debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result))); + result_json = xml_to_json_converter(result); + if(!result_json) + goto fail_converter; + + if (result) + free(result); + + return result_json; + +fail_converter: + free(result); +fail_result: + return NULL; }