lib/imperituroard/projects/iot.rb in imperituroard-1.0.3 vs lib/imperituroard/projects/iot.rb in imperituroard-1.0.4
- old
+ new
@@ -152,28 +152,25 @@
model_data[:body]["ManufacturerID"],
model_data[:body]["ManufacturerNAME"],
model_data[:body]["model"]
)
if resss[:code]=="200"
-
if resss[:body].key?("error_code") && resss[:body]["error_code"] != 200
not_processed_list.append({:imei => aaa["imei"], :error => resss})
else
s1 = aaa
s1[:huadata] = resss
s1[:created] = DateTime.now
+ s1[:type] = s1["device_type"]
added_on_iot_platf.append(s1)
end
-
else
not_processed_list.append({:imei => aaa["imei"], :error => resss})
end
rescue
not_processed_list.append({:imei => aaa["imei"], :error => "Unknown error with insertion imei on IOT platform"})
end
-
-
#########end iot platform logic#######
else
resss_err = {:code => 400, :result => "IOT platform credentials not found"}
not_processed_list.append({:imei => aaa["imei"], :error => resss_err})
@@ -185,20 +182,16 @@
mongo_client.imei_insert_list(added_on_iot_platf)
resp_out = {:code => 200, :result => "Data processed", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
else
resp_out = {:code => 202, :result => "Empty list. Nothing for insertion", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
end
-
-
else
resp_out = {:code => 202, :result => "Nothing for insertion", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
-
end
rescue
resp_out = {:code => 505, :result => "Error with database communication"}
end
-
else
resp_out = {:code => 509, :result => "Input data invalid"}
end
end
rescue
@@ -684,13 +677,11 @@
end
resp_out = {:code => 200, :result => "Request completed successfully", :body => {:imei_processed => processed, :error_list => not_processed}}
else
resp_out = {:code => 509, :result => "Input data invalid"}
end
-
end
-
rescue
resp_out = {:code => 507, :result => "Unknown SDK error"}
end
thr6.join
mongo_client.audit_logger("device_remove", remote_ip, input_json, resp_out, real_ip)
@@ -969,139 +960,162 @@
processed_list = []
inp_login = soapgw_params["autorization"]["login"]
inp_dev_list = soapgw_params["datalist"]
- inp_dev_list.each do |curr_dev|
- begin
- if curr_dev["imei"] != [] && curr_dev["imei"] != nil && curr_dev["imei"] != ""
- list_checked = mongo_client.check_imei_exists([curr_dev["imei"].to_i])
- if list_checked[:code] == 200 && list_checked[:body][:exists] != [] && list_checked[:body][:not_exists] == []
+ thr13set = Thread.new do
+ inp_dev_list.each do |curr_dev|
+ begin
+ if curr_dev["imei"] != [] && curr_dev["imei"] != nil && curr_dev["imei"] != ""
+ list_checked = mongo_client.check_imei_exists([curr_dev["imei"].to_i])
+ if list_checked[:code] == 200 && list_checked[:body][:exists] != [] && list_checked[:body][:not_exists] == []
- #step1 checking permission for writing for imei list
- prof_name1 = mongo_client.get_profile_name_from_imei(curr_dev["imei"].to_i)
- if prof_name1[:code] == 200
+ #step1 checking permission for writing for imei list
+ prof_name1 = mongo_client.get_profile_name_from_imei(curr_dev["imei"].to_i)
+ p prof_name1
+ p "prof_name1"
+ if prof_name1[:code] == 200
- if curr_dev["new_profile"] != "nil" && curr_dev["new_profile"] != "null" && curr_dev["new_profile"] != "empty"
- prof_new_id = mongo_client.get_profile_universal(curr_dev["new_profile"])["profile_id"]
- else
- prof_new_id = prof_name1[:body]["profile_id"]
- end
+ if curr_dev["new_profile"] != "nil" && curr_dev["new_profile"] != "null" && curr_dev["new_profile"] != "empty" && curr_dev["new_profile"] != "nill"
+ prof_new_id = mongo_client.get_profile_universal(curr_dev["new_profile"])["profile_id"]
+ else
+ prof_new_id = prof_name1[:body]["profile_id"]
+ end
+ if curr_dev["new_type"] != "nil" && curr_dev["new_type"] != "null" && curr_dev["new_type"] != "empty" && curr_dev["new_type"] != "nill"
+ type_new_pr = curr_dev["new_type"]
+ else
+ type_new_pr = prof_name1[:imei_info][:body][0]["device_type"]
+ end
- if curr_dev["new_type"] != "nil" && curr_dev["new_type"] != "null" && curr_dev["new_type"] != "empty"
- type_new_pr = curr_dev["new_type"]
- else
- type_new_pr = prof_name1[:imei_info][:body][0]["device_type"]
- end
+ p type_new_pr
+ p prof_new_id
+ p "st111111"
+ get_login_info = mongo_client.check_login_prof_perm_id_one(inp_login, prof_name1[:body]["profile_id"])
+ p get_login_info
+ p "get_login_info"
+ if get_login_info[:code] == 200
+ get_login_info_new = mongo_client.check_login_prof_perm_id_one(inp_login, prof_new_id)
+ p get_login_info_new
+ p "get_login_info_new"
+ if get_login_info_new[:code] == 200
+ cur_comp1 = mongo_client.compare_profiles(prof_name1[:body]["profile_id"], prof_new_id)
+ p cur_comp1
+ p "cur_comp1"
+ cur_comp2 = mongo_client.compare_device_types(prof_name1[:imei_info][:body][0]["type"], type_new_pr)
- get_login_info = mongo_client.check_login_prof_perm_id_one(inp_login, prof_name1[:body]["profile_id"])
- if get_login_info[:code] == 200
- get_login_info_new = mongo_client.check_login_prof_perm_id_one(inp_login, prof_new_id)
- if get_login_info_new[:code] == 200
- cur_comp1 = mongo_client.compare_profiles(prof_name1[:body]["profile_id"], prof_new_id)
- cur_comp2 = mongo_client.compare_device_types(prof_name1[:imei_info][:body][0]["device_type"], type_new_pr)
- if cur_comp1[:is_the_same] && cur_comp2[:is_the_same]
- #the same. Nothing to do
- processed_list.append(curr_dev)
- ########
- else
- credentials_old = mongo_client.get_iot_oceanconn_credent_2(prof_name1[:body]["profile"])
- credentials_new = mongo_client.get_iot_oceanconn_credent_2(prof_new_id)
- #########
- if credentials_old[:code] == 200 && credentials_new[:code] == 200
- imei_data = mongo_client.get_imei_info_from_db([curr_dev["imei"].to_i])
- if imei_data[:body] != []
- ans = {}
- if imei_data[:body][0]["huadata"]["body"]["deviceId"] != nil
- model_data = mongo_client.get_device_type_info_universal(type_new_pr)
- #####all checks completed. then process data#####
- ans_old = hua_aceanconnect_connector.remove_one_device_from_iot(credentials_old[:body][:app_id], credentials_old[:body][:secret], imei_data[:body][0]["huadata"]["body"]["deviceId"])
+ p cur_comp2
+ p "cur_comp2"
- if ans_old[:code].to_i == 200 || ans_old[:code].to_i == 202 || ans_old[:code].to_i == 204
- begin
- resss = hua_aceanconnect_connector.add_new_device_on_huawei(credentials_new[:body][:app_id],
- credentials_new[:body][:secret],
- curr_dev["imei"].to_i,
- curr_dev["imei"].to_s,
- prof_name1[:body]["description"],
- model_data[:body]["device_type"],
- curr_dev["new_profile"],
- model_data[:body]["ManufacturerID"],
- model_data[:body]["ManufacturerNAME"],
- model_data[:body]["model"]
- )
- if resss[:code]=="200"
- if resss[:body].key?("error_code") && resss[:body]["error_code"] != 200
- not_processed_list.append({:imei => curr_dev["imei"], :error => resss})
- else
- new_id_iot = resss[:body]
- new_profile_id = prof_new_id
- now_date = DateTime.now
- #finished success. update database
- attribute = {profile: new_profile_id, device_type: model_data[:body]["model"], huadata: {body: new_id_iot}, updated: now_date}
- answ_mongo = mongo_client.modify_attr_mongo_universal(curr_dev["imei"].to_i, attribute)
- if answ_mongo[:code] != 200
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Critical error. Mongo not updated", :mongo_err => answ_mongo})
+ if cur_comp1[:is_the_same] && cur_comp2[:is_the_same]
+ #the same. Nothing to do
+ processed_list.append(curr_dev)
+ ########
+ else
+ credentials_old = mongo_client.get_iot_oceanconn_credent_2(prof_name1[:body]["profile"])
+ credentials_new = mongo_client.get_iot_oceanconn_credent_2(prof_new_id)
+ p credentials_new
+ p "credentials_new"
+ #########
+ if credentials_old[:code] == 200 && credentials_new[:code] == 200
+ imei_data = mongo_client.get_imei_info_from_db([curr_dev["imei"].to_i])
+ p imei_data
+ p "imei_data"
+ if imei_data[:body] != []
+ ans = {}
+ if imei_data[:body][0]["huadata"]["body"]["deviceId"] != nil
+ model_data = mongo_client.get_device_type_info_universal(type_new_pr)
+ p model_data
+ p "model_data"
+ #####all checks completed. then process data#####
+ ans_old = hua_aceanconnect_connector.remove_one_device_from_iot(credentials_old[:body][:app_id], credentials_old[:body][:secret], imei_data[:body][0]["huadata"]["body"]["deviceId"])
+
+
+ if ans_old[:code].to_i == 200 || ans_old[:code].to_i == 202 || ans_old[:code].to_i == 204
+ begin
+ resss = hua_aceanconnect_connector.add_new_device_on_huawei(credentials_new[:body][:app_id],
+ credentials_new[:body][:secret],
+ curr_dev["imei"].to_i,
+ curr_dev["imei"].to_s,
+ prof_name1[:body]["description"],
+ model_data[:body]["device_type"],
+ curr_dev["new_profile"],
+ model_data[:body]["ManufacturerID"],
+ model_data[:body]["ManufacturerNAME"],
+ model_data[:body]["model"]
+ )
+ if resss[:code] == "200"
+ if resss[:body].key?("error_code") && resss[:body]["error_code"] != 200
+ not_processed_list.append({:imei => curr_dev["imei"], :error => resss})
else
- processed_list.append(curr_dev)
+ new_id_iot = resss[:body]
+ new_profile_id = prof_new_id
+ now_date = DateTime.now
+ #finished success. update database
+ attribute = {profile: new_profile_id, type: model_data[:body]["model"], huadata: {body: new_id_iot}, updated: now_date}
+ answ_mongo = mongo_client.modify_attr_mongo_universal(curr_dev["imei"].to_i, attribute)
+ if answ_mongo[:code] != 200
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Critical error. Mongo not updated", :mongo_err => answ_mongo})
+ else
+ processed_list.append(curr_dev)
+ end
end
- #added_on_iot_platf.append(s1)
+ else
+ not_processed_list.append({:imei => curr_dev["imei"], :error => resss})
end
- else
- not_processed_list.append({:imei => curr_dev["imei"], :error => resss})
+ rescue
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown error with insertion imei on IOT platform"})
end
- rescue
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown error with insertion imei on IOT platform"})
end
+ else
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Not processed by iot platform. deviceId not found in mongoDB"})
end
else
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Not processed by iot platform. deviceId not found in mongoDB"})
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Failed to get info from database"})
end
else
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Failed to get info from database"})
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Failed to get credentials from database"})
end
- else
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Failed to get credentials from database"})
end
+ else
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "New profile modification not permitted"})
end
else
- not_processed_list.append({:imei => curr_dev["imei"], :error => "New profile modification not permitted"})
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Old profile modification not permitted"})
end
else
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Old profile modification not permitted"})
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown current profile"})
end
else
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown current profile"})
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Device not exists"})
end
else
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Device not exists"})
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "IMEI can't be nil"})
end
- else
- not_processed_list.append({:imei => curr_dev["imei"], :error => "IMEI can't be nil"})
+ rescue
+ not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown SDK error"})
end
- rescue
- not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown SDK error"})
+
end
- end
+ err_li = []
+ if not_processed_list.length > 0
+ not_processed_list.each do |err_l|
+ err_li.append({:failedimei => err_l[:imei]})
+ end
+ end
- err_li = []
- if not_processed_list.length > 0
- not_processed_list.each do |err_l|
- err_li.append({:failedimei => err_l[:imei]})
+ if processed_list.length > 0
+ answ_to_soapgw = {:code => 200, :result => "Success", :body => {:processednum => processed_list.length, :failednum => not_processed_list.length, :deviceserr => err_li}}
+ else
+ answ_to_soapgw = {:code => 202, :result => "Nothing done", :body => {:processednum => 0, :failednum => not_processed_list.length, :deviceserr => err_li}}
end
end
+ thr13set.join
- if processed_list.length > 0
- soap_answ = {:code=>200, :result=>"Success", :body=>{:processednum => processed_list.length, :failednum => not_processed_list.length, :deviceserr => err_li}}
- else
- soap_answ = {:code=>202, :result=>"Nothing done", :body=>{:processednum => 0, :failednum => not_processed_list.length, :deviceserr => err_li}}
- end
-
- output_answ = {:code => 200, :result => "Success", :body => {:to_soap_gw => soap_answ, :not_processed_list => not_processed_list, :processed_list => processed_list}}
+ output_answ = {:code => 200, :result => "Success", :body => {:to_soap_gw => answ_to_soapgw, :not_processed_list => not_processed_list, :processed_list => processed_list}}
mongo_client.audit_logger("set_data_replace_2", remote_ip, input_params, output_answ, real_ip)
output_answ
end