imperituroard 0.5.9 → 1.0.4
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 64ac99c5a41209df78fa5f319ec47a51cb28b05b
|
|
4
|
+
data.tar.gz: 004ea48aa310c5d3159ffa8f93b6451f6105fe0a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 97de046b4032c0751a046c4e1f57cbaffafd63936e53bfa08bcca6dc7216b6a5f73dcf1a68715c9a0a21b4f4ff5e1c116b3fabe0f450a264962543e68b6055b3
|
|
7
|
+
data.tar.gz: 62ad29d69a43d0b0574c5249ac6777bc153a10472b9cce01298a80e27c8c956b6776aa86eef9d558d87acd1d260d5f7ca66428fa12ac8cfead71aab7fb0a7383
|
data/lib/imperituroard.rb
CHANGED
|
@@ -107,42 +107,47 @@ class Pipam
|
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
class Iot
|
|
110
|
-
attr_accessor :
|
|
111
|
-
:mongoport,
|
|
112
|
-
:iotip,
|
|
113
|
-
:mongo_database,
|
|
114
|
-
:iotplatform_ip,
|
|
115
|
-
:iotplatform_port,
|
|
116
|
-
:cert_path,
|
|
117
|
-
:key_path,
|
|
110
|
+
attr_accessor :param_all,
|
|
118
111
|
:mongo_client,
|
|
119
112
|
:add_functions_connector,
|
|
120
|
-
|
|
121
|
-
|
|
113
|
+
#:real_ip, #real ip address of procedure caller
|
|
114
|
+
#:remote_ip, #ip address of balancer
|
|
122
115
|
:hua_aceanconnect_connector,
|
|
123
116
|
:internal_func,
|
|
124
117
|
:iot_connector
|
|
125
118
|
|
|
126
|
-
def initialize(mongoip,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
119
|
+
def initialize(mongoip,
|
|
120
|
+
mongoport,
|
|
121
|
+
iotip,
|
|
122
|
+
mongo_database,
|
|
123
|
+
iotplatform_ip,
|
|
124
|
+
iotplatform_port,
|
|
125
|
+
cert_path,
|
|
126
|
+
key_path,
|
|
127
|
+
telegram_api_url,
|
|
128
|
+
telegram_chat_id
|
|
129
|
+
#real_ip,
|
|
130
|
+
#remote_ip
|
|
131
|
+
)
|
|
132
|
+
@param_all = {:mongoip => mongoip,
|
|
133
|
+
:mongoport => mongoport,
|
|
134
|
+
:iotip => iotip,
|
|
135
|
+
:mongo_database => mongo_database,
|
|
136
|
+
:iotplatform_ip => iotplatform_ip,
|
|
137
|
+
:cert_path => cert_path,
|
|
138
|
+
:key_path => key_path
|
|
139
|
+
}
|
|
140
|
+
@mongo_client = MongoIot.new(param_all[:mongoip], param_all[:mongoport], param_all[:mongo_database])
|
|
137
141
|
@add_functions_connector = AdditionalFunc.new(telegram_api_url, telegram_chat_id)
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
@hua_aceanconnect_connector = HuaIot.new(iotplatform_ip, iotplatform_port, cert_path, key_path)
|
|
142
|
+
#@real_ip = real_ip
|
|
143
|
+
#@remote_ip = remote_ip
|
|
144
|
+
@hua_aceanconnect_connector = HuaIot.new(iotplatform_ip, iotplatform_port, cert_path, key_path, param_all[:mongoip], param_all[:mongoport], param_all[:mongo_database])
|
|
141
145
|
@internal_func = InternalFunc.new
|
|
142
|
-
@iot_connector = IotFunctions_2.new(mongoip, mongoport, iotip, mongo_database,
|
|
143
|
-
iotplatform_ip, iotplatform_port, cert_path, key_path, telegram_api_url, telegram_chat_id
|
|
146
|
+
@iot_connector = IotFunctions_2.new(param_all[:mongoip], param_all[:mongoport], iotip, param_all[:mongo_database],
|
|
147
|
+
iotplatform_ip, iotplatform_port, cert_path, key_path, telegram_api_url, telegram_chat_id)
|
|
144
148
|
end
|
|
145
149
|
|
|
150
|
+
|
|
146
151
|
#error list
|
|
147
152
|
|
|
148
153
|
#:code => 507, :result => "Unknown SDK error"
|
|
@@ -157,8 +162,8 @@ class Iot
|
|
|
157
162
|
#massive commands
|
|
158
163
|
#+++
|
|
159
164
|
#iot logic added
|
|
160
|
-
def add_device_to_profile(login, imei_list)
|
|
161
|
-
iot_connector.add_device_to_prof_2(login, imei_list)
|
|
165
|
+
def add_device_to_profile(login, imei_list, real_ip, remote_ip)
|
|
166
|
+
iot_connector.add_device_to_prof_2(login, imei_list, real_ip, remote_ip)
|
|
162
167
|
end
|
|
163
168
|
|
|
164
169
|
|
|
@@ -169,8 +174,8 @@ class Iot
|
|
|
169
174
|
# imei
|
|
170
175
|
# imei_list =[41234,23452345,132412]
|
|
171
176
|
#++
|
|
172
|
-
def device_find(login, imei_list)
|
|
173
|
-
iot_connector.device_find_2(login, imei_list)
|
|
177
|
+
def device_find(login, imei_list, real_ip, remote_ip)
|
|
178
|
+
iot_connector.device_find_2(login, imei_list, real_ip, remote_ip)
|
|
174
179
|
end
|
|
175
180
|
|
|
176
181
|
#!3 device modify, change imei
|
|
@@ -180,8 +185,8 @@ class Iot
|
|
|
180
185
|
#massive commands
|
|
181
186
|
#im_list = [{"imei_old"=>7967843245667, "imei_new"=>7967843245665}]
|
|
182
187
|
#++
|
|
183
|
-
def imei_replace(login, im_list)
|
|
184
|
-
iot_connector.imei_replace_2(login, im_list)
|
|
188
|
+
def imei_replace(login, im_list, real_ip, remote_ip)
|
|
189
|
+
iot_connector.imei_replace_2(login, im_list, real_ip, remote_ip)
|
|
185
190
|
end
|
|
186
191
|
|
|
187
192
|
#!!4 remove device
|
|
@@ -192,8 +197,8 @@ class Iot
|
|
|
192
197
|
#login="test"
|
|
193
198
|
#+++
|
|
194
199
|
#IOT logic added
|
|
195
|
-
def device_remove(login, imei)
|
|
196
|
-
iot_connector.device_remove_2(login, imei)
|
|
200
|
+
def device_remove(login, imei, real_ip, remote_ip)
|
|
201
|
+
iot_connector.device_remove_2(login, imei, real_ip, remote_ip)
|
|
197
202
|
end
|
|
198
203
|
|
|
199
204
|
|
|
@@ -204,8 +209,8 @@ class Iot
|
|
|
204
209
|
#newdevice_list=[{:imei=>7967843245665, :address=>"Golubeva51"}]
|
|
205
210
|
#+++
|
|
206
211
|
#iot platform integration completed
|
|
207
|
-
def device_add_address(login, newdevice_list)
|
|
208
|
-
iot_connector.device_add_address_2(login, newdevice_list)
|
|
212
|
+
def device_add_address(login, newdevice_list, real_ip, remote_ip)
|
|
213
|
+
iot_connector.device_add_address_2(login, newdevice_list, real_ip, remote_ip)
|
|
209
214
|
end
|
|
210
215
|
|
|
211
216
|
#6 add service by SPA
|
|
@@ -215,38 +220,42 @@ class Iot
|
|
|
215
220
|
#msisdn
|
|
216
221
|
#newdevice_list=[{:imei=>7967843245665, :attributes=>{:address=>"Golubeva51", :profile=>"wqeqcqeqwev", :msisdn=>375298766719, :imsi=>25702858586756875}}]
|
|
217
222
|
#+
|
|
218
|
-
def add_service(login, device_list)
|
|
219
|
-
iot_connector.add_service_2(login, device_list)
|
|
223
|
+
def add_service(login, device_list, real_ip, remote_ip)
|
|
224
|
+
iot_connector.add_service_2(login, device_list, real_ip, remote_ip)
|
|
220
225
|
end
|
|
221
226
|
|
|
222
|
-
|
|
223
227
|
#7 procedure for subscriber autorization
|
|
224
|
-
def autorize_subscriber(login, password)
|
|
225
|
-
iot_connector.autorize_subscriber_2(login, password)
|
|
228
|
+
def autorize_subscriber(login, password, real_ip, remote_ip)
|
|
229
|
+
iot_connector.autorize_subscriber_2(login, password, real_ip, remote_ip)
|
|
226
230
|
end
|
|
227
231
|
|
|
228
|
-
|
|
229
232
|
#8 get available profiles for login
|
|
230
|
-
def get_available_profiles(login)
|
|
231
|
-
iot_connector.get_available_prof_2(login)
|
|
233
|
+
def get_available_profiles(login, real_ip, remote_ip)
|
|
234
|
+
iot_connector.get_available_prof_2(login, real_ip, remote_ip)
|
|
232
235
|
end
|
|
233
236
|
|
|
234
|
-
|
|
235
237
|
#9 get available types for login
|
|
236
|
-
def get_available_types(login)
|
|
237
|
-
iot_connector.get_available_types_2(login)
|
|
238
|
+
def get_available_types(login, real_ip, remote_ip)
|
|
239
|
+
iot_connector.get_available_types_2(login, real_ip, remote_ip)
|
|
238
240
|
end
|
|
239
241
|
|
|
240
|
-
|
|
241
242
|
#10 get info for device type
|
|
242
|
-
def get_info_data_type(type)
|
|
243
|
-
iot_connector.get_info_data_type_2(type)
|
|
243
|
+
def get_info_data_type(type, real_ip, remote_ip)
|
|
244
|
+
iot_connector.get_info_data_type_2(type, real_ip, remote_ip)
|
|
244
245
|
end
|
|
245
246
|
|
|
246
|
-
|
|
247
247
|
#11 get info for profile
|
|
248
|
-
def get_info_data_profile(profile)
|
|
249
|
-
iot_connector.get_info_data_profile_2(profile)
|
|
248
|
+
def get_info_data_profile(profile, real_ip, remote_ip)
|
|
249
|
+
iot_connector.get_info_data_profile_2(profile, real_ip, remote_ip)
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
#13 replace data for imei. Replace Type and Profile
|
|
253
|
+
#new procedure 2020-06-06
|
|
254
|
+
#params =
|
|
255
|
+
# {"autorization"=>{"login"=>"test", "token"=>"token"}, "datalist"=>[{"imei"=>"524523654366", "new_profile"=>"3", "new_type"=>"1000001"}, {"imei"=>"53623413423", "new_profile"=>"1", "new_type"=>"1000003"}]}
|
|
256
|
+
# answer = {:code=>200, :result=>"Success", :body=>{:processednum=>1, :failednum=>1, :deviceserr=>[{:failedimei=>524523654366}]}}
|
|
257
|
+
def set_data_replace(soapgw_params, real_ip, remote_ip)
|
|
258
|
+
iot_connector.set_data_replace_2(soapgw_params, real_ip, remote_ip)
|
|
250
259
|
end
|
|
251
260
|
|
|
252
261
|
|
|
@@ -258,7 +267,6 @@ class Iot
|
|
|
258
267
|
iot_connector.test1278493
|
|
259
268
|
end
|
|
260
269
|
|
|
261
|
-
|
|
262
270
|
end
|
|
263
271
|
|
|
264
272
|
|
|
@@ -402,4 +410,4 @@ class Ukaz60Automation_2
|
|
|
402
410
|
ukaz60_func.no_pasaran
|
|
403
411
|
end
|
|
404
412
|
|
|
405
|
-
end
|
|
413
|
+
end
|
|
@@ -17,34 +17,44 @@ class IotFunctions_2
|
|
|
17
17
|
|
|
18
18
|
attr_accessor :mongoip,
|
|
19
19
|
:mongoport,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
#:iotip,
|
|
21
|
+
#:mongo_database,
|
|
22
|
+
#:iotplatform_ip,
|
|
23
|
+
#:iotplatform_port,
|
|
24
24
|
:cert_path,
|
|
25
25
|
:key_path,
|
|
26
26
|
:mongo_client,
|
|
27
27
|
:add_functions_connector,
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
#:real_ip, #real ip address of procedure caller
|
|
29
|
+
#:remote_ip, #ip address of balancer
|
|
30
30
|
:hua_aceanconnect_connector,
|
|
31
31
|
:internal_func
|
|
32
32
|
|
|
33
|
-
def initialize(mongoip,
|
|
34
|
-
|
|
33
|
+
def initialize(mongoip,
|
|
34
|
+
mongoport,
|
|
35
|
+
iotip,
|
|
36
|
+
mongo_database,
|
|
37
|
+
iotplatform_ip,
|
|
38
|
+
iotplatform_port,
|
|
39
|
+
cert_path,
|
|
40
|
+
key_path,
|
|
41
|
+
telegram_api_url,
|
|
42
|
+
telegram_chat_id
|
|
43
|
+
#real_ip, remote_ip
|
|
44
|
+
)
|
|
35
45
|
@mongoip = mongoip
|
|
36
46
|
@mongoport = mongoport
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
#@iotip = iotip
|
|
48
|
+
#@mongo_database = mongo_database
|
|
49
|
+
#@iotplatform_ip = iotplatform_ip
|
|
50
|
+
#@iotplatform_port = iotplatform_port
|
|
41
51
|
@cert_path = cert_path
|
|
42
52
|
@key_path = key_path
|
|
43
53
|
@mongo_client = MongoIot.new(mongoip, mongoport, mongo_database)
|
|
44
54
|
@add_functions_connector = AdditionalFunc.new(telegram_api_url, telegram_chat_id)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
@hua_aceanconnect_connector = HuaIot.new(iotplatform_ip, iotplatform_port, cert_path, key_path)
|
|
55
|
+
#@real_ip = real_ip
|
|
56
|
+
#@remote_ip = remote_ip
|
|
57
|
+
@hua_aceanconnect_connector = HuaIot.new(iotplatform_ip, iotplatform_port, cert_path, key_path, mongoip, mongoport, mongo_database)
|
|
48
58
|
@internal_func = InternalFunc.new
|
|
49
59
|
end
|
|
50
60
|
|
|
@@ -57,7 +67,7 @@ class IotFunctions_2
|
|
|
57
67
|
#massive commands
|
|
58
68
|
#+++
|
|
59
69
|
#iot logic added
|
|
60
|
-
def add_device_to_prof_2(login, imei_list)
|
|
70
|
+
def add_device_to_prof_2(login, imei_list, real_ip, remote_ip)
|
|
61
71
|
input_json = {:login => login, :imei_list => imei_list}
|
|
62
72
|
resp_out = {}
|
|
63
73
|
begin
|
|
@@ -144,24 +154,21 @@ class IotFunctions_2
|
|
|
144
154
|
model_data[:body]["model"]
|
|
145
155
|
)
|
|
146
156
|
if resss[:code]=="200"
|
|
147
|
-
|
|
148
157
|
if resss[:body].key?("error_code") && resss[:body]["error_code"] != 200
|
|
149
158
|
not_processed_list.append({:imei => aaa["imei"], :error => resss})
|
|
150
159
|
else
|
|
151
160
|
s1 = aaa
|
|
152
161
|
s1[:huadata] = resss
|
|
153
162
|
s1[:created] = DateTime.now
|
|
163
|
+
s1[:type] = s1["device_type"]
|
|
154
164
|
added_on_iot_platf.append(s1)
|
|
155
165
|
end
|
|
156
|
-
|
|
157
166
|
else
|
|
158
167
|
not_processed_list.append({:imei => aaa["imei"], :error => resss})
|
|
159
168
|
end
|
|
160
169
|
rescue
|
|
161
170
|
not_processed_list.append({:imei => aaa["imei"], :error => "Unknown error with insertion imei on IOT platform"})
|
|
162
171
|
end
|
|
163
|
-
|
|
164
|
-
|
|
165
172
|
#########end iot platform logic#######
|
|
166
173
|
|
|
167
174
|
else
|
|
@@ -177,16 +184,12 @@ class IotFunctions_2
|
|
|
177
184
|
else
|
|
178
185
|
resp_out = {:code => 202, :result => "Empty list. Nothing for insertion", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
|
|
179
186
|
end
|
|
180
|
-
|
|
181
|
-
|
|
182
187
|
else
|
|
183
188
|
resp_out = {:code => 202, :result => "Nothing for insertion", :body => {:imei_processed => added_on_iot_platf, :error_list => not_processed_list}}
|
|
184
|
-
|
|
185
189
|
end
|
|
186
190
|
rescue
|
|
187
191
|
resp_out = {:code => 505, :result => "Error with database communication"}
|
|
188
192
|
end
|
|
189
|
-
|
|
190
193
|
else
|
|
191
194
|
resp_out = {:code => 509, :result => "Input data invalid"}
|
|
192
195
|
end
|
|
@@ -211,7 +214,7 @@ class IotFunctions_2
|
|
|
211
214
|
# imei
|
|
212
215
|
# imei_list =[41234,23452345,132412]
|
|
213
216
|
#++
|
|
214
|
-
def device_find_2(login, imei_list)
|
|
217
|
+
def device_find_2(login, imei_list, real_ip, remote_ip)
|
|
215
218
|
input_json = {:login => login, :imei_list => imei_list}
|
|
216
219
|
ime_list_approved = []
|
|
217
220
|
ime_list_notapproved = []
|
|
@@ -274,7 +277,7 @@ class IotFunctions_2
|
|
|
274
277
|
#massive commands
|
|
275
278
|
#im_list = [{"imei_old"=>7967843245667, "imei_new"=>7967843245665}]
|
|
276
279
|
#++
|
|
277
|
-
def imei_replace_2(login, im_list)
|
|
280
|
+
def imei_replace_2(login, im_list, real_ip, remote_ip)
|
|
278
281
|
input_json = {:login => login, :imei_list => im_list}
|
|
279
282
|
resp_out = {}
|
|
280
283
|
|
|
@@ -449,7 +452,7 @@ class IotFunctions_2
|
|
|
449
452
|
#login="test"
|
|
450
453
|
#+++
|
|
451
454
|
#IOT logic added
|
|
452
|
-
def device_remove_2(login, imei)
|
|
455
|
+
def device_remove_2(login, imei, real_ip, remote_ip)
|
|
453
456
|
|
|
454
457
|
input_json = {:login => login, :imei_list => imei}
|
|
455
458
|
resp_out = {}
|
|
@@ -533,7 +536,7 @@ class IotFunctions_2
|
|
|
533
536
|
#newdevice_list=[{:imei=>7967843245665, :address=>"Golubeva51"}]
|
|
534
537
|
#+++
|
|
535
538
|
#iot platform integration completed
|
|
536
|
-
def device_add_address_2(login, newdevice_list)
|
|
539
|
+
def device_add_address_2(login, newdevice_list, real_ip, remote_ip)
|
|
537
540
|
#add_functions_connector.telegram_message(newdevice_list.to_s)
|
|
538
541
|
p newdevice_list
|
|
539
542
|
p "gas"
|
|
@@ -615,7 +618,7 @@ class IotFunctions_2
|
|
|
615
618
|
#msisdn
|
|
616
619
|
#newdevice_list=[{:imei=>7967843245665, :attributes=>{:address=>"Golubeva51", :profile=>"wqeqcqeqwev", :msisdn=>375298766719, :imsi=>25702858586756875}}]
|
|
617
620
|
#+
|
|
618
|
-
def add_service_2(login, device_list)
|
|
621
|
+
def add_service_2(login, device_list, real_ip, remote_ip)
|
|
619
622
|
resp_out = {}
|
|
620
623
|
not_processed = []
|
|
621
624
|
processed = []
|
|
@@ -676,9 +679,7 @@ class IotFunctions_2
|
|
|
676
679
|
else
|
|
677
680
|
resp_out = {:code => 509, :result => "Input data invalid"}
|
|
678
681
|
end
|
|
679
|
-
|
|
680
682
|
end
|
|
681
|
-
|
|
682
683
|
rescue
|
|
683
684
|
resp_out = {:code => 507, :result => "Unknown SDK error"}
|
|
684
685
|
end
|
|
@@ -690,7 +691,7 @@ class IotFunctions_2
|
|
|
690
691
|
|
|
691
692
|
#7 procedure for subscriber autorization
|
|
692
693
|
# save data to mongodb
|
|
693
|
-
def autorize_subscriber_2(login, password)
|
|
694
|
+
def autorize_subscriber_2(login, password, real_ip, remote_ip)
|
|
694
695
|
input_json = {:login => login, :password => password}
|
|
695
696
|
resp_out = {}
|
|
696
697
|
thr7 = Thread.new do
|
|
@@ -722,7 +723,7 @@ class IotFunctions_2
|
|
|
722
723
|
|
|
723
724
|
|
|
724
725
|
#8 get available profiles by login
|
|
725
|
-
def get_available_prof_2(login)
|
|
726
|
+
def get_available_prof_2(login, real_ip, remote_ip)
|
|
726
727
|
|
|
727
728
|
input_params = {:login => login}
|
|
728
729
|
resp_out = {}
|
|
@@ -773,7 +774,7 @@ class IotFunctions_2
|
|
|
773
774
|
end
|
|
774
775
|
|
|
775
776
|
#9 get available device types by login
|
|
776
|
-
def get_available_types_2(login)
|
|
777
|
+
def get_available_types_2(login, real_ip, remote_ip)
|
|
777
778
|
|
|
778
779
|
input_params = {:login => login}
|
|
779
780
|
resp_out = {}
|
|
@@ -830,7 +831,7 @@ class IotFunctions_2
|
|
|
830
831
|
|
|
831
832
|
|
|
832
833
|
#10 get available device types by login and profile. procedure update
|
|
833
|
-
def get_available_types2_2(login, profile)
|
|
834
|
+
def get_available_types2_2(login, profile, real_ip, remote_ip)
|
|
834
835
|
|
|
835
836
|
input_params = {:login => login}
|
|
836
837
|
resp_out = {}
|
|
@@ -887,7 +888,7 @@ class IotFunctions_2
|
|
|
887
888
|
|
|
888
889
|
|
|
889
890
|
#11 get info for device type
|
|
890
|
-
def get_info_data_type_2(type)
|
|
891
|
+
def get_info_data_type_2(type, real_ip, remote_ip)
|
|
891
892
|
|
|
892
893
|
input_params = {:type => type}
|
|
893
894
|
output_answ = {}
|
|
@@ -917,7 +918,7 @@ class IotFunctions_2
|
|
|
917
918
|
|
|
918
919
|
|
|
919
920
|
#12 get info for profile
|
|
920
|
-
def get_info_data_profile_2(profile)
|
|
921
|
+
def get_info_data_profile_2(profile, real_ip, remote_ip)
|
|
921
922
|
|
|
922
923
|
input_params = {:profile => profile}
|
|
923
924
|
output_answ = {}
|
|
@@ -946,6 +947,180 @@ class IotFunctions_2
|
|
|
946
947
|
end
|
|
947
948
|
|
|
948
949
|
|
|
950
|
+
#set_data_replace
|
|
951
|
+
#13
|
|
952
|
+
# {"autorization"=>{"login"=>"test", "token"=>"token"}, "datalist"=>[{"imei"=>"524523654366", "new_profile"=>"3", "new_type"=>"1000001"}, {"imei"=>"53623413423", "new_profile"=>"1", "new_type"=>"1000003"}]}
|
|
953
|
+
# answer = {:code=>200, :result=>"Success", :body=>{:processednum=>1, :failednum=>1, :deviceserr=>[{:failedimei=>524523654366}]}}
|
|
954
|
+
def set_data_replace_2(soapgw_params, real_ip, remote_ip)
|
|
955
|
+
input_params = {:soapgw_params => soapgw_params, :real_ip => real_ip, :remote_ip => remote_ip}
|
|
956
|
+
output_answ = {}
|
|
957
|
+
failes_list = []
|
|
958
|
+
answ_to_soapgw = {}
|
|
959
|
+
not_processed_list = []
|
|
960
|
+
processed_list = []
|
|
961
|
+
|
|
962
|
+
inp_login = soapgw_params["autorization"]["login"]
|
|
963
|
+
inp_dev_list = soapgw_params["datalist"]
|
|
964
|
+
|
|
965
|
+
thr13set = Thread.new do
|
|
966
|
+
inp_dev_list.each do |curr_dev|
|
|
967
|
+
begin
|
|
968
|
+
if curr_dev["imei"] != [] && curr_dev["imei"] != nil && curr_dev["imei"] != ""
|
|
969
|
+
list_checked = mongo_client.check_imei_exists([curr_dev["imei"].to_i])
|
|
970
|
+
if list_checked[:code] == 200 && list_checked[:body][:exists] != [] && list_checked[:body][:not_exists] == []
|
|
971
|
+
|
|
972
|
+
#step1 checking permission for writing for imei list
|
|
973
|
+
prof_name1 = mongo_client.get_profile_name_from_imei(curr_dev["imei"].to_i)
|
|
974
|
+
p prof_name1
|
|
975
|
+
p "prof_name1"
|
|
976
|
+
if prof_name1[:code] == 200
|
|
977
|
+
|
|
978
|
+
if curr_dev["new_profile"] != "nil" && curr_dev["new_profile"] != "null" && curr_dev["new_profile"] != "empty" && curr_dev["new_profile"] != "nill"
|
|
979
|
+
prof_new_id = mongo_client.get_profile_universal(curr_dev["new_profile"])["profile_id"]
|
|
980
|
+
else
|
|
981
|
+
prof_new_id = prof_name1[:body]["profile_id"]
|
|
982
|
+
end
|
|
983
|
+
|
|
984
|
+
if curr_dev["new_type"] != "nil" && curr_dev["new_type"] != "null" && curr_dev["new_type"] != "empty" && curr_dev["new_type"] != "nill"
|
|
985
|
+
type_new_pr = curr_dev["new_type"]
|
|
986
|
+
else
|
|
987
|
+
type_new_pr = prof_name1[:imei_info][:body][0]["device_type"]
|
|
988
|
+
end
|
|
989
|
+
|
|
990
|
+
p type_new_pr
|
|
991
|
+
p prof_new_id
|
|
992
|
+
p "st111111"
|
|
993
|
+
|
|
994
|
+
get_login_info = mongo_client.check_login_prof_perm_id_one(inp_login, prof_name1[:body]["profile_id"])
|
|
995
|
+
p get_login_info
|
|
996
|
+
p "get_login_info"
|
|
997
|
+
if get_login_info[:code] == 200
|
|
998
|
+
get_login_info_new = mongo_client.check_login_prof_perm_id_one(inp_login, prof_new_id)
|
|
999
|
+
p get_login_info_new
|
|
1000
|
+
p "get_login_info_new"
|
|
1001
|
+
if get_login_info_new[:code] == 200
|
|
1002
|
+
cur_comp1 = mongo_client.compare_profiles(prof_name1[:body]["profile_id"], prof_new_id)
|
|
1003
|
+
p cur_comp1
|
|
1004
|
+
p "cur_comp1"
|
|
1005
|
+
cur_comp2 = mongo_client.compare_device_types(prof_name1[:imei_info][:body][0]["type"], type_new_pr)
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
p cur_comp2
|
|
1009
|
+
p "cur_comp2"
|
|
1010
|
+
|
|
1011
|
+
if cur_comp1[:is_the_same] && cur_comp2[:is_the_same]
|
|
1012
|
+
#the same. Nothing to do
|
|
1013
|
+
processed_list.append(curr_dev)
|
|
1014
|
+
########
|
|
1015
|
+
else
|
|
1016
|
+
credentials_old = mongo_client.get_iot_oceanconn_credent_2(prof_name1[:body]["profile"])
|
|
1017
|
+
credentials_new = mongo_client.get_iot_oceanconn_credent_2(prof_new_id)
|
|
1018
|
+
p credentials_new
|
|
1019
|
+
p "credentials_new"
|
|
1020
|
+
#########
|
|
1021
|
+
if credentials_old[:code] == 200 && credentials_new[:code] == 200
|
|
1022
|
+
imei_data = mongo_client.get_imei_info_from_db([curr_dev["imei"].to_i])
|
|
1023
|
+
p imei_data
|
|
1024
|
+
p "imei_data"
|
|
1025
|
+
if imei_data[:body] != []
|
|
1026
|
+
ans = {}
|
|
1027
|
+
if imei_data[:body][0]["huadata"]["body"]["deviceId"] != nil
|
|
1028
|
+
model_data = mongo_client.get_device_type_info_universal(type_new_pr)
|
|
1029
|
+
p model_data
|
|
1030
|
+
p "model_data"
|
|
1031
|
+
#####all checks completed. then process data#####
|
|
1032
|
+
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"])
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
if ans_old[:code].to_i == 200 || ans_old[:code].to_i == 202 || ans_old[:code].to_i == 204
|
|
1036
|
+
begin
|
|
1037
|
+
resss = hua_aceanconnect_connector.add_new_device_on_huawei(credentials_new[:body][:app_id],
|
|
1038
|
+
credentials_new[:body][:secret],
|
|
1039
|
+
curr_dev["imei"].to_i,
|
|
1040
|
+
curr_dev["imei"].to_s,
|
|
1041
|
+
prof_name1[:body]["description"],
|
|
1042
|
+
model_data[:body]["device_type"],
|
|
1043
|
+
curr_dev["new_profile"],
|
|
1044
|
+
model_data[:body]["ManufacturerID"],
|
|
1045
|
+
model_data[:body]["ManufacturerNAME"],
|
|
1046
|
+
model_data[:body]["model"]
|
|
1047
|
+
)
|
|
1048
|
+
if resss[:code] == "200"
|
|
1049
|
+
if resss[:body].key?("error_code") && resss[:body]["error_code"] != 200
|
|
1050
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => resss})
|
|
1051
|
+
else
|
|
1052
|
+
new_id_iot = resss[:body]
|
|
1053
|
+
new_profile_id = prof_new_id
|
|
1054
|
+
now_date = DateTime.now
|
|
1055
|
+
#finished success. update database
|
|
1056
|
+
attribute = {profile: new_profile_id, type: model_data[:body]["model"], huadata: {body: new_id_iot}, updated: now_date}
|
|
1057
|
+
answ_mongo = mongo_client.modify_attr_mongo_universal(curr_dev["imei"].to_i, attribute)
|
|
1058
|
+
if answ_mongo[:code] != 200
|
|
1059
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Critical error. Mongo not updated", :mongo_err => answ_mongo})
|
|
1060
|
+
else
|
|
1061
|
+
processed_list.append(curr_dev)
|
|
1062
|
+
end
|
|
1063
|
+
end
|
|
1064
|
+
else
|
|
1065
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => resss})
|
|
1066
|
+
end
|
|
1067
|
+
rescue
|
|
1068
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown error with insertion imei on IOT platform"})
|
|
1069
|
+
end
|
|
1070
|
+
end
|
|
1071
|
+
else
|
|
1072
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Not processed by iot platform. deviceId not found in mongoDB"})
|
|
1073
|
+
end
|
|
1074
|
+
else
|
|
1075
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Failed to get info from database"})
|
|
1076
|
+
end
|
|
1077
|
+
else
|
|
1078
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Failed to get credentials from database"})
|
|
1079
|
+
end
|
|
1080
|
+
end
|
|
1081
|
+
else
|
|
1082
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "New profile modification not permitted"})
|
|
1083
|
+
end
|
|
1084
|
+
else
|
|
1085
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Old profile modification not permitted"})
|
|
1086
|
+
end
|
|
1087
|
+
else
|
|
1088
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown current profile"})
|
|
1089
|
+
end
|
|
1090
|
+
else
|
|
1091
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Device not exists"})
|
|
1092
|
+
end
|
|
1093
|
+
else
|
|
1094
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "IMEI can't be nil"})
|
|
1095
|
+
end
|
|
1096
|
+
rescue
|
|
1097
|
+
not_processed_list.append({:imei => curr_dev["imei"], :error => "Unknown SDK error"})
|
|
1098
|
+
end
|
|
1099
|
+
|
|
1100
|
+
end
|
|
1101
|
+
|
|
1102
|
+
err_li = []
|
|
1103
|
+
if not_processed_list.length > 0
|
|
1104
|
+
not_processed_list.each do |err_l|
|
|
1105
|
+
err_li.append({:failedimei => err_l[:imei]})
|
|
1106
|
+
end
|
|
1107
|
+
end
|
|
1108
|
+
|
|
1109
|
+
if processed_list.length > 0
|
|
1110
|
+
answ_to_soapgw = {:code => 200, :result => "Success", :body => {:processednum => processed_list.length, :failednum => not_processed_list.length, :deviceserr => err_li}}
|
|
1111
|
+
else
|
|
1112
|
+
answ_to_soapgw = {:code => 202, :result => "Nothing done", :body => {:processednum => 0, :failednum => not_processed_list.length, :deviceserr => err_li}}
|
|
1113
|
+
end
|
|
1114
|
+
end
|
|
1115
|
+
thr13set.join
|
|
1116
|
+
|
|
1117
|
+
output_answ = {:code => 200, :result => "Success", :body => {:to_soap_gw => answ_to_soapgw, :not_processed_list => not_processed_list, :processed_list => processed_list}}
|
|
1118
|
+
mongo_client.audit_logger("set_data_replace_2", remote_ip, input_params, output_answ, real_ip)
|
|
1119
|
+
output_answ
|
|
1120
|
+
end
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
#14
|
|
949
1124
|
#additional procedure for checking status on iot platform
|
|
950
1125
|
def get_info_by_imeilist_from_iot(login, imei_list)
|
|
951
1126
|
resp_out={}
|
|
@@ -998,10 +1173,10 @@ class IotFunctions_2
|
|
|
998
1173
|
p resp_out[:body]
|
|
999
1174
|
p "resp_out[:body][\"devices\"]"
|
|
1000
1175
|
|
|
1001
|
-
if resp_out[:body] == nil || resp_out[:body] == {} || resp_out[:body] == {"devices"=>nil}
|
|
1176
|
+
if resp_out[:body] == nil || resp_out[:body] == {} || resp_out[:body] == {"devices" => nil}
|
|
1002
1177
|
p "step1111"
|
|
1003
1178
|
p resp_out_1[:body]["devices"]
|
|
1004
|
-
resp_out[:body] = {
|
|
1179
|
+
resp_out[:body] = {'devices' => resp_out_1[:body]["devices"]}
|
|
1005
1180
|
p "step22222"
|
|
1006
1181
|
else
|
|
1007
1182
|
if resp_out_1[:body]["devices"] != nil
|
|
@@ -6,13 +6,14 @@ require 'rubygems'
|
|
|
6
6
|
require 'nokogiri'
|
|
7
7
|
require 'rails'
|
|
8
8
|
require "imperituroard/projects/iot/internal_functions"
|
|
9
|
+
require 'imperituroard/projects/iot/mongoconnector'
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class HuaIot
|
|
12
13
|
|
|
13
|
-
attr_accessor :platformip, :platformport, :client, :database, :cert_file, :key_file, :internal_func
|
|
14
|
+
attr_accessor :platformip, :platformport, :client, :database, :cert_file, :key_file, :internal_func, :client_iot_mongo
|
|
14
15
|
|
|
15
|
-
def initialize(platformip, platformport, cert_file, key_file)
|
|
16
|
+
def initialize(platformip, platformport, cert_file, key_file, mongo_ip, mongo_port, mongo_database)
|
|
16
17
|
@database = database
|
|
17
18
|
@platformip = platformip
|
|
18
19
|
@platformport = platformport
|
|
@@ -21,6 +22,7 @@ class HuaIot
|
|
|
21
22
|
#client_host = [mongoip + ":" + mongoport]
|
|
22
23
|
#@client = Mongo::Client.new(client_host, :database => database)
|
|
23
24
|
@internal_func = InternalFunc.new
|
|
25
|
+
@client_iot_mongo = MongoIot.new(mongo_ip, mongo_port, mongo_database)
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
def parse_token(str)
|
|
@@ -72,6 +74,11 @@ class HuaIot
|
|
|
72
74
|
request.body = URI.encode_www_form(data)
|
|
73
75
|
res = https.request(request)
|
|
74
76
|
out_resp = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
|
77
|
+
fff = {:func => "get_token",
|
|
78
|
+
:iot_fun => "",
|
|
79
|
+
:req_header => {:content_type => 'application/x-www-form-urlencoded'
|
|
80
|
+
}}
|
|
81
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
|
75
82
|
rescue
|
|
76
83
|
out_resp = {:code => 500, :message => "failed get token"}
|
|
77
84
|
end
|
|
@@ -104,6 +111,10 @@ class HuaIot
|
|
|
104
111
|
request.body = URI.encode_www_form(data)
|
|
105
112
|
res = https.request(request)
|
|
106
113
|
out_resp = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
|
114
|
+
fff = {:func => "token_logout",
|
|
115
|
+
:iot_fun => "logout"
|
|
116
|
+
}
|
|
117
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data, out_resp)
|
|
107
118
|
rescue
|
|
108
119
|
out_resp = {:code => 500, :message => "failed logout token"}
|
|
109
120
|
end
|
|
@@ -129,7 +140,6 @@ class HuaIot
|
|
|
129
140
|
request['app_key'] = app_id
|
|
130
141
|
request.body = {nodeId: node_id}.to_json
|
|
131
142
|
res = https.request(request)
|
|
132
|
-
p res.body.to_s
|
|
133
143
|
{:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
|
134
144
|
end
|
|
135
145
|
|
|
@@ -157,13 +167,18 @@ class HuaIot
|
|
|
157
167
|
manufacturerName: manufacturer_name,
|
|
158
168
|
model: model,
|
|
159
169
|
isSecurity: "FALSE",
|
|
160
|
-
supportedSecurity: "FALSE"}}
|
|
170
|
+
supportedSecurity: "FALSE"}}
|
|
161
171
|
internal_func.printer_texter({:procedure => "dev_register_passw_code_mode2", :data => {:body => data_out, :url => url_string}}, "debug")
|
|
162
|
-
request.body = data_out
|
|
172
|
+
request.body = data_out.to_json
|
|
163
173
|
res = https.request(request)
|
|
164
|
-
p res.body.to_s
|
|
165
174
|
out_resp = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
|
166
|
-
|
|
175
|
+
fff = {:func => "dev_register_passw_code_mode2",
|
|
176
|
+
:iot_fun => "2.2.4",
|
|
177
|
+
:req_header => {:authorization => 'Bearer ' + token,
|
|
178
|
+
:content_type => 'application/json',
|
|
179
|
+
:app_key => app_id
|
|
180
|
+
}}
|
|
181
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, data_out, out_resp)
|
|
167
182
|
out_resp
|
|
168
183
|
end
|
|
169
184
|
|
|
@@ -213,18 +228,21 @@ class HuaIot
|
|
|
213
228
|
request['Authorization'] = 'Bearer ' + token
|
|
214
229
|
request['app_key'] = app_id
|
|
215
230
|
res = https.request(request)
|
|
216
|
-
p "res.code"
|
|
217
|
-
p res.code
|
|
218
|
-
p res.body
|
|
219
231
|
if res.body != nil
|
|
220
232
|
out_resp = {:code => res.code, :message => res.message, :body => {:answ => JSON.parse(res.body.to_s)}}
|
|
221
233
|
else
|
|
222
234
|
out_resp = {:code => res.code, :message => res.message, :body => {:answ => "no data"}}
|
|
223
235
|
end
|
|
236
|
+
fff = {:func => "dev_delete",
|
|
237
|
+
:iot_fun => "2.2.12",
|
|
238
|
+
:req_header => {:authorization => 'Bearer ' + token,
|
|
239
|
+
:content_type => 'application/json',
|
|
240
|
+
:app_key => app_id
|
|
241
|
+
}}
|
|
242
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, "Delete", out_resp)
|
|
224
243
|
rescue
|
|
225
244
|
out_resp = {:code => 500, :message => "dev_delete: Unknown IOT error"}
|
|
226
245
|
end
|
|
227
|
-
p out_resp
|
|
228
246
|
out_resp
|
|
229
247
|
end
|
|
230
248
|
|
|
@@ -295,6 +313,7 @@ class HuaIot
|
|
|
295
313
|
|
|
296
314
|
#2.9.6 Querying Directly Connected Devices and Their Mounted Devices in Batches
|
|
297
315
|
def querying_device_direct_conn(app_id, secret, dev_list)
|
|
316
|
+
output_str = {}
|
|
298
317
|
token = get_token(app_id, secret)[:body]["accessToken"]
|
|
299
318
|
path = "/iocm/app/dm/v1.1.0/queryDevicesByIds"
|
|
300
319
|
url_string = "https://" + platformip + ":" + platformport + path
|
|
@@ -308,9 +327,18 @@ class HuaIot
|
|
|
308
327
|
request.content_type = 'application/json'
|
|
309
328
|
request['Authorization'] = 'Bearer ' + token
|
|
310
329
|
request['app_key'] = app_id
|
|
311
|
-
|
|
330
|
+
req_body = {deviceIds: dev_list}
|
|
331
|
+
request.body = req_body.to_json
|
|
312
332
|
res = https.request(request)
|
|
313
|
-
{:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
|
333
|
+
output_str = {:code => res.code, :message => res.message, :body => JSON.parse(res.body.to_s)}
|
|
334
|
+
fff = {:func => "querying_device_direct_conn",
|
|
335
|
+
:iot_fun => "2.9.6",
|
|
336
|
+
:req_header => {:authorization => 'Bearer ' + token,
|
|
337
|
+
:content_type => 'application/json',
|
|
338
|
+
:app_key => app_id
|
|
339
|
+
}}
|
|
340
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, req_body, output_str)
|
|
341
|
+
output_str
|
|
314
342
|
end
|
|
315
343
|
|
|
316
344
|
|
|
@@ -364,7 +392,7 @@ class HuaIot
|
|
|
364
392
|
begin
|
|
365
393
|
path = "/iocm/app/dm/v1.4.0/devices/" + dev_id + "?app_Id=" + app_id
|
|
366
394
|
url_string = "https://" + platformip + ":" + platformport + path
|
|
367
|
-
internal_func.printer_texter({:url_string=>url_string, :procedure=>"dev_modify_location_v2"}, "debug")
|
|
395
|
+
internal_func.printer_texter({:url_string => url_string, :procedure => "dev_modify_location_v2"}, "debug")
|
|
368
396
|
uri = URI.parse url_string
|
|
369
397
|
https = Net::HTTP.new(uri.host, uri.port)
|
|
370
398
|
https.use_ssl = true
|
|
@@ -375,7 +403,8 @@ class HuaIot
|
|
|
375
403
|
request.content_type = 'application/json'
|
|
376
404
|
request['Authorization'] = 'Bearer ' + token
|
|
377
405
|
request['app_key'] = app_id
|
|
378
|
-
|
|
406
|
+
req_b = {location: address}
|
|
407
|
+
request.body = req_b.to_json
|
|
379
408
|
res = https.request(request)
|
|
380
409
|
p res.code
|
|
381
410
|
p res.body
|
|
@@ -384,6 +413,13 @@ class HuaIot
|
|
|
384
413
|
else
|
|
385
414
|
out_resp = {:code => res.code, :message => res.message, :body => {:answ => "no data"}}
|
|
386
415
|
end
|
|
416
|
+
fff = {:func => "dev_modify_location_v2",
|
|
417
|
+
:iot_fun => "2.2.11",
|
|
418
|
+
:req_header => {:authorization => 'Bearer ' + token,
|
|
419
|
+
:content_type => 'application/json',
|
|
420
|
+
:app_key => app_id
|
|
421
|
+
}}
|
|
422
|
+
client_iot_mongo.audit_iot_logger(fff, url_string, req_b, out_resp)
|
|
387
423
|
rescue
|
|
388
424
|
out_resp = {:code => 500, :message => "dev_modify_location_v2: Unknown IOT error"}
|
|
389
425
|
end
|
|
@@ -392,7 +428,6 @@ class HuaIot
|
|
|
392
428
|
end
|
|
393
429
|
|
|
394
430
|
|
|
395
|
-
|
|
396
431
|
##2.10.7 Adding Members to a Device Group
|
|
397
432
|
|
|
398
433
|
|
|
@@ -41,6 +41,30 @@ class MongoIot
|
|
|
41
41
|
out_resp
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
+
def audit_iot_logger(proc_name, url_str, input_json, output_json)
|
|
45
|
+
out_resp = {}
|
|
46
|
+
p "iiiiiiiot"
|
|
47
|
+
p input_json
|
|
48
|
+
begin
|
|
49
|
+
current = internal_func.datetimenow
|
|
50
|
+
collection = client[:audit_iot_platform]
|
|
51
|
+
doc = {
|
|
52
|
+
:proc_name => proc_name,
|
|
53
|
+
:date => current,
|
|
54
|
+
:url => url_str,
|
|
55
|
+
:iot_platform_request => input_json,
|
|
56
|
+
:iot_platform_responce => output_json
|
|
57
|
+
}
|
|
58
|
+
p doc
|
|
59
|
+
result = collection.insert_one(doc)
|
|
60
|
+
out_resp = {:code => 200, :result => "audit_logger: Request completed successfully", :body => result}
|
|
61
|
+
rescue
|
|
62
|
+
out_resp = {:code => 507, :result => "audit_logger: Unknown SDK error"}
|
|
63
|
+
end
|
|
64
|
+
internal_func.printer_texter(out_resp, "debug")
|
|
65
|
+
out_resp
|
|
66
|
+
end
|
|
67
|
+
|
|
44
68
|
#:code => 507, :result => "Unknown SDK error"
|
|
45
69
|
#{:code => 200, :result => "Request completed successfully", :body => result_ps}
|
|
46
70
|
def get_profiles_by_login(login)
|
|
@@ -317,6 +341,7 @@ class MongoIot
|
|
|
317
341
|
note: "second description",
|
|
318
342
|
profile: 0,
|
|
319
343
|
type: 0,
|
|
344
|
+
device_type: 0,
|
|
320
345
|
address: "unknown"
|
|
321
346
|
}
|
|
322
347
|
result = collection.insert_one(l)
|
|
@@ -340,6 +365,7 @@ class MongoIot
|
|
|
340
365
|
note: "second description",
|
|
341
366
|
profile: 0,
|
|
342
367
|
type: 0,
|
|
368
|
+
device_type: 0,
|
|
343
369
|
address: "unknown"
|
|
344
370
|
}
|
|
345
371
|
result = collection.insert_one(l)
|
|
@@ -364,6 +390,7 @@ class MongoIot
|
|
|
364
390
|
|
|
365
391
|
def get_profile_name_from_imei(imei)
|
|
366
392
|
out_resp = {}
|
|
393
|
+
info = {}
|
|
367
394
|
begin
|
|
368
395
|
id = ""
|
|
369
396
|
begin
|
|
@@ -387,7 +414,7 @@ class MongoIot
|
|
|
387
414
|
end
|
|
388
415
|
begin
|
|
389
416
|
if res["profile"]!=nil
|
|
390
|
-
out_resp = {:code => 200, :result => "get_profile_name_from_imei: Request completed successfully", :body => res}
|
|
417
|
+
out_resp = {:code => 200, :result => "get_profile_name_from_imei: Request completed successfully", :body => res, :imei_info => info}
|
|
391
418
|
end
|
|
392
419
|
rescue
|
|
393
420
|
out_resp = {:code => 506, :result => "get_profile_name_from_imei: Function get_profile_name_by_id not processed correctly and returned: #{res.to_s}"}
|
|
@@ -523,5 +550,164 @@ class MongoIot
|
|
|
523
550
|
out_resp
|
|
524
551
|
end
|
|
525
552
|
|
|
553
|
+
def get_device_type_info_universal(device_model)
|
|
554
|
+
out_resp = {}
|
|
555
|
+
begin
|
|
556
|
+
as = internal_func.if_digit_or_string(device_model)
|
|
557
|
+
|
|
558
|
+
if as[:body][:string]
|
|
559
|
+
result_ps = []
|
|
560
|
+
collection = client[:device_types]
|
|
561
|
+
collection.find({"model" => device_model}).each {|row|
|
|
562
|
+
result_ps.append(row)
|
|
563
|
+
}
|
|
564
|
+
dattaa = result_ps[0]
|
|
565
|
+
if dattaa!=nil
|
|
566
|
+
out_resp = {:code => 200, :result => "get_device_type_info_by_model: Request completed successfully", :body => dattaa}
|
|
567
|
+
else
|
|
568
|
+
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"}}
|
|
569
|
+
end
|
|
570
|
+
else
|
|
571
|
+
result_ps2 = []
|
|
572
|
+
collection = client[:device_types]
|
|
573
|
+
collection.find({"type_id" => device_model.to_i}).each {|row|
|
|
574
|
+
result_ps2.append(row)
|
|
575
|
+
}
|
|
576
|
+
dattaa = result_ps2[0]
|
|
577
|
+
if dattaa!=nil
|
|
578
|
+
out_resp = {:code => 200, :result => "get_device_type_info_by_model: Request completed successfully", :body => dattaa}
|
|
579
|
+
else
|
|
580
|
+
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"}}
|
|
581
|
+
end
|
|
582
|
+
end
|
|
583
|
+
|
|
584
|
+
rescue
|
|
585
|
+
out_resp = {:code => 500, :result => "get_device_type_info_universal: procedure error", :body => {"model" => device_model, "ManufacturerID" => "unknown", "ManufacturerNAME" => "unknown", "device_type" => "unknown"}}
|
|
586
|
+
end
|
|
587
|
+
internal_func.printer_texter(out_resp, "debug")
|
|
588
|
+
out_resp
|
|
589
|
+
end
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
def compare_profiles(profile1, profile2)
|
|
594
|
+
out_answ = {}
|
|
595
|
+
ch1 = internal_func.if_digit_or_string(profile1)
|
|
596
|
+
ch2 = internal_func.if_digit_or_string(profile2)
|
|
597
|
+
if ch1[:body][:string] == ch2[:body][:string] && ch1[:body][:string] == false
|
|
598
|
+
if profile1.to_i == profile2.to_i
|
|
599
|
+
out_answ = {:code => 200, :result => "compare_profiles: profiles are the same", :is_the_same => true, :data_type => "integer"}
|
|
600
|
+
else
|
|
601
|
+
out_answ = {:code => 200, :result => "compare_profiles: profiles are different", :is_the_same => false, :data_type => "integer"}
|
|
602
|
+
end
|
|
603
|
+
elsif ch1[:body][:string] == ch2[:body][:string] && ch1[:body][:string] == true
|
|
604
|
+
if profile1 == profile2
|
|
605
|
+
out_answ = {:code => 200, :result => "compare_profiles: profiles are the same", :is_the_same => true, :data_type => "string"}
|
|
606
|
+
else
|
|
607
|
+
out_answ = {:code => 200, :result => "compare_profiles: profiles are different", :is_the_same => false, :data_type => "string"}
|
|
608
|
+
end
|
|
609
|
+
else
|
|
610
|
+
ch1_data = {}
|
|
611
|
+
ch2_data = {}
|
|
612
|
+
if ch1[:body][:string]
|
|
613
|
+
ch1_data = self.get_profile_id_by_name(profile1)
|
|
614
|
+
else
|
|
615
|
+
ch1_data = self.get_profile_name_by_id(profile1.to_i)
|
|
616
|
+
end
|
|
617
|
+
|
|
618
|
+
if ch2[:body][:string]
|
|
619
|
+
ch2_data = self.get_profile_id_by_name(profile2)
|
|
620
|
+
else
|
|
621
|
+
ch2_data = self.get_profile_name_by_id(profile2.to_i)
|
|
622
|
+
end
|
|
623
|
+
|
|
624
|
+
if ch1_data["profile_id"] == ch2_data["profile_id"]
|
|
625
|
+
out_answ = {:code => 200, :result => "compare_profiles: profiles are the same", :is_the_same => true, :data_type => "different"}
|
|
626
|
+
else
|
|
627
|
+
out_answ = {:code => 200, :result => "compare_profiles: profiles are different", :is_the_same => false, :data_type => "different"}
|
|
628
|
+
end
|
|
629
|
+
end
|
|
630
|
+
out_answ
|
|
631
|
+
end
|
|
632
|
+
|
|
633
|
+
def compare_device_types(type1, type2)
|
|
634
|
+
out_answ = {}
|
|
635
|
+
tp1 = internal_func.if_digit_or_string(type1)
|
|
636
|
+
tp2 = internal_func.if_digit_or_string(type2)
|
|
637
|
+
p tp1
|
|
638
|
+
p tp2
|
|
639
|
+
p "tp"
|
|
640
|
+
|
|
641
|
+
if tp1[:body][:string] == tp2[:body][:string] && tp1[:body][:string] == false
|
|
642
|
+
if type1.to_i == type2.to_i
|
|
643
|
+
out_answ = {:code => 200, :result => "compare_device_types: types are the same", :is_the_same => true, :data_type => "integer"}
|
|
644
|
+
else
|
|
645
|
+
out_answ = {:code => 200, :result => "compare_device_types: types are different", :is_the_same => false, :data_type => "integer"}
|
|
646
|
+
end
|
|
647
|
+
elsif tp1[:body][:string] == tp2[:body][:string] && tp1[:body][:string] == true
|
|
648
|
+
if type1 == type2
|
|
649
|
+
out_answ = {:code => 200, :result => "compare_device_types: types are the same", :is_the_same => true, :data_type => "string"}
|
|
650
|
+
else
|
|
651
|
+
out_answ = {:code => 200, :result => "compare_device_types: types are different", :is_the_same => false, :data_type => "string"}
|
|
652
|
+
end
|
|
653
|
+
else
|
|
654
|
+
tp1_data = {}
|
|
655
|
+
tp2_data = {}
|
|
656
|
+
p "gggggggg"
|
|
657
|
+
if tp1[:body][:string]
|
|
658
|
+
tp1_data = self.get_type_by_name(type1)
|
|
659
|
+
else
|
|
660
|
+
tp1_data = self.get_type_by_id(type1.to_i)
|
|
661
|
+
end
|
|
662
|
+
|
|
663
|
+
if tp2[:body][:string]
|
|
664
|
+
tp2_data = self.get_type_by_name(type2)
|
|
665
|
+
else
|
|
666
|
+
tp2_data = self.get_type_by_id(type2.to_i)
|
|
667
|
+
end
|
|
668
|
+
|
|
669
|
+
p tp1_data
|
|
670
|
+
p tp2_data
|
|
671
|
+
p type1
|
|
672
|
+
p type2
|
|
673
|
+
|
|
674
|
+
if tp1_data["type_id"] == tp2_data["type_id"]
|
|
675
|
+
out_answ = {:code => 200, :result => "compare_device_types: profiles are the same", :is_the_same => true, :data_type => "different"}
|
|
676
|
+
else
|
|
677
|
+
out_answ = {:code => 200, :result => "compare_device_types: profiles are different", :is_the_same => false, :data_type => "different"}
|
|
678
|
+
end
|
|
679
|
+
end
|
|
680
|
+
out_answ
|
|
681
|
+
end
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
def get_profile_universal(profile)
|
|
685
|
+
inn = internal_func.if_digit_or_string(profile)
|
|
686
|
+
out = {}
|
|
687
|
+
if inn[:body][:string]
|
|
688
|
+
out = self.get_profile_id_by_name(profile)
|
|
689
|
+
else
|
|
690
|
+
out = self.get_profile_name_by_id(profile.to_i)
|
|
691
|
+
end
|
|
692
|
+
out
|
|
693
|
+
end
|
|
694
|
+
|
|
695
|
+
def modify_attr_mongo_universal(imei, attribute)
|
|
696
|
+
out_resp = {}
|
|
697
|
+
begin
|
|
698
|
+
collection = client[:device_imei]
|
|
699
|
+
doc = {
|
|
700
|
+
"imei" => imei
|
|
701
|
+
}
|
|
702
|
+
sett = {'$set' => attribute}
|
|
703
|
+
result = collection.update_one(doc, sett)
|
|
704
|
+
out_resp = {:code => 200, :result => "modify_attr_mongo_universal: Request completed successfully"}
|
|
705
|
+
rescue
|
|
706
|
+
out_resp = {:code => 507, :result => "modify_attr_mongo_universal: Unknown SDK error"}
|
|
707
|
+
end
|
|
708
|
+
internal_func.printer_texter(out_resp, "debug")
|
|
709
|
+
out_resp
|
|
710
|
+
end
|
|
711
|
+
|
|
712
|
+
end
|
|
526
713
|
|
|
527
|
-
end
|
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: 0.
|
|
4
|
+
version: 1.0.4
|
|
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-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|