66#include " protocol/sdk_pro.h"
77#include " shared/xml_util.h"
88
9- namespace app_sdk {
9+ namespace app_sdk
10+ {
1011const std::map<std::string, std::tuple<std::string, NimServerConfType>> key_use_nim_server_conf = {
1112 {nim::kNIMAppKey , std::make_tuple (" appkey" , NimServerConfType::NimServerConfType_String)},
1213 {nim::kNIMUseHttps , std::make_tuple (" https_enabled" , NimServerConfType::NimServerConfType_Int)},
@@ -27,50 +28,63 @@ const std::string AppSDKInterface::kAppKey = "3e215d27b6a6a9e27dad7ef36dd5b65c";
2728const std::string AppSDKInterface::kAppHost = " http://app.netease.im" ;
2829
2930std::map<std::string, std::string> AppSDKInterface::config_map_;
30- bool AppSDKInterface::HasconfigValue (const std::string& key, bool from_private_setting) {
31+ bool AppSDKInterface::HasconfigValue (const std::string &key, bool from_private_setting)
32+ {
3133 bool ret = false ;
32- if (config_map_.empty ()) {
34+ if (config_map_.empty ())
35+ {
3336 LoadConfig ();
3437 }
3538 ret = (config_map_.find (key) != config_map_.end ());
36- if (!ret && from_private_setting) {
39+ if (!ret && from_private_setting)
40+ {
3741 Json::Value json_value;
3842 if (key_use_nim_server_conf.find (key) != key_use_nim_server_conf.end () &&
39- nbase::FilePathIsExist (nbase::UTF8ToUTF16 (app_sdk::AppSDKConfig::GetInstance ()->GetAppConfigPath ()), false ) &&
40- GetNimServerConfJsonObject (std::get<0 >(key_use_nim_server_conf.find (key)->second ), json_value)) {
43+ nbase::FilePathIsExist (nbase::UTF8ToUTF16 (app_sdk::AppSDKConfig::GetInstance ()->GetAppConfigPath ()),
44+ false ) &&
45+ GetNimServerConfJsonObject (std::get<0 >(key_use_nim_server_conf.find (key)->second ), json_value))
46+ {
4147 ret = true ;
4248 }
4349 }
4450 return ret;
4551}
46- std::string AppSDKInterface::GetConfigValue (const std::string& key) {
52+ std::string AppSDKInterface::GetConfigValue (const std::string &key)
53+ {
4754 Json::Value json_value;
4855 if (key_use_nim_server_conf.find (key) != key_use_nim_server_conf.end () &&
4956 nbase::FilePathIsExist (nbase::UTF8ToUTF16 (app_sdk::AppSDKConfig::GetInstance ()->GetAppConfigPath ()), false ) &&
50- app_sdk::GetNimServerConfJsonObject (std::get<0 >(key_use_nim_server_conf.find (key)->second ), json_value)) {
57+ app_sdk::GetNimServerConfJsonObject (std::get<0 >(key_use_nim_server_conf.find (key)->second ), json_value))
58+ {
5159 auto it = key_use_nim_server_conf.find (key);
5260 return GetConfigStringValueFromNimServerConf (std::get<0 >(it->second ), std::get<1 >(it->second ));
5361 }
5462 return GetConfigValueFromMap (key);
5563}
56- std::string AppSDKInterface::GetConfigValueFromMap (const std::string& key) {
57- if (config_map_.empty ()) {
64+ std::string AppSDKInterface::GetConfigValueFromMap (const std::string &key)
65+ {
66+ if (config_map_.empty ())
67+ {
5868 LoadConfig ();
5969 }
6070 if (config_map_.find (key) != config_map_.end ())
6171 return config_map_[key];
6272 return " " ;
6373}
64- int AppSDKInterface::GetConfigFileVersion () {
74+ int AppSDKInterface::GetConfigFileVersion ()
75+ {
6576 int version = 0 ;
6677 std::string value;
6778 std::wstring server_conf_path = QPath::GetAppPath ();
6879 server_conf_path.append (L" global_conf.txt" );
6980 TiXmlDocument document;
70- if (shared::LoadXmlFromFile (document, server_conf_path)) {
71- TiXmlElement* root = document.RootElement ();
72- if (root != nullptr ) {
73- if (auto pchar = root->Attribute (" kConfVersion" )) {
81+ if (shared::LoadXmlFromFile (document, server_conf_path))
82+ {
83+ TiXmlElement *root = document.RootElement ();
84+ if (root != nullptr )
85+ {
86+ if (auto pchar = root->Attribute (" kConfVersion" ))
87+ {
7488 value = pchar;
7589 }
7690 }
@@ -79,23 +93,27 @@ int AppSDKInterface::GetConfigFileVersion() {
7993 nbase::StringToInt (value, &version);
8094 return version;
8195}
82- std::string AppSDKInterface::GetAppKey () {
96+ std::string AppSDKInterface::GetAppKey ()
97+ {
8398 std::string app_key = kAppKey ;
8499 std::string new_app_key = GetConfigValue (nim::kNIMAppKey );
85- if (!new_app_key.empty ()) {
100+ if (!new_app_key.empty ())
101+ {
86102 app_key = new_app_key;
87103 }
88104 return app_key;
89105}
90- bool AppSDKInterface::IsNimDemoAppKey (const std::string& appkey) {
106+ bool AppSDKInterface::IsNimDemoAppKey (const std::string &appkey)
107+ {
91108 static const std::string kNimTestAppKey = " fe416640c8e8a72734219e1847ad2547" ;
92109 static const std::string kNimSGAppKey = " b88e33e57c0f2a427e19db2b8461cb55" ;
93110 if (appkey.compare (kNimTestAppKey ) == 0 || appkey.compare (kAppKey ) == 0 || appkey.compare (kNimSGAppKey ) == 0 )
94111 return true ;
95112 return false ;
96113}
97114
98- bool AppSDKInterface::IsSafeUrl (const std::string& safe_url) {
115+ bool AppSDKInterface::IsSafeUrl (const std::string &safe_url)
116+ {
99117 std::string temp (safe_url);
100118 std::string params;
101119 std::vector<std::string> param_list;
@@ -104,7 +122,8 @@ bool AppSDKInterface::IsSafeUrl(const std::string& safe_url) {
104122 params = temp.substr (param_pos, temp.length ());
105123 nbase::LowerString (params);
106124 shared::tools::SplitString (params, " &" , param_list);
107- for (auto & it : param_list) {
125+ for (auto &it : param_list)
126+ {
108127 std::vector<std::string> param_pair;
109128 shared::tools::SplitString (it, " =" , param_pair);
110129 if (param_pair.empty ())
@@ -113,80 +132,128 @@ bool AppSDKInterface::IsSafeUrl(const std::string& safe_url) {
113132 }
114133 static const std::string safe_url_param_key = " _im_url" ;
115134 static const int safe_url_param_value = 0x00000001 ;
116- if (param_pair_list.find (safe_url_param_key) != param_pair_list.end ()) {
135+ if (param_pair_list.find (safe_url_param_key) != param_pair_list.end ())
136+ {
117137 return (std::atoi (param_pair_list[safe_url_param_key].c_str ()) & safe_url_param_value) == safe_url_param_value;
118138 }
119139 return false ;
120140}
121141
122- std::string AppSDKInterface::GetReferrer () {
142+ std::string AppSDKInterface::GetReferrer ()
143+ {
123144 // 开发者请根据自己实际情况来获取该域名地址
124145 return " http://yunxin_referer" ;
125146}
126147
127- std::string AppSDKInterface::GetAppHost () {
148+ std::string AppSDKInterface::GetAppHost ()
149+ {
128150 return kAppHost ;
129151}
130- void AppSDKInterface::InvokeFormatAccountAndPassword (const std::string& username,
131- const std::string& password,
132- const OnFormatAccountAndPasswordCallback& cb) {
133- // 如果是云信的demo password会进行md5编码,如果是开发者自己的应用可以引入其它方式
134- // 甚至可以转到开发者自己的应用服务器,拿到真正的accid 与password,可以异步操作,但此时 user相关数据(user目录、image目录以及日志等)并未创建
135- bool password_use_md5 = IsNimDemoAppKey (GetAppKey ());
136- if (!password_use_md5)
137- password_use_md5 = (HasconfigValue (" kNIMPasswordMD5" ) && (std::atoi (GetConfigValue (" kNIMPasswordMD5" ).c_str ()) != 0 ));
138- cb (!(username.empty () || password.empty ()), username, (password_use_md5 ? nim::Tool::GetMd5 (password) : password));
139- }
140- void AppSDKInterface::InvokeRegisterAccount (const std::string& username,
141- const std::string& password,
142- const std::string& nickname,
143- const OnRegisterAccountCallback& cb) {
144- // 在构造函数中传入请求参数
145- auto && req = app_sdk::CreateHttpRequest<app_sdk_pro::RegisterAccountReq>(username, password, nickname);
152+ void AppSDKInterface::InvokeFormatAccountAndPassword (const std::string &username, const std::string &password,
153+ const OnFormatAccountAndPasswordCallback &cb)
154+ {
155+ // 如果是云信的demo password会进行md5编码,如果是开发者自己的应用可以引入其它方式
156+ // 甚至可以转到开发者自己的应用服务器,拿到真正的accid 与password,可以异步操作,但此时
157+ // user相关数据(user目录、image目录以及日志等)并未创建
158+ cb (!(username.empty () || password.empty ()), username, password);
159+ }
160+ void AppSDKInterface::InvokeRegisterAccount (const std::string &username, const std::string &password,
161+ const std::string &nickname, const OnRegisterAccountCallback &cb)
162+ {
163+ // 在构造函数中传入请求参数
164+ auto &&req = app_sdk::CreateHttpRequest<app_sdk_pro::RegisterAccountReq>(username, password, nickname);
146165
147166 SDKManager::GetInstance ()->Invoke_Request <app_sdk_pro::RegisterAccountReq, app_sdk_pro::RegisterAccountRsp>(
148- req, ToWeakCallback ([cb](const app_sdk_pro::RegisterAccountReq& req, const app_sdk_pro::RegisterAccountRsp& rsp) {
149- if (cb != nullptr ) {
150- cb ((rsp->GetResponseCode () == nim::kNIMResSuccess ? rsp->GetProtocolReplyCode () : rsp->GetResponseCode ()), rsp->err_msg_ );
167+ req,
168+ ToWeakCallback ([cb](const app_sdk_pro::RegisterAccountReq &req, const app_sdk_pro::RegisterAccountRsp &rsp) {
169+ if (cb != nullptr )
170+ {
171+ cb ((rsp->GetResponseCode () == nim::kNIMResSuccess ? rsp->GetProtocolReplyCode ()
172+ : rsp->GetResponseCode ()),
173+ rsp->err_msg_ );
151174 }
152175 }));
153176}
154- void AppSDKInterface::InvokeGetChatroomList (const OnGetChatroomListCallback& cb) {
155- auto && req = app_sdk::CreateHttpRequest<app_sdk_pro::GetChatroomListReq>();
177+ void AppSDKInterface::InvokeGetChatroomList (const OnGetChatroomListCallback &cb)
178+ {
179+ auto &&req = app_sdk::CreateHttpRequest<app_sdk_pro::GetChatroomListReq>();
156180 SDKManager::GetInstance ()->Invoke_Request <app_sdk_pro::GetChatroomListReq, app_sdk_pro::GetChatroomListRsp>(
157- req, ToWeakCallback ([cb](const app_sdk_pro::GetChatroomListReq& req, const app_sdk_pro::GetChatroomListRsp& rsp) {
158- if (cb != nullptr ) {
159- cb ((rsp->GetResponseCode () == nim::kNIMResSuccess ? rsp->GetProtocolReplyCode () : rsp->GetResponseCode ()), rsp->chatroom_list_ );
181+ req,
182+ ToWeakCallback ([cb](const app_sdk_pro::GetChatroomListReq &req, const app_sdk_pro::GetChatroomListRsp &rsp) {
183+ if (cb != nullptr )
184+ {
185+ cb ((rsp->GetResponseCode () == nim::kNIMResSuccess ? rsp->GetProtocolReplyCode ()
186+ : rsp->GetResponseCode ()),
187+ rsp->chatroom_list_ );
160188 }
161189 }));
162190}
163- void AppSDKInterface::InvokeGetChatroomAddress (__int64 room_id, const std::string& uid, int type, const OnGetChatroomAddressCallback& cb) {
164- auto && req = app_sdk::CreateHttpRequest<app_sdk_pro::GetChatroomAddressReq>();
191+ void AppSDKInterface::InvokeGetChatroomAddress (__int64 room_id, const std::string &uid, int type,
192+ const OnGetChatroomAddressCallback &cb)
193+ {
194+ auto &&req = app_sdk::CreateHttpRequest<app_sdk_pro::GetChatroomAddressReq>();
165195 req->room_id_ = room_id;
166196 req->type_ = type;
167197 req->uid_ = uid;
168198 SDKManager::GetInstance ()->Invoke_Request <app_sdk_pro::GetChatroomAddressReq, app_sdk_pro::GetChatroomAddressRsp>(
169- req, ToWeakCallback ([cb](const app_sdk_pro::GetChatroomAddressReq& req, const app_sdk_pro::GetChatroomAddressRsp& rsp) {
170- if (cb != nullptr ) {
171- cb ((rsp->GetResponseCode () == nim::kNIMResSuccess ? rsp->GetProtocolReplyCode () : rsp->GetResponseCode ()), rsp->address_ );
172- }
173- }));
199+ req, ToWeakCallback (
200+ [cb](const app_sdk_pro::GetChatroomAddressReq &req, const app_sdk_pro::GetChatroomAddressRsp &rsp) {
201+ if (cb != nullptr )
202+ {
203+ cb ((rsp->GetResponseCode () == nim::kNIMResSuccess ? rsp->GetProtocolReplyCode ()
204+ : rsp->GetResponseCode ()),
205+ rsp->address_ );
206+ }
207+ }));
174208}
175- void AppSDKInterface::LoadConfig () {
209+ void AppSDKInterface::LoadConfig ()
210+ {
176211 config_map_.clear ();
177212 std::wstring server_conf_path = QPath::GetAppPath ();
178213 server_conf_path.append (L" global_conf.txt" );
179214 TiXmlDocument document;
180- if (shared::LoadXmlFromFile (document, server_conf_path)) {
181- TiXmlElement* root = document.RootElement ();
215+ if (shared::LoadXmlFromFile (document, server_conf_path))
216+ {
217+ TiXmlElement *root = document.RootElement ();
182218 auto attribute = root->FirstAttribute ();
183- while (attribute != nullptr ) {
219+ while (attribute != nullptr )
220+ {
184221 config_map_[attribute->Name ()] = attribute->Value ();
185222 attribute = attribute->Next ();
186223 }
187224 }
188- if (config_map_.empty ()) {
225+ if (config_map_.empty ())
226+ {
189227 config_map_[" nim_global_conf_error" ] = " nim_global_conf_error" ;
190228 }
191229}
192- } // namespace app_sdk
230+
231+ void AppSDKInterface::InvokeSendSmsCode (const std::string &mobile, const OnSendSmsCodeCallback &cb)
232+ {
233+ auto &&req = app_sdk::CreateHttpRequest<app_sdk_pro::SendSmsCodeReq>(mobile);
234+ SDKManager::GetInstance ()->Invoke_Request <app_sdk_pro::SendSmsCodeReq, app_sdk_pro::SendSmsCodeRsp>(
235+ req, ToWeakCallback ([cb](const app_sdk_pro::SendSmsCodeReq &req, const app_sdk_pro::SendSmsCodeRsp &rsp) {
236+ if (cb != nullptr )
237+ {
238+ cb ((rsp->GetResponseCode () == nim::kNIMResSuccess ? rsp->GetProtocolReplyCode ()
239+ : rsp->GetResponseCode ()),
240+ rsp->is_first_register_ , rsp->request_id_ , rsp->err_msg_ );
241+ }
242+ }));
243+ }
244+
245+ void AppSDKInterface::InvokeLoginByCode (const std::string &mobile, const std::string &sms_code,
246+ const OnLoginByCodeCallback &cb)
247+ {
248+ auto &&req = app_sdk::CreateHttpRequest<app_sdk_pro::LoginByCodeReq>(mobile, sms_code);
249+ SDKManager::GetInstance ()->Invoke_Request <app_sdk_pro::LoginByCodeReq, app_sdk_pro::LoginByCodeRsp>(
250+ req, ToWeakCallback ([cb](const app_sdk_pro::LoginByCodeReq &req, const app_sdk_pro::LoginByCodeRsp &rsp) {
251+ if (cb != nullptr )
252+ {
253+ cb ((rsp->GetResponseCode () == nim::kNIMResSuccess ? rsp->GetProtocolReplyCode ()
254+ : rsp->GetResponseCode ()),
255+ rsp->result_ .im_accid , rsp->result_ .im_token , rsp->request_id_ , rsp->err_msg_ );
256+ }
257+ }));
258+ }
259+ } // namespace app_sdk
0 commit comments