imperituroard 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/imperituroard.rb +7 -0
- data/lib/imperituroard/projects/iot.rb +49 -39
- data/lib/imperituroard/projects/iot/hua_oceanconnect_adapter.rb +81 -17
- data/lib/imperituroard/projects/iot/internal_functions.rb +8 -0
- data/lib/imperituroard/projects/iot/mongoconnector.rb +17 -13
- data/lib/imperituroard/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f3be6181f0232b7cf9ffcbc83e64b250c193ba8
|
4
|
+
data.tar.gz: 1bec083ea1a987aa71a5387f01ee66d414c82fc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e2c3e4efb2ae8069803ddafaa4fcf55dda9b9cf6759444fe21ba829927d3c1067003df4a5c0ab51338e43cf2fb831035fee1c64a0b384869610078ad2c15842
|
7
|
+
data.tar.gz: 0b4e145d35a75cbc40f75fe84fb1d72b6ae3fd749ab8a47ad6ecc405c50fee1e2972b03a2f1ca1e270107a645a72f9bc47f10e18c1e97c8121214528fa72b5e5
|
data/lib/imperituroard.rb
CHANGED
@@ -33,6 +33,7 @@ require 'net/http'
|
|
33
33
|
require 'uri'
|
34
34
|
|
35
35
|
module Imperituroard
|
36
|
+
|
36
37
|
class Error < StandardError;
|
37
38
|
end
|
38
39
|
|
@@ -42,6 +43,7 @@ module Imperituroard
|
|
42
43
|
def hhh(jjj)
|
43
44
|
p jjj
|
44
45
|
end
|
46
|
+
|
45
47
|
# Your code goes here...
|
46
48
|
end
|
47
49
|
|
@@ -239,6 +241,11 @@ class Iot
|
|
239
241
|
iot_connector.get_available_types_2(login, real_ip, remote_ip)
|
240
242
|
end
|
241
243
|
|
244
|
+
#9-1 get available types for login and profile
|
245
|
+
def get_available_types2(login, profile, real_ip, remote_ip)
|
246
|
+
iot_connector.get_available_types2_2(login, profile, real_ip, remote_ip)
|
247
|
+
end
|
248
|
+
|
242
249
|
#10 get info for device type
|
243
250
|
def get_info_data_type(type, real_ip, remote_ip)
|
244
251
|
iot_connector.get_info_data_type_2(type, real_ip, remote_ip)
|
@@ -115,10 +115,9 @@ class IotFunctions_2
|
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
|
-
|
119
118
|
begin
|
120
119
|
added_on_iot_platf = []
|
121
|
-
if for_insert!=[]
|
120
|
+
if for_insert != []
|
122
121
|
##Logic for IOT Platform connection###
|
123
122
|
|
124
123
|
|
@@ -141,7 +140,7 @@ class IotFunctions_2
|
|
141
140
|
|
142
141
|
#get {"model"=>"BGT_PPMC", "ManufacturerID"=>"unknown", "ManufacturerNAME"=>"unknown", "device_type"=>"unknown"}
|
143
142
|
#from database
|
144
|
-
model_data = mongo_client.
|
143
|
+
model_data = mongo_client.get_device_type_info_universal(aaa["device_type"])
|
145
144
|
resss = hua_aceanconnect_connector.add_new_device_on_huawei(credentials[:body][:app_id],
|
146
145
|
credentials[:body][:secret],
|
147
146
|
aaa["imei"],
|
@@ -160,7 +159,6 @@ class IotFunctions_2
|
|
160
159
|
s1 = aaa
|
161
160
|
s1[:huadata] = resss
|
162
161
|
s1[:created] = DateTime.now
|
163
|
-
s1[:type] = s1["device_type"]
|
164
162
|
added_on_iot_platf.append(s1)
|
165
163
|
end
|
166
164
|
else
|
@@ -199,9 +197,7 @@ class IotFunctions_2
|
|
199
197
|
end
|
200
198
|
thr1.join
|
201
199
|
|
202
|
-
|
203
200
|
resp_out[:body][:tosoapgw] = internal_func.iot_create_dev_soapgw_answer(input_json, resp_out)
|
204
|
-
|
205
201
|
mongo_client.audit_logger("add_device_to_profile", remote_ip, input_json, resp_out, real_ip)
|
206
202
|
resp_out
|
207
203
|
end
|
@@ -221,16 +217,16 @@ class IotFunctions_2
|
|
221
217
|
resp_out = {}
|
222
218
|
begin
|
223
219
|
thr2 = Thread.new do
|
224
|
-
if add_functions_connector.check_input_2(login, imei_list)[:code]==200
|
220
|
+
if add_functions_connector.check_input_2(login, imei_list)[:code] == 200
|
225
221
|
|
226
222
|
for t in imei_list
|
227
223
|
prof_name1 = mongo_client.get_profile_name_from_imei(t)
|
228
|
-
if prof_name1[:code]==200
|
224
|
+
if prof_name1[:code] == 200
|
229
225
|
begin
|
230
226
|
permiss1 = mongo_client.check_login_profile_permiss(login, prof_name1[:body]["profile"])
|
231
227
|
p "permiss1"
|
232
228
|
p permiss1
|
233
|
-
if permiss1[:code]==200
|
229
|
+
if permiss1[:code] == 200
|
234
230
|
ime_list_approved.append(t)
|
235
231
|
else
|
236
232
|
ime_list_notapproved.append({:imei => t, :error => permiss1})
|
@@ -460,12 +456,12 @@ class IotFunctions_2
|
|
460
456
|
begin
|
461
457
|
thr4 = Thread.new do
|
462
458
|
|
463
|
-
if add_functions_connector.check_input_4(login, imei)[:code]==200
|
459
|
+
if add_functions_connector.check_input_4(login, imei)[:code] == 200
|
464
460
|
|
465
461
|
prof_name = mongo_client.get_profile_name_from_imei(imei)
|
466
|
-
if prof_name[:code]==200
|
462
|
+
if prof_name[:code] == 200
|
467
463
|
permiss = mongo_client.check_login_profile_permiss(login, prof_name[:body]["profile"])
|
468
|
-
if permiss[:code]==200
|
464
|
+
if permiss[:code] == 200
|
469
465
|
|
470
466
|
##Logic for IOT Platform connection###
|
471
467
|
|
@@ -479,17 +475,17 @@ class IotFunctions_2
|
|
479
475
|
|
480
476
|
resp = {}
|
481
477
|
|
482
|
-
if credentials[:code]==200
|
478
|
+
if credentials[:code] == 200
|
483
479
|
|
484
480
|
imei_data = mongo_client.get_imei_info_from_db([imei])
|
485
|
-
if imei_data[:body]!=[]
|
481
|
+
if imei_data[:body] != []
|
486
482
|
ans = {}
|
487
483
|
if imei_data[:body][0]["huadata"]["body"]["deviceId"] != nil
|
488
484
|
ans = hua_aceanconnect_connector.remove_one_device_from_iot(credentials[:body][:app_id], credentials[:body][:secret], imei_data[:body][0]["huadata"]["body"]["deviceId"])
|
489
485
|
else
|
490
486
|
ans = {:code => "204", :result => "Not processed by iot platform. deviceId not found in mongoDB"}
|
491
487
|
end
|
492
|
-
if ans[:code]=="204" or ans[:code]=="200"
|
488
|
+
if ans[:code] == "204" or ans[:code] == "200"
|
493
489
|
resp = mongo_client.device_remove_single_mongo(imei)
|
494
490
|
else
|
495
491
|
resp = {:code => 500, :result => "Unknown IOT platform error", :body => ans}
|
@@ -573,10 +569,8 @@ class IotFunctions_2
|
|
573
569
|
imei_data = mongo_client.get_imei_info_from_db([p[:imei]])
|
574
570
|
if imei_data[:body]!=[]
|
575
571
|
ans = hua_aceanconnect_connector.modify_location_iot(credentials[:body][:app_id], credentials[:body][:secret], imei_data[:body][0]["huadata"]["body"]["deviceId"], p[:address])
|
576
|
-
|
577
572
|
internal_func.printer_texter({:function => "device_add_address Step2", :ans => ans, :descrition => "answer from hua IOT", :input => {:did => imei_data[:body][0]["huadata"]["body"]["deviceId"], :appid => credentials[:body][:app_id], :secret => credentials[:body][:secret], :address => p[:address]}}, "debug")
|
578
573
|
end
|
579
|
-
|
580
574
|
end
|
581
575
|
|
582
576
|
#########end iot platform logic#######
|
@@ -651,7 +645,7 @@ class IotFunctions_2
|
|
651
645
|
if attr["profile"].is_a? Integer
|
652
646
|
p "Ok"
|
653
647
|
else
|
654
|
-
p new = mongo_client.
|
648
|
+
p new = mongo_client.get_profile_universal(attr["profile"])
|
655
649
|
attr["profile"] = new["profile_id"]
|
656
650
|
end
|
657
651
|
end
|
@@ -736,6 +730,7 @@ class IotFunctions_2
|
|
736
730
|
permit_profiles = login_info[:body]["permit_profiles"]
|
737
731
|
permit_types = login_info[:body]["permit_types"]
|
738
732
|
data_from_mongo = mongo_client.get_profile_list_by_id(permit_profiles)
|
733
|
+
p data_from_mongo
|
739
734
|
|
740
735
|
for ff in data_from_mongo
|
741
736
|
data_processed.append({:profile_id => ff["profile_id"],
|
@@ -840,33 +835,47 @@ class IotFunctions_2
|
|
840
835
|
data_processed = []
|
841
836
|
data_soapgw = []
|
842
837
|
login_info = mongo_client.get_login_inf2_select(login)
|
838
|
+
prof_data = mongo_client.get_profile_universal(profile)
|
843
839
|
if login_info[:code]==200
|
844
840
|
|
845
841
|
permit_profiles = login_info[:body]["permit_profiles"]
|
846
842
|
permit_types = login_info[:body]["permit_types"]
|
843
|
+
perm_tp_prof = prof_data["permit_types"]
|
844
|
+
|
845
|
+
if permit_profiles.include?(prof_data["profile_id"])
|
846
|
+
res_types_permitted = internal_func.compare_dict(permit_types, perm_tp_prof)
|
847
|
+
data_from_mongo = mongo_client.get_type_list_by_id(res_types_permitted)
|
848
|
+
|
849
|
+
for ff in data_from_mongo
|
850
|
+
data_processed.append({:type_id => ff["type_id"],
|
851
|
+
:description => ff["description"],
|
852
|
+
:note => ff["note"],
|
853
|
+
:form => ff["form"],
|
854
|
+
:ManufacturerID => ff["ManufacturerID"],
|
855
|
+
:ManufacturerNAME => ff["ManufacturerNAME"],
|
856
|
+
:device_type => ff["device_type"],
|
857
|
+
:model => ff["model"],
|
858
|
+
:info => ff["info"]
|
859
|
+
})
|
860
|
+
data_soapgw.append({:name => ff["model"], :form => ff["form"], :description => ff["description"], :type_id => ff["type_id"]})
|
861
|
+
end
|
847
862
|
|
848
|
-
|
863
|
+
tosoapgw = {:code => 200,
|
864
|
+
:result => "Request completed successfully",
|
865
|
+
:types => data_soapgw
|
866
|
+
}
|
849
867
|
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
:model => ff["model"],
|
859
|
-
:info => ff["info"]
|
860
|
-
})
|
861
|
-
data_soapgw.append({:name => ff["model"], :form => ff["form"], :description => ff["description"], :type_id => ff["type_id"]})
|
868
|
+
resp_out = {:code => 200, :result => "Request completed successfully", :body => {:data => data_processed, :tosoapgw => tosoapgw}}
|
869
|
+
|
870
|
+
else
|
871
|
+
tosoapgw = {:code => 700,
|
872
|
+
:result => "Profile not permitted",
|
873
|
+
:types => data_soapgw
|
874
|
+
}
|
875
|
+
resp_out = {:code => 700, :result => "Profile not permitted", :body => {:tosoapgw => tosoapgw}}
|
862
876
|
end
|
863
877
|
|
864
|
-
tosoapgw = {:code => 200,
|
865
|
-
:result => "Request completed successfully",
|
866
|
-
:types => data_soapgw
|
867
|
-
}
|
868
878
|
|
869
|
-
resp_out = {:code => 200, :result => "Request completed successfully", :body => {:data => data_processed, :tosoapgw => tosoapgw}}
|
870
879
|
else
|
871
880
|
tosoapgw = {:code => login_info[:code],
|
872
881
|
:result => login_info[:result],
|
@@ -930,6 +939,8 @@ class IotFunctions_2
|
|
930
939
|
mon_answer = mongo_client.get_profile_name_by_id(profile)
|
931
940
|
end
|
932
941
|
|
942
|
+
p mon_answer
|
943
|
+
|
933
944
|
if mon_answer != {} && mon_answer != []
|
934
945
|
output_answ = {:code => 200, :result => "Request completed successfully", :body => {:data => {:info => mon_answer["info"],
|
935
946
|
:profile => mon_answer["profile"],
|
@@ -943,7 +954,6 @@ class IotFunctions_2
|
|
943
954
|
end
|
944
955
|
mongo_client.audit_logger("get_info_data_profile_2", remote_ip, input_params, output_answ, real_ip)
|
945
956
|
output_answ
|
946
|
-
|
947
957
|
end
|
948
958
|
|
949
959
|
|
@@ -1002,7 +1012,7 @@ class IotFunctions_2
|
|
1002
1012
|
cur_comp1 = mongo_client.compare_profiles(prof_name1[:body]["profile_id"], prof_new_id)
|
1003
1013
|
p cur_comp1
|
1004
1014
|
p "cur_comp1"
|
1005
|
-
cur_comp2 = mongo_client.compare_device_types(prof_name1[:imei_info][:body][0]["
|
1015
|
+
cur_comp2 = mongo_client.compare_device_types(prof_name1[:imei_info][:body][0]["device_type"], type_new_pr)
|
1006
1016
|
|
1007
1017
|
|
1008
1018
|
p cur_comp2
|
@@ -1053,7 +1063,7 @@ class IotFunctions_2
|
|
1053
1063
|
new_profile_id = prof_new_id
|
1054
1064
|
now_date = DateTime.now
|
1055
1065
|
#finished success. update database
|
1056
|
-
attribute = {profile: new_profile_id,
|
1066
|
+
attribute = {profile: new_profile_id, device_type: model_data[:body]["model"], huadata: {body: new_id_iot}, updated: now_date}
|
1057
1067
|
answ_mongo = mongo_client.modify_attr_mongo_universal(curr_dev["imei"].to_i, attribute)
|
1058
1068
|
if answ_mongo[:code] != 200
|
1059
1069
|
not_processed_list.append({:imei => curr_dev["imei"], :error => "Critical error. Mongo not updated", :mongo_err => answ_mongo})
|
@@ -76,7 +76,8 @@ class HuaIot
|
|
76
76
|
out_resp = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
77
77
|
fff = {:func => "get_token",
|
78
78
|
:iot_fun => "",
|
79
|
-
:req_header => {:content_type => 'application/x-www-form-urlencoded'
|
79
|
+
:req_header => {:content_type => 'application/x-www-form-urlencoded',
|
80
|
+
:platform => "Huawei oceanconnect"
|
80
81
|
}}
|
81
82
|
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
82
83
|
rescue
|
@@ -112,7 +113,8 @@ class HuaIot
|
|
112
113
|
res = https.request(request)
|
113
114
|
out_resp = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
114
115
|
fff = {:func => "token_logout",
|
115
|
-
:iot_fun => "logout"
|
116
|
+
:iot_fun => "logout",
|
117
|
+
:platform => "Huawei oceanconnect"
|
116
118
|
}
|
117
119
|
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
118
120
|
rescue
|
@@ -125,6 +127,7 @@ class HuaIot
|
|
125
127
|
|
126
128
|
#Registering a Directly Connected Device (Verification Code Mode) (V2)
|
127
129
|
def dev_register_verif_code_mode(app_id, secret, node_id)
|
130
|
+
out_resp = {}
|
128
131
|
token = get_token(app_id, secret)[:body]["accessToken"]
|
129
132
|
path = "/iocm/app/reg/v1.1.0/deviceCredentials?appId=" + app_id
|
130
133
|
url_string = "https://" + platformip + ":" + platformport + path
|
@@ -138,9 +141,17 @@ class HuaIot
|
|
138
141
|
request.content_type = 'application/json'
|
139
142
|
request['Authorization'] = 'Bearer ' + token
|
140
143
|
request['app_key'] = app_id
|
141
|
-
|
144
|
+
data = {nodeId: node_id}
|
145
|
+
request.body = data.to_json
|
142
146
|
res = https.request(request)
|
143
|
-
{:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
147
|
+
out_resp = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
148
|
+
fff = {:func => "dev_register_verif_code_mode",
|
149
|
+
:iot_fun => "Registering a Directly Connected Device (Verification Code Mode) (V2)",
|
150
|
+
:req_header => {:content_type => 'application/json',
|
151
|
+
:platform => "Huawei oceanconnect"
|
152
|
+
}}
|
153
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
154
|
+
out_resp
|
144
155
|
end
|
145
156
|
|
146
157
|
#2.2.4 Registering a Directly Connected Device (Password Mode) (V2)
|
@@ -176,7 +187,8 @@ class HuaIot
|
|
176
187
|
:iot_fun => "2.2.4",
|
177
188
|
:req_header => {:authorization => 'Bearer ' + token,
|
178
189
|
:content_type => 'application/json',
|
179
|
-
:app_key => app_id
|
190
|
+
:app_key => app_id,
|
191
|
+
:platform => "Huawei oceanconnect"
|
180
192
|
}}
|
181
193
|
client_iot_mongo.audit_iot_logger(fff, url_string, data_out, out_resp)
|
182
194
|
out_resp
|
@@ -199,13 +211,21 @@ class HuaIot
|
|
199
211
|
request.content_type = 'application/json'
|
200
212
|
request['Authorization'] = 'Bearer ' + token
|
201
213
|
request['app_key'] = app_id
|
202
|
-
|
214
|
+
data = {deviceInfo: attr_list}
|
215
|
+
data_out = data.to_json
|
203
216
|
internal_func.printer_texter({:procedure => "dev_register_passw_code_mode2", :data => {:body => data_out, :url => url_string}}, "debug")
|
204
217
|
request.body = data_out
|
205
218
|
res = https.request(request)
|
206
219
|
p res.body.to_s
|
207
220
|
out_resp = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
208
|
-
|
221
|
+
fff = {:func => "dev_reg_passw_code_mode2_2",
|
222
|
+
:iot_fun => "2.2.4",
|
223
|
+
:req_header => {:content_type => 'application/json',
|
224
|
+
:authorization => 'Bearer ' + token,
|
225
|
+
:app_key => app_id,
|
226
|
+
:platform => "Huawei oceanconnect"
|
227
|
+
}}
|
228
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
209
229
|
out_resp
|
210
230
|
end
|
211
231
|
|
@@ -237,7 +257,8 @@ class HuaIot
|
|
237
257
|
:iot_fun => "2.2.12",
|
238
258
|
:req_header => {:authorization => 'Bearer ' + token,
|
239
259
|
:content_type => 'application/json',
|
240
|
-
:app_key => app_id
|
260
|
+
:app_key => app_id,
|
261
|
+
:platform => "Huawei oceanconnect"
|
241
262
|
}}
|
242
263
|
client_iot_mongo.audit_iot_logger(fff, url_string, "Delete", out_resp)
|
243
264
|
rescue
|
@@ -274,6 +295,7 @@ class HuaIot
|
|
274
295
|
|
275
296
|
#2.2.14 Querying Device Activation Status
|
276
297
|
def querying_device_activ_status(app_id, secret, device_id)
|
298
|
+
output_ans = {}
|
277
299
|
token = get_token(app_id, secret)[:body]["accessToken"]
|
278
300
|
path = "/iocm/app/reg/v1.1.0/devices/" + device_id + "?app_Id=" + app_id
|
279
301
|
url_string = "https://" + platformip + ":" + platformport + path
|
@@ -288,12 +310,22 @@ class HuaIot
|
|
288
310
|
request['Authorization'] = 'Bearer ' + token
|
289
311
|
request['app_key'] = app_id
|
290
312
|
res = https.request(request)
|
291
|
-
{:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
313
|
+
output_ans = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
314
|
+
fff = {:func => "querying_device_activ_status",
|
315
|
+
:iot_fun => "2.2.14",
|
316
|
+
:req_header => {:content_type => 'application/json',
|
317
|
+
:authorization => 'Bearer ' + token,
|
318
|
+
:app_key => app_id,
|
319
|
+
:platform => "Huawei oceanconnect"
|
320
|
+
}}
|
321
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data, output_ans)
|
322
|
+
output_ans
|
292
323
|
end
|
293
324
|
|
294
325
|
|
295
326
|
#2.9.1 Querying Information About a Device
|
296
327
|
def querying_device_info(app_id, secret, device_id)
|
328
|
+
out_resp = {}
|
297
329
|
token = get_token(app_id, secret)[:body]["accessToken"]
|
298
330
|
path = "/iocm/app/dm/v1.1.0/devices/" + device_id + "?app_Id=" + app_id
|
299
331
|
url_string = "https://" + platformip + ":" + platformport + path
|
@@ -308,7 +340,16 @@ class HuaIot
|
|
308
340
|
request['Authorization'] = 'Bearer ' + token
|
309
341
|
request['app_key'] = app_id
|
310
342
|
res = https.request(request)
|
311
|
-
{:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
343
|
+
out_resp = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
344
|
+
fff = {:func => "querying_device_info",
|
345
|
+
:iot_fun => "2.9.1",
|
346
|
+
:req_header => {:authorization => 'Bearer ' + token,
|
347
|
+
:content_type => 'application/json',
|
348
|
+
:app_key => app_id,
|
349
|
+
:platform => "Huawei oceanconnect"
|
350
|
+
}}
|
351
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, "Get", out_resp)
|
352
|
+
out_resp
|
312
353
|
end
|
313
354
|
|
314
355
|
#2.9.6 Querying Directly Connected Devices and Their Mounted Devices in Batches
|
@@ -335,7 +376,8 @@ class HuaIot
|
|
335
376
|
:iot_fun => "2.9.6",
|
336
377
|
:req_header => {:authorization => 'Bearer ' + token,
|
337
378
|
:content_type => 'application/json',
|
338
|
-
:app_key => app_id
|
379
|
+
:app_key => app_id,
|
380
|
+
:platform => "Huawei oceanconnect"
|
339
381
|
}}
|
340
382
|
client_iot_mongo.audit_iot_logger(fff, url_string, req_body, output_str)
|
341
383
|
output_str
|
@@ -344,6 +386,7 @@ class HuaIot
|
|
344
386
|
|
345
387
|
#2.9.19 Querying the Complete Device Type List of All Device Capabilities
|
346
388
|
def querying_device_type_list(app_id, secret)
|
389
|
+
output_ans = {}
|
347
390
|
token = get_token(app_id, secret)[:body]["accessToken"]
|
348
391
|
path = "/iocm/app/profile/v1.1.0/allDeviceTypes"
|
349
392
|
url_string = "https://" + platformip + ":" + platformport + path
|
@@ -358,13 +401,24 @@ class HuaIot
|
|
358
401
|
request['Authorization'] = 'Bearer ' + token
|
359
402
|
request['app_key'] = app_id
|
360
403
|
res = https.request(request)
|
361
|
-
{:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
404
|
+
output_ans = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
405
|
+
|
406
|
+
fff = {:func => "querying_device_type_list",
|
407
|
+
:iot_fun => "2.9.19",
|
408
|
+
:req_header => {:content_type => 'application/json',
|
409
|
+
:authorization => 'Bearer ' + token,
|
410
|
+
:app_key => app_id,
|
411
|
+
:platform => "Huawei oceanconnect"
|
412
|
+
}}
|
413
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, "Get", output_ans)
|
414
|
+
output_ans
|
415
|
+
|
362
416
|
end
|
363
417
|
|
364
418
|
|
365
419
|
#2.9.6 Querying Directly Connected Devices and Their Mounted Devices in Batches
|
366
420
|
def quer_dev_direct_conn_batches(app_id, dev_list, token)
|
367
|
-
|
421
|
+
output_ans = {}
|
368
422
|
path = "/iocm/app/dm/v1.1.0/queryDevicesByIds"
|
369
423
|
url_string = "https://" + platformip + ":" + platformport + path
|
370
424
|
p url_string
|
@@ -378,10 +432,19 @@ class HuaIot
|
|
378
432
|
request.content_type = 'application/json'
|
379
433
|
request['Authorization'] = 'Bearer ' + token
|
380
434
|
request['app_key'] = app_id
|
381
|
-
|
435
|
+
data = {deviceIds: dev_list}
|
436
|
+
request.body = data.to_json
|
382
437
|
res = https.request(request)
|
383
|
-
{:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
384
|
-
|
438
|
+
output_ans = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
439
|
+
fff = {:func => "quer_dev_direct_conn_batches",
|
440
|
+
:iot_fun => "2.9.6",
|
441
|
+
:req_header => {:content_type => 'application/json',
|
442
|
+
:authorization => 'Bearer ' + token,
|
443
|
+
:app_key => app_id,
|
444
|
+
:platform => "Huawei oceanconnect"
|
445
|
+
}}
|
446
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data, output_ans)
|
447
|
+
output_ans
|
385
448
|
end
|
386
449
|
|
387
450
|
|
@@ -417,7 +480,8 @@ class HuaIot
|
|
417
480
|
:iot_fun => "2.2.11",
|
418
481
|
:req_header => {:authorization => 'Bearer ' + token,
|
419
482
|
:content_type => 'application/json',
|
420
|
-
:app_key => app_id
|
483
|
+
:app_key => app_id,
|
484
|
+
:platform => "Huawei oceanconnect"
|
421
485
|
}}
|
422
486
|
client_iot_mongo.audit_iot_logger(fff, url_string, req_b, out_resp)
|
423
487
|
rescue
|
@@ -155,6 +155,14 @@ class InternalFunc
|
|
155
155
|
answer
|
156
156
|
end
|
157
157
|
|
158
|
+
#compare dictionaries
|
159
|
+
def compare_dict(dict1, dict2)
|
160
|
+
v1 = dict1 - dict2
|
161
|
+
v2 = dict2 - dict1
|
162
|
+
v3 = dict2 + dict1
|
163
|
+
v3.uniq - v2.uniq - v1.uniq
|
164
|
+
end
|
165
|
+
|
158
166
|
def test()
|
159
167
|
p "eeeeeeeeeeeeeeeeeeeeeeee"
|
160
168
|
end
|
@@ -194,7 +194,7 @@ class MongoIot
|
|
194
194
|
begin
|
195
195
|
result_ps = []
|
196
196
|
collection = client[:device_profiles]
|
197
|
-
collection.find({"profile_id" => profile_id}).each {|row|
|
197
|
+
collection.find({"profile_id" => profile_id.to_i}).each {|row|
|
198
198
|
result_ps.append(row)
|
199
199
|
}
|
200
200
|
result_ps[0]
|
@@ -238,7 +238,7 @@ class MongoIot
|
|
238
238
|
begin
|
239
239
|
result_ps = []
|
240
240
|
collection = client[:device_types]
|
241
|
-
collection.find({"type_id" => type_id}).each {|row|
|
241
|
+
collection.find({"type_id" => type_id.to_i}).each {|row|
|
242
242
|
result_ps.append(row)
|
243
243
|
}
|
244
244
|
result_ps[0]
|
@@ -260,19 +260,20 @@ class MongoIot
|
|
260
260
|
end
|
261
261
|
end
|
262
262
|
|
263
|
+
#universal procedure. might be profile id or name
|
263
264
|
def check_login_profile_permiss(login, profile)
|
264
265
|
out_resp = {}
|
265
266
|
get_login_info = get_profiles_by_login(login)
|
266
|
-
if get_login_info[:code]==200
|
267
|
-
dst_profile =
|
268
|
-
access=1
|
269
|
-
if get_login_info[:body]!=[]
|
270
|
-
if dst_profile!=[]
|
267
|
+
if get_login_info[:code] == 200
|
268
|
+
dst_profile = get_profile_universal(profile)
|
269
|
+
access = 1
|
270
|
+
if get_login_info[:body] != []
|
271
|
+
if dst_profile != []
|
271
272
|
for j in get_login_info[:body]
|
272
|
-
if j["profile_id"].to_i==dst_profile["profile_id"].to_i
|
273
|
-
access=0
|
273
|
+
if j["profile_id"].to_i == dst_profile["profile_id"].to_i
|
274
|
+
access = 0
|
274
275
|
end
|
275
|
-
if access==0
|
276
|
+
if access == 0
|
276
277
|
out_resp = {:code => 200, :result => "check_login_profile_permiss: Permission granted"}
|
277
278
|
else
|
278
279
|
out_resp = {:code => 400, :result => "check_login_profile_permiss: Access denied. This incident will be reported."}
|
@@ -292,13 +293,15 @@ class MongoIot
|
|
292
293
|
end
|
293
294
|
|
294
295
|
|
296
|
+
#universal procedure. You can use profile id or profile name as profile_id (string or int)
|
295
297
|
def check_login_prof_perm_id_one(login, profile_id)
|
296
298
|
out_resp = {}
|
297
299
|
get_login_info = get_profiles_by_login(login)
|
300
|
+
profile_data = self.get_profile_universal(profile_id)
|
298
301
|
access=1
|
299
302
|
if get_login_info[:body]!=[]
|
300
303
|
for j in get_login_info[:body]
|
301
|
-
if j["profile_id"].to_i==profile_id
|
304
|
+
if j["profile_id"].to_i==profile_data["profile_id"]
|
302
305
|
access=0
|
303
306
|
end
|
304
307
|
if access==0
|
@@ -340,7 +343,6 @@ class MongoIot
|
|
340
343
|
description: "test imei",
|
341
344
|
note: "second description",
|
342
345
|
profile: 0,
|
343
|
-
type: 0,
|
344
346
|
device_type: 0,
|
345
347
|
address: "unknown"
|
346
348
|
}
|
@@ -364,7 +366,6 @@ class MongoIot
|
|
364
366
|
description: "test imei",
|
365
367
|
note: "second description",
|
366
368
|
profile: 0,
|
367
|
-
type: 0,
|
368
369
|
device_type: 0,
|
369
370
|
address: "unknown"
|
370
371
|
}
|
@@ -503,6 +504,7 @@ class MongoIot
|
|
503
504
|
|
504
505
|
|
505
506
|
#function for get iot platform credentials from profile
|
507
|
+
#universal procedure. use profile or profile id
|
506
508
|
def get_iot_oceanconn_credent_2(profile)
|
507
509
|
out_resp = {}
|
508
510
|
begin
|
@@ -550,6 +552,7 @@ class MongoIot
|
|
550
552
|
out_resp
|
551
553
|
end
|
552
554
|
|
555
|
+
#universal procedure. Use id or name
|
553
556
|
def get_device_type_info_universal(device_model)
|
554
557
|
out_resp = {}
|
555
558
|
begin
|
@@ -681,6 +684,7 @@ class MongoIot
|
|
681
684
|
end
|
682
685
|
|
683
686
|
|
687
|
+
#universal procedure. put there profile name or id in string or int
|
684
688
|
def get_profile_universal(profile)
|
685
689
|
inn = internal_func.if_digit_or_string(profile)
|
686
690
|
out = {}
|