lorj 1.0.16 → 1.0.17
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/bin/lorj_account_import.rb +13 -7
- data/lib/core/core.rb +4 -2
- data/lib/core/core_import_export.rb +12 -4
- data/lib/core/definition.rb +1 -1
- data/lib/core/lorj_basecontroller.rb +83 -12
- data/lib/core/lorj_basedefinition.rb +2 -2
- data/lib/core/lorj_baseprocess.rb +4 -2
- data/lib/core/lorj_keypath.rb +6 -6
- data/lib/lorj/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd2e3ef16b60623e7d392719983d1c656b90cb73
|
4
|
+
data.tar.gz: 5342df87489d1d9feacf527edce9a1ca321358d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0dcd158c91dfeb3d058e0f7374a167ba7efaf9974c14b0b734875d020e3ed9bd4333432adec1a2680d07cb2999ea4c7d31865013b7e6e918319675b7e0814236
|
7
|
+
data.tar.gz: eac85b8e31ca9c05cb7002f1064e4f121fd1254d3673c9baae4c1f12c337a512c9c3008018f626edbe5f0d113ae961fdbd2570319a29c07b2fcea05bbbd57458
|
data/bin/lorj_account_import.rb
CHANGED
@@ -48,14 +48,20 @@ class Test < Lorj::BaseDefinition
|
|
48
48
|
|
49
49
|
private
|
50
50
|
|
51
|
+
# Test if the encryted data (if encrypted) is readable
|
51
52
|
def account_key_test
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
53
|
+
key = 'credentials#account_key'
|
54
|
+
opts = Lorj.data.auto_section_data(key)
|
55
|
+
data = @core.config[key]
|
56
|
+
if opts[:encrypted].is_a?(TrueClass)
|
57
|
+
entr = _get_encrypt_key
|
58
|
+
|
59
|
+
res = Lorj::SSLCrypt.get_encrypted_value(data, entr, key)
|
60
|
+
status = !res.nil?
|
61
|
+
else
|
62
|
+
status = true
|
63
|
+
end
|
64
|
+
test_state(status, key, data)
|
59
65
|
end
|
60
66
|
|
61
67
|
def test_state(res, test, value)
|
data/lib/core/core.rb
CHANGED
@@ -347,9 +347,11 @@ module Lorj
|
|
347
347
|
# - env_hash: String. Base64 encrypted Hash.
|
348
348
|
# OR
|
349
349
|
# - nil if issues.
|
350
|
-
def account_export(map = nil, with_name = true
|
350
|
+
def account_export(map = nil, with_name = true, account_only = false,
|
351
|
+
processes_options = {})
|
351
352
|
return nil if @core_object.nil?
|
352
|
-
@core_object.account_export(map, with_name
|
353
|
+
@core_object.account_export(map, with_name, account_only,
|
354
|
+
processes_options)
|
353
355
|
end
|
354
356
|
|
355
357
|
# Core parameters are:
|
@@ -139,13 +139,16 @@ module Lorj
|
|
139
139
|
# True by default.
|
140
140
|
# - +account_only+ : True data extracted must come exclusively from the
|
141
141
|
# config 'account' layer.
|
142
|
+
# - +processes_options+ : Hash. Export options for processes
|
143
|
+
# - :exclude: Array. name of process to exclude.
|
142
144
|
#
|
143
145
|
# * *returns* :
|
144
146
|
# - key: String. Key used to encrypt.
|
145
147
|
# - env_hash: String. Base64 encrypted Hash.
|
146
148
|
# OR
|
147
149
|
# - nil if issues.
|
148
|
-
def account_export(map = nil, with_name = true, account_only = true
|
150
|
+
def account_export(map = nil, with_name = true, account_only = true,
|
151
|
+
processes_options = {})
|
149
152
|
map = _account_map if map.nil?
|
150
153
|
|
151
154
|
map.merge!('account#name' => {}, 'account#provider' => {}) if with_name
|
@@ -172,21 +175,26 @@ module Lorj
|
|
172
175
|
entr = Lorj::SSLCrypt.new_encrypt_key
|
173
176
|
export_data = { :enc_data => Lorj::SSLCrypt.encrypt_value(rhash.to_yaml,
|
174
177
|
entr) }
|
175
|
-
export_data[:processes] = _export_processes
|
178
|
+
export_data[:processes] = _export_processes(processes_options)
|
176
179
|
[entr, export_data.to_yaml]
|
177
180
|
end
|
178
181
|
|
179
182
|
private
|
180
183
|
|
181
|
-
def _export_processes
|
184
|
+
def _export_processes(processes_options)
|
182
185
|
export_data = []
|
183
186
|
PrcLib.processes.each do |p|
|
184
187
|
next unless p.key?(:process_name) && p.key?(:lib_name)
|
185
188
|
|
189
|
+
next if processes_options[:exclude].is_a?(Array) &&
|
190
|
+
processes_options[:exclude].include?(p[:process_name])
|
191
|
+
|
186
192
|
process = {}
|
187
193
|
process[:process_module] = p[:process_name]
|
188
194
|
process[:lib_name] = p[:lib_name]
|
189
|
-
|
195
|
+
if p.key?(:controller_name)
|
196
|
+
process[:controller_name] = p[:controller_name]
|
197
|
+
end
|
190
198
|
export_data << process if process.length > 0
|
191
199
|
end
|
192
200
|
export_data
|
data/lib/core/definition.rb
CHANGED
@@ -480,7 +480,7 @@ module Lorj
|
|
480
480
|
# Internal function
|
481
481
|
def self._query_mapping(key, map)
|
482
482
|
return nil unless [String, Symbol].include?(key.class)
|
483
|
-
return nil unless [NilClass, Symbol, String].include?(map.class)
|
483
|
+
return nil unless [NilClass, Symbol, String, Array].include?(map.class)
|
484
484
|
|
485
485
|
object_type = PrcLib.model.object_context
|
486
486
|
key_path = KeyPath.new(key)
|
@@ -104,7 +104,10 @@ module Lorj
|
|
104
104
|
end
|
105
105
|
controller_error '%s is not set.', key
|
106
106
|
end
|
107
|
+
end
|
107
108
|
|
109
|
+
# Defining private internal controller functions
|
110
|
+
class BaseController
|
108
111
|
private
|
109
112
|
|
110
113
|
# controller helper function:
|
@@ -115,19 +118,40 @@ module Lorj
|
|
115
118
|
# - +objects+ : Collection of object which respond to each
|
116
119
|
# - +query+ : Hash. Containing a list of attributes to test
|
117
120
|
# See #ctrl_do_query_match for details
|
118
|
-
# -
|
119
|
-
|
121
|
+
# - +triggers+: Hash. Optional. Procs to interact at several places:
|
122
|
+
# - :before : &code(object) - To execute some code on the object
|
123
|
+
# before extract.
|
124
|
+
# *return* true to go on, or false to ignore the object.
|
125
|
+
# - :after : &code(object, query, selected) - To execute some code on
|
126
|
+
# the object after extract.
|
127
|
+
# This after trigger is the last change to select or not the object
|
128
|
+
# for the query. Note that query structure defined by lorj by default.
|
129
|
+
# *return* true if the object is selected. false otherwise.
|
130
|
+
# - :extract : &code(object, key) - To execute the data extraction
|
131
|
+
# This block is required only if call of [] or :<key> is not supported
|
132
|
+
# *return* the value extracted.
|
133
|
+
#
|
134
|
+
def ctrl_query_each(objects, query, triggers = {}) # :doc:
|
120
135
|
results = []
|
121
136
|
Lorj.debug(4, "Filtering with '%s'", query)
|
122
137
|
unless objects.class.method_defined?(:each)
|
123
138
|
controller_error "'%s' do not have 'each' function.", objects.class
|
124
139
|
end
|
125
140
|
objects.each do |o|
|
126
|
-
if
|
127
|
-
|
141
|
+
if [Proc, Method].include?(triggers[:before].class)
|
142
|
+
code = triggers[:before]
|
143
|
+
next unless code.call o
|
144
|
+
end
|
145
|
+
if [Proc, Method].include?(triggers[:extract].class)
|
146
|
+
code = triggers[:extract]
|
147
|
+
selected = ctrl_do_query_match(o, query) { |d, k| code.call d, k }
|
128
148
|
else
|
129
149
|
selected = ctrl_do_query_match(o, query)
|
130
150
|
end
|
151
|
+
if [Proc, Method].include?(triggers[:after].class)
|
152
|
+
code = triggers[:after]
|
153
|
+
selected = code.call o, query, selected
|
154
|
+
end
|
131
155
|
results.push o if selected
|
132
156
|
end
|
133
157
|
Lorj.debug(4, '%d records selected', results.length)
|
@@ -155,7 +179,7 @@ module Lorj
|
|
155
179
|
# - No exception
|
156
180
|
#
|
157
181
|
# by default, this function will extract data from the object
|
158
|
-
# with
|
182
|
+
# with following functions: If one fails, it will try the next one.
|
159
183
|
# :[], or :key or &block.
|
160
184
|
# The optional &block is a third way defined by the controller to extract
|
161
185
|
# data.
|
@@ -171,15 +195,18 @@ module Lorj
|
|
171
195
|
def ctrl_do_query_match(object, query)
|
172
196
|
selected = true
|
173
197
|
query.each do |key, match_value|
|
198
|
+
key_path = KeyPath.new(key)
|
174
199
|
if block_given?
|
175
|
-
found, v = _get_from(object,
|
200
|
+
found, v = _get_from(object, key_path.tree) { |d, k| yield d, k }
|
176
201
|
else
|
177
|
-
found, v = _get_from(object,
|
202
|
+
found, v = _get_from(object, key_path.tree)
|
178
203
|
end
|
179
204
|
|
180
205
|
Lorj.debug(4, "'%s.%s' = '%s'", object.class, key, v) if found
|
181
206
|
|
182
|
-
selected
|
207
|
+
selected = lorj_filter_regexp(v, match_value)
|
208
|
+
selected |= lorj_filter_hash(v, match_value)
|
209
|
+
selected |= lorj_filter_array(v, match_value)
|
183
210
|
selected |= lorj_filter_default(v, match_value)
|
184
211
|
break unless selected
|
185
212
|
end
|
@@ -192,12 +219,20 @@ module Lorj
|
|
192
219
|
query.select { |_k, v| limit.include?(v.class) }
|
193
220
|
end
|
194
221
|
|
195
|
-
def _get_from(data, key)
|
222
|
+
def _get_from(data, *key)
|
196
223
|
ret = nil
|
197
224
|
found = nil
|
225
|
+
key.flatten!
|
226
|
+
|
227
|
+
if data.is_a?(Hash)
|
228
|
+
found = data.rh_exist?(*key)
|
229
|
+
ret = data.rh_get(*key)
|
230
|
+
return [found, ret]
|
231
|
+
end
|
198
232
|
|
199
|
-
[:[], key].each do |f|
|
200
|
-
found, ret = _get_from_func(data, key, f)
|
233
|
+
[:[], key[0]].each do |f|
|
234
|
+
found, ret = _get_from_func(data, key[0], f)
|
235
|
+
return _get_from(ret, key[1..-1]) if found && key.length > 1
|
201
236
|
break if found
|
202
237
|
end
|
203
238
|
return [found, ret] if found || !block_given?
|
@@ -213,7 +248,7 @@ module Lorj
|
|
213
248
|
end
|
214
249
|
|
215
250
|
def _get_from_func(data, key, func = nil)
|
216
|
-
func = key if func.nil?
|
251
|
+
func = key[0] if func.nil?
|
217
252
|
v = nil
|
218
253
|
if data.class.method_defined?(func)
|
219
254
|
begin
|
@@ -248,6 +283,42 @@ module Lorj
|
|
248
283
|
false
|
249
284
|
end
|
250
285
|
|
286
|
+
# Function to check if a value is found in an Array
|
287
|
+
#
|
288
|
+
# * *returns*:
|
289
|
+
# - true if found
|
290
|
+
# OR
|
291
|
+
# - false otherwise
|
292
|
+
#
|
293
|
+
def lorj_filter_array(value, match_value)
|
294
|
+
return false unless value.is_a?(Array) || match_value.is_a?(Array)
|
295
|
+
|
296
|
+
if value.is_a?(Array) && match_value.is_a?(Array)
|
297
|
+
return (value.sort == match_value.sort)
|
298
|
+
end
|
299
|
+
|
300
|
+
value.include?(match_value)
|
301
|
+
end
|
302
|
+
|
303
|
+
# Function to check if a value match a filter value.
|
304
|
+
#
|
305
|
+
# * *returns*:
|
306
|
+
# - true if match
|
307
|
+
# OR
|
308
|
+
# - false otherwise
|
309
|
+
#
|
310
|
+
def lorj_filter_hash(value, structure)
|
311
|
+
return false unless value.is_a?(Hash)
|
312
|
+
|
313
|
+
key_path = KeyPath.new(structure)
|
314
|
+
tree = key_path.tree[0..-2]
|
315
|
+
return false unless value.rh_exist?(tree)
|
316
|
+
match_value = key_path.key
|
317
|
+
res = value.rh_get(tree)
|
318
|
+
return lorj_filter_array(res.flatten, match_value) if res.is_a?(Array)
|
319
|
+
lorj_filter_default(res, match_value)
|
320
|
+
end
|
321
|
+
|
251
322
|
# Function to check if a value match a filter value.
|
252
323
|
#
|
253
324
|
# * *returns*:
|
@@ -137,9 +137,9 @@ module Lorj
|
|
137
137
|
object_type, key_path_obj.key,
|
138
138
|
value unless value_mapping.rh_exist?(value)
|
139
139
|
|
140
|
-
result.rh_set(value_mapping[value], map_path.
|
140
|
+
result.rh_set(value_mapping[value], map_path.to_s)
|
141
141
|
else
|
142
|
-
result.rh_set(value, map_path.
|
142
|
+
result.rh_set(value, map_path.to_s)
|
143
143
|
end
|
144
144
|
nil
|
145
145
|
end
|
@@ -111,9 +111,11 @@ module Lorj
|
|
111
111
|
class BaseProcess
|
112
112
|
private
|
113
113
|
|
114
|
-
def account_export(map = nil, with_name = true, account_only = false
|
114
|
+
def account_export(map = nil, with_name = true, account_only = false,
|
115
|
+
processes_options = {}) #:doc:
|
115
116
|
fail Lorj::PrcError.new, 'No Base object loaded.' unless @base_object
|
116
|
-
@base_object.account_export(map, with_name, account_only
|
117
|
+
@base_object.account_export(map, with_name, account_only,
|
118
|
+
processes_options)
|
117
119
|
end
|
118
120
|
|
119
121
|
def account_import(key, enc_hash, name = nil, controller = nil) #:doc:
|
data/lib/core/lorj_keypath.rb
CHANGED
@@ -34,8 +34,8 @@ module Lorj
|
|
34
34
|
# oKey = KeyPath(:test)
|
35
35
|
# puts oKey.to_s # => 'test'
|
36
36
|
# puts oKey.key # => :test
|
37
|
-
# puts oKey.key
|
38
|
-
# puts oKey.key
|
37
|
+
# puts oKey.key(0) # => :test
|
38
|
+
# puts oKey.key(1) # => nil
|
39
39
|
# puts oKey.fpath # => ':test'
|
40
40
|
# puts oKey.tree # => [:test]
|
41
41
|
# puts oKey.key_tree # => :test
|
@@ -43,8 +43,8 @@ module Lorj
|
|
43
43
|
# oKey = KeyPath([:test,:test2,:test3])
|
44
44
|
# puts oKey.to_s # => 'test/test2/test3'
|
45
45
|
# puts oKey.key # => :test3
|
46
|
-
# puts oKey.key
|
47
|
-
# puts oKey.key
|
46
|
+
# puts oKey.key(0) # => :test
|
47
|
+
# puts oKey.key(1) # => :test2
|
48
48
|
# puts oKey.fpath # => ':test/:test2/:test3'
|
49
49
|
# puts oKey.tree # => [:test,:test2,:test3]
|
50
50
|
# puts oKey.key_tree # => ':test/:test2/:test3'
|
@@ -52,8 +52,8 @@ module Lorj
|
|
52
52
|
# oKey = KeyPath([:test, '{/.*/}', :test3])
|
53
53
|
# puts oKey.to_s # => 'test/{\/.*\/}/test3'
|
54
54
|
# puts oKey.key # => :test3
|
55
|
-
# puts oKey.key
|
56
|
-
# puts oKey.key
|
55
|
+
# puts oKey.key(0) # => :test
|
56
|
+
# puts oKey.key(1) # => '{/.*/}'
|
57
57
|
# puts oKey.fpath # => ':test/{\/.*\/}/:test3'
|
58
58
|
# puts oKey.tree # => [:test, '{/.*/}',:test3]
|
59
59
|
# puts oKey.key_tree # => ':test/{\/.*\/}/:test3'
|
data/lib/lorj/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lorj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- forj team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|