static void _validate_cb(LinphoneXmlRpcRequest *request) { LinphoneAccountCreator *creator = (LinphoneAccountCreator *)linphone_xml_rpc_request_get_user_data(request); if (creator->callbacks->validated != NULL) { LinphoneAccountCreatorStatus status = LinphoneAccountCreatorFailed; if ((linphone_xml_rpc_request_get_status(request) == LinphoneXmlRpcStatusOk) && (linphone_xml_rpc_request_get_int_response(request) == 0)) { status = LinphoneAccountCreatorOk; } creator->callbacks->validated(creator, status); } }
static void _create_account_cb(LinphoneXmlRpcRequest *request) { LinphoneAccountCreator *creator = (LinphoneAccountCreator *)linphone_xml_rpc_request_get_user_data(request); if (creator->callbacks->create_account != NULL) { LinphoneAccountCreatorStatus status = LinphoneAccountCreatorReqFailed; if (linphone_xml_rpc_request_get_status(request) == LinphoneXmlRpcStatusOk) { int resp = linphone_xml_rpc_request_get_int_response(request); status = (resp == 0) ? LinphoneAccountCreatorAccountCreated : LinphoneAccountCreatorAccountNotCreated; } creator->callbacks->create_account(creator, status); } }
/****************** START OF ACTIVE PHONE NUMBER LINK **************************/ static void _recover_phone_account_cb(LinphoneXmlRpcRequest *request) { LinphoneAccountCreator *creator = (LinphoneAccountCreator *)linphone_xml_rpc_request_get_user_data(request); if (creator->callbacks->recover_phone_account != NULL) { LinphoneAccountCreatorStatus status = LinphoneAccountCreatorReqFailed; if (linphone_xml_rpc_request_get_status(request) == LinphoneXmlRpcStatusOk) { const char* resp = linphone_xml_rpc_request_get_string_response(request); status = (strstr(resp, "ERROR_") == resp) ? LinphoneAccountCreatorReqFailed : LinphoneAccountCreatorOK; } creator->callbacks->recover_phone_account(creator, status); } }
/****************** START OF LINK PHONE NUMBER WITH ACCOUNT SECTION ***********/ static void _link_phone_number_with_account_cb(LinphoneXmlRpcRequest *request) { LinphoneAccountCreator *creator = (LinphoneAccountCreator *)linphone_xml_rpc_request_get_user_data(request); if (creator->callbacks->link_phone_number_with_account != NULL) { LinphoneAccountCreatorStatus status = LinphoneAccountCreatorReqFailed; if (linphone_xml_rpc_request_get_status(request) == LinphoneXmlRpcStatusOk) { const char* resp = linphone_xml_rpc_request_get_string_response(request); status = (strcmp(resp, "OK") == 0) ? LinphoneAccountCreatorOK : LinphoneAccountCreatorReqFailed; } creator->callbacks->link_phone_number_with_account(creator, status); } }
/****************** START OF ACCOUNT VALIDATED SECTION ************************/ static void _is_account_activated_cb(LinphoneXmlRpcRequest *request) { LinphoneAccountCreator *creator = (LinphoneAccountCreator *)linphone_xml_rpc_request_get_user_data(request); if (creator->callbacks->is_account_activated != NULL) { LinphoneAccountCreatorStatus status = LinphoneAccountCreatorReqFailed; if (linphone_xml_rpc_request_get_status(request) == LinphoneXmlRpcStatusOk) { const char* resp = linphone_xml_rpc_request_get_string_response(request); status = (strcmp(resp, "OK") == 0) ? LinphoneAccountCreatorAccountActivated : LinphoneAccountCreatorAccountNotActivated; } creator->callbacks->is_account_activated(creator, status); } }
/****************** START OF ACCOUNT USED SECTION *****************************/ static void _is_account_used_cb(LinphoneXmlRpcRequest *request) { LinphoneAccountCreator *creator = (LinphoneAccountCreator *)linphone_xml_rpc_request_get_user_data(request); if (creator->callbacks->is_account_used != NULL) { LinphoneAccountCreatorStatus status = LinphoneAccountCreatorReqFailed; if (linphone_xml_rpc_request_get_status(request) == LinphoneXmlRpcStatusOk) { const char* resp = linphone_xml_rpc_request_get_string_response(request); status = (strcmp(resp, "ERROR_ACCOUNT_DOESNT_EXIST") == 0) ? LinphoneAccountCreatorAccountNotExist : ( (strcmp(resp, "ERROR_ALIAS_DOESNT_EXIST") == 0) ? LinphoneAccountCreatorAccountExist : LinphoneAccountCreatorAccountExistWithAlias); if (status == LinphoneAccountCreatorAccountExistWithAlias) { set_string(&creator->phone_number, resp, FALSE); } } creator->callbacks->is_account_used(creator, status); } }
/****************** START OF VALIDATE ACCOUNT SECTION *************************/ static void _activate_account_cb(LinphoneXmlRpcRequest *request) { LinphoneAccountCreator *creator = (LinphoneAccountCreator *)linphone_xml_rpc_request_get_user_data(request); if (creator->callbacks->activate_account != NULL) { LinphoneAccountCreatorStatus status = LinphoneAccountCreatorReqFailed; if (linphone_xml_rpc_request_get_status(request) == LinphoneXmlRpcStatusOk) { const char* resp = linphone_xml_rpc_request_get_string_response(request); if (strcmp(resp, "ERROR_ACCOUNT_ALREADY_ACTIVATED") == 0) { status = LinphoneAccountCreatorAccountAlreadyActivated; } else if (strstr(resp, "ERROR_") == resp) { status = LinphoneAccountCreatorAccountNotActivated; } else { status = LinphoneAccountCreatorAccountActivated; set_string(&creator->ha1, resp, FALSE); } } creator->callbacks->activate_account(creator, status); } }