imperituroard 1.0.5 → 1.1.1
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/.idea/runConfigurations/version.xml +21 -0
- data/lib/imperituroard.rb +13 -0
- data/lib/imperituroard/projects/iot.rb +213 -14
- data/lib/imperituroard/projects/iot/hua_oceanconnect_adapter.rb +38 -15
- data/lib/imperituroard/projects/iot/internal_functions.rb +24 -0
- data/lib/imperituroard/projects/iot/mongoconnector.rb +26 -7
- data/lib/imperituroard/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d07f8ba8173fac1753c044f8f0e6e06a6598e7b5
|
4
|
+
data.tar.gz: 3170f430dec13119ba8ba95de2224b54cdc35d1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbb564b3afc160a77cc9b8e9e0dffb2675b5a89cfc9e7042ca62348aa29cd0057428c35090066ab80db51dbe3b2ee466817fb9a5f882a2cc5fe4082a0bbac184
|
7
|
+
data.tar.gz: 7ac4309248422d5d326b1e9c5ad98d1595ec79bc6f3e51bb9ae31632225e465b7b4677d201f149c32004c72b897e7c182d61e143be863ec63d70c311d9e2a59f
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<component name="ProjectRunConfigurationManager">
|
2
|
+
<configuration default="false" name="version" type="RubyRunConfigurationType" factoryName="Ruby">
|
3
|
+
<module name="imperituroard" />
|
4
|
+
<RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
5
|
+
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib/imperituroard" />
|
6
|
+
<RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
|
7
|
+
<RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
|
8
|
+
<RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
|
9
|
+
<envs />
|
10
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
11
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
12
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
13
|
+
<COVERAGE_PATTERN ENABLED="true">
|
14
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
15
|
+
</COVERAGE_PATTERN>
|
16
|
+
</EXTENSION>
|
17
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/imperituroard/version.rb" />
|
18
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
|
19
|
+
<method />
|
20
|
+
</configuration>
|
21
|
+
</component>
|
data/lib/imperituroard.rb
CHANGED
@@ -168,6 +168,10 @@ class Iot
|
|
168
168
|
iot_connector.add_device_to_prof_2(login, imei_list, real_ip, remote_ip)
|
169
169
|
end
|
170
170
|
|
171
|
+
def add_device_to_profile2(request_f, real_ip, remote_ip)
|
172
|
+
iot_connector.add_device_to_prof2_2(request_f, real_ip, remote_ip)
|
173
|
+
end
|
174
|
+
|
171
175
|
|
172
176
|
#!!2 Find device (only mongo datebase. IOT platform not need)
|
173
177
|
# procedure for data selection from mongo database.
|
@@ -270,10 +274,19 @@ class Iot
|
|
270
274
|
mongo_client.audit_logger(proc_name, src_ip, input_json, output_json, real_ip)
|
271
275
|
end
|
272
276
|
|
277
|
+
|
278
|
+
####################################################################
|
279
|
+
#######technological procedures
|
280
|
+
####################################################################
|
281
|
+
def delete_all_iot_device_in_db
|
282
|
+
iot_connector.delete_all_devices_in_database
|
283
|
+
end
|
284
|
+
|
273
285
|
def test111
|
274
286
|
iot_connector.test1278493
|
275
287
|
end
|
276
288
|
|
289
|
+
|
277
290
|
end
|
278
291
|
|
279
292
|
|
@@ -131,9 +131,174 @@ class IotFunctions_2
|
|
131
131
|
|
132
132
|
#########
|
133
133
|
|
134
|
+
if aaa.key?("type") && !aaa.key?("device_type")
|
135
|
+
aaa["device_type"] = aaa["type"]
|
136
|
+
aaa = internal_func.delete_key_hash(aaa, "type")
|
137
|
+
end
|
138
|
+
|
139
|
+
aaa = internal_func.hash_val_to_string(aaa)
|
134
140
|
|
135
141
|
if credentials[:code] == 200
|
136
142
|
|
143
|
+
begin
|
144
|
+
dev_name = aaa["imei"].to_s
|
145
|
+
|
146
|
+
#get {"model"=>"BGT_PPMC", "ManufacturerID"=>"unknown", "ManufacturerNAME"=>"unknown", "device_type"=>"unknown"}
|
147
|
+
#from database
|
148
|
+
model_data = mongo_client.get_device_type_info_universal(aaa["device_type"])
|
149
|
+
profile_data = mongo_client.get_profile_universal(aaa["profile"])
|
150
|
+
p profile_data
|
151
|
+
p model_data
|
152
|
+
p "model_data"
|
153
|
+
resss = hua_aceanconnect_connector.add_new_device_on_huawei(credentials[:body][:app_id],
|
154
|
+
credentials[:body][:secret],
|
155
|
+
aaa["imei"],
|
156
|
+
dev_name,
|
157
|
+
aaa["description"],
|
158
|
+
model_data[:body]["device_type"],
|
159
|
+
aaa["profile"],
|
160
|
+
model_data[:body]["ManufacturerID"],
|
161
|
+
model_data[:body]["ManufacturerNAME"],
|
162
|
+
model_data[:body]["model"]
|
163
|
+
)
|
164
|
+
if resss[:code]=="200"
|
165
|
+
if resss[:body].key?("error_code") && resss[:body]["error_code"] != 200
|
166
|
+
not_processed_list.append({:imei => aaa["imei"], :error => resss})
|
167
|
+
else
|
168
|
+
s1 = aaa
|
169
|
+
s1[:huadata] = resss
|
170
|
+
s1[:created] = DateTime.now
|
171
|
+
s1["device_type"] = model_data[:body]["model"]
|
172
|
+
s1["profile"] = profile_data["profile_id"]
|
173
|
+
added_on_iot_platf.append(s1)
|
174
|
+
end
|
175
|
+
else
|
176
|
+
not_processed_list.append({:imei => aaa["imei"], :error => resss})
|
177
|
+
end
|
178
|
+
rescue
|
179
|
+
not_processed_list.append({:imei => aaa["imei"], :error => "Unknown error with insertion imei on IOT platform"})
|
180
|
+
end
|
181
|
+
#########end iot platform logic#######
|
182
|
+
|
183
|
+
else
|
184
|
+
resss_err = {:code => 400, :result => "IOT platform credentials not found"}
|
185
|
+
not_processed_list.append({:imei => aaa["imei"], :error => resss_err})
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
if added_on_iot_platf.length != 0
|
191
|
+
mongo_client.imei_insert_list(added_on_iot_platf)
|
192
|
+
resp_out = {:code => 200, :result => "Data processed", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
|
193
|
+
else
|
194
|
+
resp_out = {:code => 202, :result => "Empty list. Nothing for insertion", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
|
195
|
+
end
|
196
|
+
else
|
197
|
+
resp_out = {:code => 202, :result => "Nothing for insertion", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
|
198
|
+
end
|
199
|
+
rescue
|
200
|
+
resp_out = {:code => 505, :result => "Error with database communication"}
|
201
|
+
end
|
202
|
+
else
|
203
|
+
resp_out = {:code => 509, :result => "Input data invalid"}
|
204
|
+
end
|
205
|
+
end
|
206
|
+
rescue
|
207
|
+
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
208
|
+
end
|
209
|
+
thr1.join
|
210
|
+
|
211
|
+
resp_out[:body][:tosoapgw] = internal_func.iot_create_dev_soapgw_answer(input_json, resp_out)
|
212
|
+
mongo_client.audit_logger("add_device_to_profile", remote_ip, input_json, resp_out, real_ip, {})
|
213
|
+
resp_out
|
214
|
+
end
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
def add_device_to_prof2_2(request_full, real_ip, remote_ip)
|
219
|
+
|
220
|
+
#{"autorization"=>{"login"=>"test", "token"=>"tE3aFvs27"}, "devlist"=>[{"devices"=>{"imei"=>123419520034999, "type"=>"1000002", "profile"=>0}}]}
|
221
|
+
|
222
|
+
login = request_full["autorization"]["login"]
|
223
|
+
|
224
|
+
im_li =[]
|
225
|
+
|
226
|
+
for sd in request_full["devlist"]
|
227
|
+
im_li.append(sd["devices"])
|
228
|
+
end
|
229
|
+
imei_list = im_li
|
230
|
+
|
231
|
+
input_json = {:request_full => request_full}
|
232
|
+
resp_out = {}
|
233
|
+
begin
|
234
|
+
|
235
|
+
thr1 = Thread.new do
|
236
|
+
if add_functions_connector.check_input_1(login, imei_list)[:code]==200
|
237
|
+
|
238
|
+
imei = []
|
239
|
+
list1 = {}
|
240
|
+
for_insert = []
|
241
|
+
not_processed_list = []
|
242
|
+
processed_list = []
|
243
|
+
|
244
|
+
for ii in imei_list
|
245
|
+
valid_resp = internal_func.imei_validate(ii["imei"])
|
246
|
+
if valid_resp[:checked]
|
247
|
+
list1[ii["imei"]] = ii
|
248
|
+
imei.append(ii["imei"])
|
249
|
+
else
|
250
|
+
not_processed_list.append({:imei => ii["imei"], :error => valid_resp[:result]})
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
if imei != []
|
255
|
+
list_checked = mongo_client.check_imei_exists(imei)
|
256
|
+
|
257
|
+
for ss in list_checked[:body][:exists]
|
258
|
+
not_processed_list.append({:imei => ss, :error => "Device exists in database"})
|
259
|
+
p ss
|
260
|
+
p "ss"
|
261
|
+
p list_checked
|
262
|
+
end
|
263
|
+
|
264
|
+
for jj in list_checked[:body][:not_exists]
|
265
|
+
begin
|
266
|
+
get_login_info = mongo_client.check_login_prof_perm_id_one(login, list1[jj]["profile"])[:code]
|
267
|
+
if get_login_info==200
|
268
|
+
for_insert.append(list1[jj])
|
269
|
+
else
|
270
|
+
not_processed_list.append({:imei => list1[jj], :error => "Permission denied for this profile"})
|
271
|
+
end
|
272
|
+
rescue
|
273
|
+
not_processed_list.append({:imei => list1[jj], :error => "Unknown error"})
|
274
|
+
end
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
begin
|
279
|
+
added_on_iot_platf = []
|
280
|
+
if for_insert != []
|
281
|
+
##Logic for IOT Platform connection###
|
282
|
+
|
283
|
+
|
284
|
+
for aaa in for_insert
|
285
|
+
|
286
|
+
#########change 2020.05.11. imperituroard
|
287
|
+
#########replace process for get iot app_id and password from users to profile
|
288
|
+
|
289
|
+
#credentials = mongo_client.get_iot_oceanconnect_credent(login)
|
290
|
+
credentials = mongo_client.get_iot_oceanconn_credent_2(aaa["profile"])
|
291
|
+
|
292
|
+
#########
|
293
|
+
|
294
|
+
if aaa.key?("type") && !aaa.key?("device_type")
|
295
|
+
aaa["device_type"] = aaa["type"]
|
296
|
+
aaa = internal_func.delete_key_hash(aaa, "type")
|
297
|
+
end
|
298
|
+
|
299
|
+
aaa = internal_func.hash_val_to_string(aaa)
|
300
|
+
|
301
|
+
if credentials[:code] == 200
|
137
302
|
|
138
303
|
begin
|
139
304
|
dev_name = aaa["imei"].to_s
|
@@ -141,6 +306,10 @@ class IotFunctions_2
|
|
141
306
|
#get {"model"=>"BGT_PPMC", "ManufacturerID"=>"unknown", "ManufacturerNAME"=>"unknown", "device_type"=>"unknown"}
|
142
307
|
#from database
|
143
308
|
model_data = mongo_client.get_device_type_info_universal(aaa["device_type"])
|
309
|
+
profile_data = mongo_client.get_profile_universal(aaa["profile"])
|
310
|
+
p profile_data
|
311
|
+
p model_data
|
312
|
+
p "model_data"
|
144
313
|
resss = hua_aceanconnect_connector.add_new_device_on_huawei(credentials[:body][:app_id],
|
145
314
|
credentials[:body][:secret],
|
146
315
|
aaa["imei"],
|
@@ -159,6 +328,8 @@ class IotFunctions_2
|
|
159
328
|
s1 = aaa
|
160
329
|
s1[:huadata] = resss
|
161
330
|
s1[:created] = DateTime.now
|
331
|
+
s1["device_type"] = model_data[:body]["model"]
|
332
|
+
s1["profile"] = profile_data["profile_id"]
|
162
333
|
added_on_iot_platf.append(s1)
|
163
334
|
end
|
164
335
|
else
|
@@ -198,7 +369,7 @@ class IotFunctions_2
|
|
198
369
|
thr1.join
|
199
370
|
|
200
371
|
resp_out[:body][:tosoapgw] = internal_func.iot_create_dev_soapgw_answer(input_json, resp_out)
|
201
|
-
mongo_client.audit_logger("add_device_to_profile", remote_ip, input_json, resp_out, real_ip)
|
372
|
+
mongo_client.audit_logger("add_device_to_profile", remote_ip, input_json, resp_out, real_ip, {})
|
202
373
|
resp_out
|
203
374
|
end
|
204
375
|
|
@@ -261,7 +432,7 @@ class IotFunctions_2
|
|
261
432
|
|
262
433
|
resp_out[:data][:tosoapgw] = add_functions_connector.iot_query_dev_soapgw_answer(input_json, resp_out)
|
263
434
|
|
264
|
-
mongo_client.audit_logger("device_find", remote_ip, input_json, resp_out, real_ip)
|
435
|
+
mongo_client.audit_logger("device_find", remote_ip, input_json, resp_out, real_ip, {})
|
265
436
|
resp_out
|
266
437
|
|
267
438
|
end
|
@@ -433,7 +604,7 @@ class IotFunctions_2
|
|
433
604
|
end
|
434
605
|
|
435
606
|
thr3.join
|
436
|
-
mongo_client.audit_logger("imei_replace", remote_ip, input_json, resp_out, real_ip)
|
607
|
+
mongo_client.audit_logger("imei_replace", remote_ip, input_json, resp_out, real_ip, {})
|
437
608
|
|
438
609
|
resp_out
|
439
610
|
|
@@ -520,7 +691,7 @@ class IotFunctions_2
|
|
520
691
|
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
521
692
|
end
|
522
693
|
thr4.join
|
523
|
-
mongo_client.audit_logger("device_remove", remote_ip, input_json, resp_out, real_ip)
|
694
|
+
mongo_client.audit_logger("device_remove", remote_ip, input_json, resp_out, real_ip, {})
|
524
695
|
resp_out
|
525
696
|
end
|
526
697
|
|
@@ -600,7 +771,7 @@ class IotFunctions_2
|
|
600
771
|
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
601
772
|
end
|
602
773
|
thr5.join
|
603
|
-
mongo_client.audit_logger("device_add_address", remote_ip, input_json, resp_out, real_ip)
|
774
|
+
mongo_client.audit_logger("device_add_address", remote_ip, input_json, resp_out, real_ip, {})
|
604
775
|
resp_out
|
605
776
|
end
|
606
777
|
|
@@ -678,7 +849,7 @@ class IotFunctions_2
|
|
678
849
|
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
679
850
|
end
|
680
851
|
thr6.join
|
681
|
-
mongo_client.audit_logger("device_remove", remote_ip, input_json, resp_out, real_ip)
|
852
|
+
mongo_client.audit_logger("device_remove", remote_ip, input_json, resp_out, real_ip, {})
|
682
853
|
resp_out
|
683
854
|
end
|
684
855
|
|
@@ -706,7 +877,7 @@ class IotFunctions_2
|
|
706
877
|
end
|
707
878
|
end
|
708
879
|
thr7.join
|
709
|
-
mongo_client.audit_logger("autorize_subscriber", remote_ip, input_json, resp_out, real_ip)
|
880
|
+
mongo_client.audit_logger("autorize_subscriber", remote_ip, input_json, resp_out, real_ip, {})
|
710
881
|
resp_out
|
711
882
|
end
|
712
883
|
|
@@ -764,7 +935,7 @@ class IotFunctions_2
|
|
764
935
|
}
|
765
936
|
resp_out = {:code => 507, :result => "Unknown SDK error", :body => {:tosoapgw => tosoapgw}}
|
766
937
|
end
|
767
|
-
mongo_client.audit_logger("get_available_prof_2", remote_ip, input_params, resp_out, real_ip)
|
938
|
+
mongo_client.audit_logger("get_available_prof_2", remote_ip, input_params, resp_out, real_ip, {})
|
768
939
|
resp_out
|
769
940
|
end
|
770
941
|
|
@@ -820,7 +991,7 @@ class IotFunctions_2
|
|
820
991
|
}
|
821
992
|
resp_out = {:code => 507, :result => "Unknown SDK error", :body => {:tosoapgw => tosoapgw}}
|
822
993
|
end
|
823
|
-
mongo_client.audit_logger("get_available_types_2", remote_ip, input_params, resp_out, real_ip)
|
994
|
+
mongo_client.audit_logger("get_available_types_2", remote_ip, input_params, resp_out, real_ip, {})
|
824
995
|
resp_out
|
825
996
|
end
|
826
997
|
|
@@ -891,7 +1062,7 @@ class IotFunctions_2
|
|
891
1062
|
}
|
892
1063
|
resp_out = {:code => 507, :result => "Unknown SDK error", :body => {:tosoapgw => tosoapgw}}
|
893
1064
|
end
|
894
|
-
mongo_client.audit_logger("get_available_types_2", remote_ip, input_params, resp_out, real_ip)
|
1065
|
+
mongo_client.audit_logger("get_available_types_2", remote_ip, input_params, resp_out, real_ip, {})
|
895
1066
|
resp_out
|
896
1067
|
end
|
897
1068
|
|
@@ -921,7 +1092,7 @@ class IotFunctions_2
|
|
921
1092
|
rescue
|
922
1093
|
output_answ = {:code => 507, :result => "Unknown SDK error"}
|
923
1094
|
end
|
924
|
-
mongo_client.audit_logger("get_info_data_type_2", remote_ip, input_params, output_answ, real_ip)
|
1095
|
+
mongo_client.audit_logger("get_info_data_type_2", remote_ip, input_params, output_answ, real_ip, {})
|
925
1096
|
output_answ
|
926
1097
|
end
|
927
1098
|
|
@@ -952,7 +1123,7 @@ class IotFunctions_2
|
|
952
1123
|
rescue
|
953
1124
|
output_answ = {:code => 507, :result => "Unknown SDK error"}
|
954
1125
|
end
|
955
|
-
mongo_client.audit_logger("get_info_data_profile_2", remote_ip, input_params, output_answ, real_ip)
|
1126
|
+
mongo_client.audit_logger("get_info_data_profile_2", remote_ip, input_params, output_answ, real_ip, {})
|
956
1127
|
output_answ
|
957
1128
|
end
|
958
1129
|
|
@@ -1059,11 +1230,12 @@ class IotFunctions_2
|
|
1059
1230
|
if resss[:body].key?("error_code") && resss[:body]["error_code"] != 200
|
1060
1231
|
not_processed_list.append({:imei => curr_dev["imei"], :error => resss})
|
1061
1232
|
else
|
1233
|
+
p resss
|
1062
1234
|
new_id_iot = resss[:body]
|
1063
1235
|
new_profile_id = prof_new_id
|
1064
1236
|
now_date = DateTime.now
|
1065
1237
|
#finished success. update database
|
1066
|
-
attribute = {profile: new_profile_id, device_type: model_data[:body]["model"], huadata:
|
1238
|
+
attribute = {profile: new_profile_id, device_type: model_data[:body]["model"], huadata: resss, updated: now_date}
|
1067
1239
|
answ_mongo = mongo_client.modify_attr_mongo_universal(curr_dev["imei"].to_i, attribute)
|
1068
1240
|
if answ_mongo[:code] != 200
|
1069
1241
|
not_processed_list.append({:imei => curr_dev["imei"], :error => "Critical error. Mongo not updated", :mongo_err => answ_mongo})
|
@@ -1077,6 +1249,8 @@ class IotFunctions_2
|
|
1077
1249
|
rescue
|
1078
1250
|
not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown error with insertion imei on IOT platform"})
|
1079
1251
|
end
|
1252
|
+
else
|
1253
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Something wrong with IOT platform"})
|
1080
1254
|
end
|
1081
1255
|
else
|
1082
1256
|
not_processed_list.append({:imei => curr_dev["imei"], :error => "Not processed by iot platform. deviceId not found in mongoDB"})
|
@@ -1125,7 +1299,7 @@ class IotFunctions_2
|
|
1125
1299
|
thr13set.join
|
1126
1300
|
|
1127
1301
|
output_answ = {:code => 200, :result => "Success", :body => {:to_soap_gw => answ_to_soapgw, :not_processed_list => not_processed_list, :processed_list => processed_list}}
|
1128
|
-
mongo_client.audit_logger("set_data_replace_2", remote_ip, input_params, output_answ, real_ip)
|
1302
|
+
mongo_client.audit_logger("set_data_replace_2", remote_ip, input_params, output_answ, real_ip, {})
|
1129
1303
|
output_answ
|
1130
1304
|
end
|
1131
1305
|
|
@@ -1207,6 +1381,31 @@ class IotFunctions_2
|
|
1207
1381
|
end
|
1208
1382
|
|
1209
1383
|
|
1384
|
+
|
1385
|
+
|
1386
|
+
|
1387
|
+
|
1388
|
+
################################################
|
1389
|
+
############technology procedures###############
|
1390
|
+
################################################
|
1391
|
+
|
1392
|
+
def delete_all_devices_in_database
|
1393
|
+
|
1394
|
+
imei_list = []
|
1395
|
+
all_imei = mongo_client.get_all_imei_from_db
|
1396
|
+
all_imei[:body].each do |immm|
|
1397
|
+
imei_list.append(immm["imei"])
|
1398
|
+
end
|
1399
|
+
|
1400
|
+
imei_list.each do |del_imei|
|
1401
|
+
p del_imei
|
1402
|
+
self.device_remove_2("test", del_imei, "localhost", "localhost")
|
1403
|
+
end
|
1404
|
+
end
|
1405
|
+
|
1406
|
+
|
1407
|
+
|
1408
|
+
|
1210
1409
|
#for internal use. Add new device model
|
1211
1410
|
def add_model_to_mongo(model, manufacture_id, manufacture_name, device_type, description, note)
|
1212
1411
|
model = {
|
@@ -25,6 +25,12 @@ class HuaIot
|
|
25
25
|
@client_iot_mongo = MongoIot.new(mongo_ip, mongo_port, mongo_database)
|
26
26
|
end
|
27
27
|
|
28
|
+
def valid_json?(json)
|
29
|
+
JSON.parse(json)
|
30
|
+
rescue JSON::ParserError => e
|
31
|
+
json
|
32
|
+
end
|
33
|
+
|
28
34
|
def parse_token(str)
|
29
35
|
begin
|
30
36
|
dd = str.split(",")
|
@@ -54,6 +60,9 @@ class HuaIot
|
|
54
60
|
def get_token(app_id, secret)
|
55
61
|
internal_func.printer_texter("get_token: start. Step1, iput: app_id: #{app_id.to_s}, secret: #{secret.to_s}", "debug")
|
56
62
|
out_resp = {}
|
63
|
+
fff = {}
|
64
|
+
data = {}
|
65
|
+
url_string = ""
|
57
66
|
begin
|
58
67
|
path = "/iocm/app/sec/v1.1.0/login"
|
59
68
|
url_string = "https://" + platformip + ":" + platformport + path
|
@@ -73,16 +82,21 @@ class HuaIot
|
|
73
82
|
request.content_type = 'application/x-www-form-urlencoded'
|
74
83
|
request.body = URI.encode_www_form(data)
|
75
84
|
res = https.request(request)
|
76
|
-
|
85
|
+
p res.code
|
86
|
+
p res.message
|
87
|
+
p res.body.to_s
|
88
|
+
|
89
|
+
out_resp = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
90
|
+
|
77
91
|
fff = {:func => "get_token",
|
78
92
|
:iot_fun => "",
|
79
93
|
:req_header => {:content_type => 'application/x-www-form-urlencoded',
|
80
94
|
:platform => "Huawei oceanconnect"
|
81
95
|
}}
|
82
|
-
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
83
96
|
rescue
|
84
97
|
out_resp = {:code => 500, :message => "failed get token"}
|
85
98
|
end
|
99
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
86
100
|
jjj = {:procedure => "get_token", :answ => out_resp}
|
87
101
|
internal_func.printer_texter(jjj, "debug")
|
88
102
|
out_resp
|
@@ -93,6 +107,9 @@ class HuaIot
|
|
93
107
|
|
94
108
|
internal_func.printer_texter("token_logout Step1 token: #{token}", "debug")
|
95
109
|
out_resp = {}
|
110
|
+
fff = {}
|
111
|
+
data = {}
|
112
|
+
url_string = ""
|
96
113
|
begin
|
97
114
|
path = "/iocm/app/sec/v1.1.0/logout"
|
98
115
|
url_string = "https://" + platformip + ":" + platformport + path
|
@@ -111,15 +128,21 @@ class HuaIot
|
|
111
128
|
request.content_type = 'application/json'
|
112
129
|
request.body = URI.encode_www_form(data)
|
113
130
|
res = https.request(request)
|
114
|
-
|
131
|
+
#JSON.parse(res.body.to_s)
|
132
|
+
out_resp = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s) }
|
133
|
+
|
115
134
|
fff = {:func => "token_logout",
|
116
135
|
:iot_fun => "logout",
|
117
136
|
:platform => "Huawei oceanconnect"
|
118
137
|
}
|
119
|
-
|
138
|
+
p res.code
|
139
|
+
p res.message
|
140
|
+
p res.body.to_s
|
141
|
+
|
120
142
|
rescue
|
121
143
|
out_resp = {:code => 500, :message => "failed logout token"}
|
122
144
|
end
|
145
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
123
146
|
jjj = {:procedure => "token_logout", :answ => out_resp}
|
124
147
|
internal_func.printer_texter(jjj, "debug")
|
125
148
|
out_resp
|
@@ -144,7 +167,7 @@ class HuaIot
|
|
144
167
|
data = {nodeId: node_id}
|
145
168
|
request.body = data.to_json
|
146
169
|
res = https.request(request)
|
147
|
-
out_resp = {:code => res.code, :message => res.message, :body =>
|
170
|
+
out_resp = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
148
171
|
fff = {:func => "dev_register_verif_code_mode",
|
149
172
|
:iot_fun => "Registering a Directly Connected Device (Verification Code Mode) (V2)",
|
150
173
|
:req_header => {:content_type => 'application/json',
|
@@ -182,7 +205,7 @@ class HuaIot
|
|
182
205
|
internal_func.printer_texter({:procedure => "dev_register_passw_code_mode2", :data => {:body => data_out, :url => url_string}}, "debug")
|
183
206
|
request.body = data_out.to_json
|
184
207
|
res = https.request(request)
|
185
|
-
out_resp = {:code => res.code, :message => res.message, :body =>
|
208
|
+
out_resp = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
186
209
|
fff = {:func => "dev_register_passw_code_mode2",
|
187
210
|
:iot_fun => "2.2.4",
|
188
211
|
:req_header => {:authorization => 'Bearer ' + token,
|
@@ -217,7 +240,7 @@ class HuaIot
|
|
217
240
|
request.body = data_out
|
218
241
|
res = https.request(request)
|
219
242
|
p res.body.to_s
|
220
|
-
out_resp = {:code => res.code, :message => res.message, :body =>
|
243
|
+
out_resp = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
221
244
|
fff = {:func => "dev_reg_passw_code_mode2_2",
|
222
245
|
:iot_fun => "2.2.4",
|
223
246
|
:req_header => {:content_type => 'application/json',
|
@@ -249,7 +272,7 @@ class HuaIot
|
|
249
272
|
request['app_key'] = app_id
|
250
273
|
res = https.request(request)
|
251
274
|
if res.body != nil
|
252
|
-
out_resp = {:code => res.code, :message => res.message, :body => {:answ =>
|
275
|
+
out_resp = {:code => res.code, :message => res.message, :body => {:answ => valid_json?(res.body.to_s)}}
|
253
276
|
else
|
254
277
|
out_resp = {:code => res.code, :message => res.message, :body => {:answ => "no data"}}
|
255
278
|
end
|
@@ -290,7 +313,7 @@ class HuaIot
|
|
290
313
|
res = https.request(request)
|
291
314
|
p res.body.to_s
|
292
315
|
p res.code
|
293
|
-
{:code => res.code, :message => res.message, :body =>
|
316
|
+
{:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
294
317
|
end
|
295
318
|
|
296
319
|
#2.2.14 Querying Device Activation Status
|
@@ -310,7 +333,7 @@ class HuaIot
|
|
310
333
|
request['Authorization'] = 'Bearer ' + token
|
311
334
|
request['app_key'] = app_id
|
312
335
|
res = https.request(request)
|
313
|
-
output_ans = {:code => res.code, :message => res.message, :body =>
|
336
|
+
output_ans = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
314
337
|
fff = {:func => "querying_device_activ_status",
|
315
338
|
:iot_fun => "2.2.14",
|
316
339
|
:req_header => {:content_type => 'application/json',
|
@@ -340,7 +363,7 @@ class HuaIot
|
|
340
363
|
request['Authorization'] = 'Bearer ' + token
|
341
364
|
request['app_key'] = app_id
|
342
365
|
res = https.request(request)
|
343
|
-
out_resp = {:code => res.code, :message => res.message, :body =>
|
366
|
+
out_resp = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
344
367
|
fff = {:func => "querying_device_info",
|
345
368
|
:iot_fun => "2.9.1",
|
346
369
|
:req_header => {:authorization => 'Bearer ' + token,
|
@@ -371,7 +394,7 @@ class HuaIot
|
|
371
394
|
req_body = {deviceIds: dev_list}
|
372
395
|
request.body = req_body.to_json
|
373
396
|
res = https.request(request)
|
374
|
-
output_str = {:code => res.code, :message => res.message, :body =>
|
397
|
+
output_str = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
375
398
|
fff = {:func => "querying_device_direct_conn",
|
376
399
|
:iot_fun => "2.9.6",
|
377
400
|
:req_header => {:authorization => 'Bearer ' + token,
|
@@ -401,7 +424,7 @@ class HuaIot
|
|
401
424
|
request['Authorization'] = 'Bearer ' + token
|
402
425
|
request['app_key'] = app_id
|
403
426
|
res = https.request(request)
|
404
|
-
output_ans = {:code => res.code, :message => res.message, :body =>
|
427
|
+
output_ans = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
405
428
|
|
406
429
|
fff = {:func => "querying_device_type_list",
|
407
430
|
:iot_fun => "2.9.19",
|
@@ -435,7 +458,7 @@ class HuaIot
|
|
435
458
|
data = {deviceIds: dev_list}
|
436
459
|
request.body = data.to_json
|
437
460
|
res = https.request(request)
|
438
|
-
output_ans = {:code => res.code, :message => res.message, :body =>
|
461
|
+
output_ans = {:code => res.code, :message => res.message, :body => valid_json?(res.body.to_s)}
|
439
462
|
fff = {:func => "quer_dev_direct_conn_batches",
|
440
463
|
:iot_fun => "2.9.6",
|
441
464
|
:req_header => {:content_type => 'application/json',
|
@@ -472,7 +495,7 @@ class HuaIot
|
|
472
495
|
p res.code
|
473
496
|
p res.body
|
474
497
|
if res.body != nil
|
475
|
-
out_resp = {:code => res.code, :message => res.message, :body => {:answ =>
|
498
|
+
out_resp = {:code => res.code, :message => res.message, :body => {:answ => valid_json?(res.body.to_s)}}
|
476
499
|
else
|
477
500
|
out_resp = {:code => res.code, :message => res.message, :body => {:answ => "no data"}}
|
478
501
|
end
|
@@ -163,6 +163,30 @@ class InternalFunc
|
|
163
163
|
v3.uniq - v2.uniq - v1.uniq
|
164
164
|
end
|
165
165
|
|
166
|
+
|
167
|
+
#delete one key from hash
|
168
|
+
def delete_key_hash(hash_f, delete_key)
|
169
|
+
res = {}
|
170
|
+
hash_f.each do |ggg|
|
171
|
+
if ggg[0].to_s != delete_key.to_s
|
172
|
+
res[ggg[0]] = ggg[1]
|
173
|
+
end
|
174
|
+
end
|
175
|
+
res
|
176
|
+
end
|
177
|
+
|
178
|
+
|
179
|
+
#process hash array. Transform keys to string keys
|
180
|
+
def hash_val_to_string(hash_full)
|
181
|
+
resp = {}
|
182
|
+
hash_full.each do |hsh|
|
183
|
+
resp[hsh[0].to_s] = hsh[1]
|
184
|
+
end
|
185
|
+
resp
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
|
166
190
|
def test()
|
167
191
|
p "eeeeeeeeeeeeeeeeeeeeeeee"
|
168
192
|
end
|
@@ -20,7 +20,7 @@ class MongoIot
|
|
20
20
|
@internal_func = InternalFunc.new
|
21
21
|
end
|
22
22
|
|
23
|
-
def audit_logger(proc_name, src_ip, input_json, output_json, real_ip)
|
23
|
+
def audit_logger(proc_name, src_ip, input_json, output_json, real_ip, add_params)
|
24
24
|
out_resp = {}
|
25
25
|
begin
|
26
26
|
current = internal_func.datetimenow
|
@@ -30,7 +30,8 @@ class MongoIot
|
|
30
30
|
:date => current,
|
31
31
|
:sender => {:src_ip => src_ip, :real_ip => real_ip},
|
32
32
|
:input_params => input_json,
|
33
|
-
:output_params => output_json
|
33
|
+
:output_params => output_json,
|
34
|
+
:add_params => add_params
|
34
35
|
}
|
35
36
|
result = collection.insert_one(doc)
|
36
37
|
out_resp = {:code => 200, :result => "audit_logger: Request completed successfully", :body => result}
|
@@ -540,7 +541,7 @@ class MongoIot
|
|
540
541
|
result_ps.append(row)
|
541
542
|
}
|
542
543
|
dattaa = result_ps[0]
|
543
|
-
if dattaa!=nil
|
544
|
+
if dattaa != nil
|
544
545
|
out_resp = {:code => 200, :result => "get_device_type_info_by_model: Request completed successfully", :body => dattaa}
|
545
546
|
else
|
546
547
|
out_resp = {:code => 404, :result => "get_device_type_info_by_model: Device info not found", :body => {"model" => device_model, "ManufacturerID" => "unknown", "ManufacturerNAME" => "unknown", "device_type" => "unknown"}}
|
@@ -566,9 +567,9 @@ class MongoIot
|
|
566
567
|
}
|
567
568
|
dattaa = result_ps[0]
|
568
569
|
if dattaa!=nil
|
569
|
-
out_resp = {:code => 200, :result => "
|
570
|
+
out_resp = {:code => 200, :result => "get_device_type_info_universal: Request completed successfully", :body => dattaa}
|
570
571
|
else
|
571
|
-
out_resp = {:code => 404, :result => "
|
572
|
+
out_resp = {:code => 404, :result => "get_device_type_info_universal: Device info not found", :body => {"model" => device_model, "ManufacturerID" => "unknown", "ManufacturerNAME" => "unknown", "device_type" => "unknown"}}
|
572
573
|
end
|
573
574
|
else
|
574
575
|
result_ps2 = []
|
@@ -578,9 +579,9 @@ class MongoIot
|
|
578
579
|
}
|
579
580
|
dattaa = result_ps2[0]
|
580
581
|
if dattaa!=nil
|
581
|
-
out_resp = {:code => 200, :result => "
|
582
|
+
out_resp = {:code => 200, :result => "get_device_type_info_universal: Request completed successfully", :body => dattaa}
|
582
583
|
else
|
583
|
-
out_resp = {:code => 404, :result => "
|
584
|
+
out_resp = {:code => 404, :result => "get_device_type_info_universal: Device info not found", :body => {"model" => device_model, "ManufacturerID" => "unknown", "ManufacturerNAME" => "unknown", "device_type" => "unknown"}}
|
584
585
|
end
|
585
586
|
end
|
586
587
|
|
@@ -713,5 +714,23 @@ class MongoIot
|
|
713
714
|
out_resp
|
714
715
|
end
|
715
716
|
|
717
|
+
|
718
|
+
def get_all_imei_from_db
|
719
|
+
out_resp = {}
|
720
|
+
begin
|
721
|
+
req2 = []
|
722
|
+
result_ps = []
|
723
|
+
collection = client[:device_imei]
|
724
|
+
collection.find({}, {:_id => 0}).each {|row|
|
725
|
+
result_ps.append(row)
|
726
|
+
}
|
727
|
+
out_resp = {:code => 200, :result => "get_all_imei_from_db: Request completed successfully", :body => result_ps}
|
728
|
+
rescue
|
729
|
+
out_resp = {:code => 507, :result => "get_all_imei_from_db: Unknown SDK error"}
|
730
|
+
end
|
731
|
+
#internal_func.printer_texter(out_resp, "debug")
|
732
|
+
out_resp
|
733
|
+
end
|
734
|
+
|
716
735
|
end
|
717
736
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imperituroard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dzmitry Buynovskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -187,6 +187,7 @@ extra_rdoc_files: []
|
|
187
187
|
files:
|
188
188
|
- ".gitignore"
|
189
189
|
- ".idea/runConfigurations/hua_oceanconnect_adapter.xml"
|
190
|
+
- ".idea/runConfigurations/version.xml"
|
190
191
|
- ".ruby-gemset"
|
191
192
|
- ".ruby-version"
|
192
193
|
- ".travis.yml"
|