From 8958eaa2b51b1203d406009495774b56d20d5f83 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 12 Oct 2016 10:26:04 +0200 Subject: [PATCH] Updated account creator to use language and domain parameters --- coreapi/account_creator.c | 18 ++++++++++++++++++ coreapi/account_creator.h | 7 +++++++ coreapi/linphonecore_jni.cc | 8 ++++++++ coreapi/private.h | 1 + .../linphone/core/LinphoneAccountCreator.java | 2 ++ .../core/LinphoneAccountCreatorImpl.java | 6 ++++++ 6 files changed, 42 insertions(+) diff --git a/coreapi/account_creator.c b/coreapi/account_creator.c index 4136de229..33af3da87 100644 --- a/coreapi/account_creator.c +++ b/coreapi/account_creator.c @@ -146,6 +146,7 @@ static void _linphone_account_creator_destroy(LinphoneAccountCreator *creator) { if (creator->display_name) ms_free(creator->display_name); if (creator->phone_country_code) ms_free(creator->phone_country_code); if (creator->activation_code) ms_free(creator->activation_code); + if (creator->language) ms_free(creator->language); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(LinphoneAccountCreator); @@ -374,6 +375,11 @@ LinphoneAccountCreatorStatus linphone_account_creator_set_activation_code(Linpho return LinphoneAccountCreatorOK; } +LinphoneAccountCreatorStatus linphone_account_creator_set_language(LinphoneAccountCreator *creator, const char *lang) { + set_string(&creator->language, lang, FALSE); + return LinphoneAccountCreatorOK; +} + LinphoneAccountCreatorStatus linphone_account_creator_set_transport(LinphoneAccountCreator *creator, LinphoneTransportType transport){ if (!linphone_core_sip_transport_supported(creator->core, transport)) { return LinphoneAccountCreatorTransportNotSupported; @@ -528,6 +534,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_is_account_used(LinphoneAc request = linphone_xml_rpc_request_new_with_args("get_phone_number_for_account", LinphoneXmlRpcArgString, LinphoneXmlRpcArgString, creator->username ? creator->username : creator->phone_number, + LinphoneXmlRpcArgString, creator->domain, LinphoneXmlRpcArgNone); linphone_xml_rpc_request_set_user_data(request, creator); @@ -562,6 +569,8 @@ static LinphoneXmlRpcRequest * _create_account_with_phone(LinphoneAccountCreator LinphoneXmlRpcArgString, creator->username ? creator->username : creator->phone_number, LinphoneXmlRpcArgString, creator->password ? ha1_for_passwd(creator->username ? creator->username : creator->phone_number, creator->password, creator->domain) : "", LinphoneXmlRpcArgString, linphone_core_get_user_agent(creator->core), + LinphoneXmlRpcArgString, creator->domain, + LinphoneXmlRpcArgString, creator->language, LinphoneXmlRpcArgNone); return request; } @@ -576,6 +585,7 @@ static LinphoneXmlRpcRequest * _create_account_with_email(LinphoneAccountCreator LinphoneXmlRpcArgString, creator->email, LinphoneXmlRpcArgString, ha1_for_passwd(creator->username ? creator->username : creator->phone_number, creator->password, creator->domain), LinphoneXmlRpcArgString, linphone_core_get_user_agent(creator->core), + LinphoneXmlRpcArgString, creator->domain, LinphoneXmlRpcArgNone); return request; } @@ -636,11 +646,13 @@ LinphoneAccountCreatorStatus linphone_account_creator_activate_account(LinphoneA LinphoneXmlRpcArgString, creator->phone_number, LinphoneXmlRpcArgString, creator->username ? creator->username : creator->phone_number, LinphoneXmlRpcArgString, creator->activation_code, + LinphoneXmlRpcArgString, creator->domain, LinphoneXmlRpcArgNone); } else { request = linphone_xml_rpc_request_new_with_args("activate_email_account", LinphoneXmlRpcArgString, LinphoneXmlRpcArgString, creator->username, LinphoneXmlRpcArgString, creator->activation_code, + LinphoneXmlRpcArgString, creator->domain, LinphoneXmlRpcArgNone); } linphone_xml_rpc_request_set_user_data(request, creator); @@ -676,6 +688,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_is_account_activated(Linph } request = linphone_xml_rpc_request_new_with_args("is_account_activated", LinphoneXmlRpcArgString, LinphoneXmlRpcArgString, creator->username ? creator->username : creator->phone_number, + LinphoneXmlRpcArgString, creator->domain, LinphoneXmlRpcArgNone); linphone_xml_rpc_request_set_user_data(request, creator); linphone_xml_rpc_request_cbs_set_response(linphone_xml_rpc_request_get_callbacks(request), _is_account_activated_cb); @@ -749,6 +762,8 @@ LinphoneAccountCreatorStatus linphone_account_creator_link_phone_number_with_acc request = linphone_xml_rpc_request_new_with_args("link_phone_number_with_account", LinphoneXmlRpcArgString, LinphoneXmlRpcArgString, creator->phone_number, LinphoneXmlRpcArgString, creator->username, + LinphoneXmlRpcArgString, creator->domain, + LinphoneXmlRpcArgString, creator->language, LinphoneXmlRpcArgNone); linphone_xml_rpc_request_set_user_data(request, creator); linphone_xml_rpc_request_cbs_set_response(linphone_xml_rpc_request_get_callbacks(request), _link_phone_number_with_account_cb); @@ -814,6 +829,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_activate_phone_number_link LinphoneXmlRpcArgString, creator->username, LinphoneXmlRpcArgString, creator->activation_code, LinphoneXmlRpcArgString, creator->ha1 ? creator->ha1 : ha1_for_passwd(creator->username, creator->domain, creator->password), + LinphoneXmlRpcArgString, creator->domain, LinphoneXmlRpcArgNone); linphone_xml_rpc_request_set_user_data(request, creator); linphone_xml_rpc_request_cbs_set_response(linphone_xml_rpc_request_get_callbacks(request), _activate_phone_number_link_cb); @@ -851,6 +867,8 @@ LinphoneAccountCreatorStatus linphone_account_creator_recover_phone_account(Linp } request = linphone_xml_rpc_request_new_with_args("recover_phone_account", LinphoneXmlRpcArgString, LinphoneXmlRpcArgString, creator->phone_number, + LinphoneXmlRpcArgString, creator->domain, + LinphoneXmlRpcArgString, creator->language, LinphoneXmlRpcArgNone); linphone_xml_rpc_request_set_user_data(request, creator); linphone_xml_rpc_request_cbs_set_response(linphone_xml_rpc_request_get_callbacks(request), _recover_phone_account_cb); diff --git a/coreapi/account_creator.h b/coreapi/account_creator.h index 1ce03f265..9651118b0 100644 --- a/coreapi/account_creator.h +++ b/coreapi/account_creator.h @@ -196,6 +196,13 @@ LINPHONE_PUBLIC const char * linphone_account_creator_get_ha1(const LinphoneAcco **/ LINPHONE_PUBLIC LinphoneAccountCreatorStatus linphone_account_creator_set_activation_code(LinphoneAccountCreator *creator, const char *activation_code); +/** + * Set the language to use in email or SMS if supported. + * @param[in] creator LinphoneAccountCreator object + * @param[in] activation_code The language code to use +**/ +LINPHONE_PUBLIC LinphoneAccountCreatorStatus linphone_account_creator_set_language(LinphoneAccountCreator *creator, const char *lang); + /** * Set the transport. * @param[in] creator LinphoneAccountCreator object diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 64fd8baa9..30b7098a0 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -8285,6 +8285,14 @@ extern "C" jint Java_org_linphone_core_LinphoneAccountCreatorImpl_setActivationC return (jint) status; } +extern "C" jint Java_org_linphone_core_LinphoneAccountCreatorImpl_setLanguage(JNIEnv *env, jobject thiz, jlong ptr, jstring jlang) { + const char *lang = GetStringUTFChars(env, jlang); + LinphoneAccountCreator *account_creator = (LinphoneAccountCreator *)ptr; + LinphoneAccountCreatorStatus status = linphone_account_creator_set_language(account_creator, lang); + ReleaseStringUTFChars(env, jlang, lang); + return (jint) status; +} + extern "C" jint Java_org_linphone_core_LinphoneAccountCreatorImpl_setTransport(JNIEnv *env, jobject thiz, jlong ptr, jint jtransport) { LinphoneAccountCreator *account_creator = (LinphoneAccountCreator *)ptr; LinphoneAccountCreatorStatus status = linphone_account_creator_set_transport(account_creator, (LinphoneTransportType)jtransport); diff --git a/coreapi/private.h b/coreapi/private.h index c5ed6a196..d22658dd9 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -1362,6 +1362,7 @@ struct _LinphoneAccountCreator { char *activation_code; char *ha1; char *phone_country_code; + char *language; }; BELLE_SIP_DECLARE_VPTR(LinphoneAccountCreator); diff --git a/java/common/org/linphone/core/LinphoneAccountCreator.java b/java/common/org/linphone/core/LinphoneAccountCreator.java index 0fdc329ce..d39712239 100644 --- a/java/common/org/linphone/core/LinphoneAccountCreator.java +++ b/java/common/org/linphone/core/LinphoneAccountCreator.java @@ -114,6 +114,8 @@ public interface LinphoneAccountCreator { String getHa1(); Status setActivationCode(String activationCode); + + Status setLanguage(String lang); Status setTransport(TransportType transport); diff --git a/java/impl/org/linphone/core/LinphoneAccountCreatorImpl.java b/java/impl/org/linphone/core/LinphoneAccountCreatorImpl.java index 8bc9d6c7c..b632199ed 100644 --- a/java/impl/org/linphone/core/LinphoneAccountCreatorImpl.java +++ b/java/impl/org/linphone/core/LinphoneAccountCreatorImpl.java @@ -100,6 +100,12 @@ public class LinphoneAccountCreatorImpl implements LinphoneAccountCreator { return Status.fromInt(setActivationCode(nativePtr, activationCode)); } + private native int setLanguage(long ptr, String lang); + @Override + public Status setLanguage(String lang) { + return Status.fromInt(setLanguage(nativePtr, lang)); + } + private native int setTransport(long ptr, int transport); @Override public Status setTransport(TransportType transport) {