eco-helpers 2.0.46 → 2.0.47

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd9b2a6564e5ce38fa3ed762ab04f5e4e79b1a6580738d9091b846233c6fb66e
4
- data.tar.gz: ac0200ad60b30fc0d40997b4975f016daee8cd48c881bfecae106ca0867ff123
3
+ metadata.gz: 2471c3dc047c0a9ec3c2f1e374d09e4ab9920bd92a54b52a1a0bb0647f869712
4
+ data.tar.gz: 21e3bb5e42b843ee896a4690df358c081accc2338f7afe4aa91acada0755e681
5
5
  SHA512:
6
- metadata.gz: f72270169fd60eaee60b27d333391bc6d2235fe856752d9f7dcd5d5aca18fd129e148cd0830bea37cd86833cabc64f10e4fb09e71c4ba2ba9b6912313da82b4a
7
- data.tar.gz: 690b338d062020a6d80794d794f00f8ce9c263bb8b12a84f774f50193bd49ff474b6a49f670a1e05df9a2db88f70d3639c54582fc8706617c44123753c0a7b9e
6
+ metadata.gz: e73fdfd9ea00ab63ef8fb49fb4dfd52de2c186f93d9fe6464507ea26acc4a8641ea46dd36f99e5c8bf9d1082537518dfd7404a28b43a6fd93cbdce52acd8b367
7
+ data.tar.gz: eb9f056454037f0ae46632b27f7a3e0b2922f0d0b4452eebe23ff34f1c205ce87a45693bcc9a8ff981e91acb0fdada9fd2e37c3a79cb2ab7898d7e0e4aad581e
data/CHANGELOG.md CHANGED
@@ -1,6 +1,20 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [2.0.47] - 2022-02-xx
5
+
6
+ ### Added
7
+ - `Eco::API::UseCases::DefaultCases::CleanUnknownTags`
8
+ - It is possible to extend or override `register_tags`
9
+ - New command option `-include-register-tags` (will not ignore register tags; they will be removed too)
10
+ - `Eco::API::UseCases::DefaultCases::Samples::Sftp`
11
+ - Default sample case to list, get and archive SFTP remote files
12
+ ### Changed
13
+ - upgraded `ecoportal-api-v2` dependency
14
+
15
+ ### Fixed
16
+ - `Eco::API::Common::Session::S3Uploader#upload_file`: check if file exists before opening.
17
+
4
18
  ## [2.0.46] - 2021-12-24
5
19
 
6
20
  ### Added
@@ -9,7 +23,7 @@ All notable changes to this project will be documented in this file.
9
23
  - added also counter of failed to retrieve oozes
10
24
  - added also counter of double ups in search pagination
11
25
  - counter for updated pages and pages that failed update
12
- - `Eco::API::Session#enviro_name`: to identify in whic environment we are running
26
+ - `Eco::API::Session#enviro_name`: to identify in which environment we are running
13
27
 
14
28
  ### Changed
15
29
  - upgraded `ecoportal-api-v2` dependency
data/eco-helpers.gemspec CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
32
32
 
33
33
  spec.add_dependency 'ecoportal-api', '>= 0.8.4', '< 0.9'
34
- spec.add_dependency 'ecoportal-api-v2', '>= 0.8.23', '< 0.9'
34
+ spec.add_dependency 'ecoportal-api-v2', '>= 0.8.24', '< 0.9'
35
35
  spec.add_dependency 'aws-sdk-s3', '>= 1.83.0', '< 2'
36
36
  spec.add_dependency 'aws-sdk-ses', '>= 1.36.0', '< 2'
37
37
  spec.add_dependency 'dotenv', '>= 2.7.6', '< 2.8'
@@ -32,8 +32,10 @@ module Eco
32
32
  # @param path [String] the target file to be uploaded
33
33
  # @return [String] S3 path to the uploaded `path` file
34
34
  def upload_file(path)
35
- File.open(path, "rb") do |f|
36
- upload(File.basename(path), f)
35
+ if File.exist?(path)
36
+ File.open(path, "rb") do |f|
37
+ upload(File.basename(path), f)
38
+ end
37
39
  end
38
40
  end
39
41
 
@@ -2,6 +2,8 @@ class Eco::API::UseCases::DefaultCases::CleanUnknownTags < Eco::API::Common::Loa
2
2
  name "clean-unknown-tags"
3
3
  type :transform
4
4
 
5
+ UNKNOWN_LOCS_FILE = "unknown_locations.txt"
6
+
5
7
  REGISTER_TAGS = [
6
8
  "EVENT", "INJURY", "RISK", "CONTRACTOR", "PERMIT",
7
9
  "AUDIT", "JSEA",
@@ -20,18 +22,52 @@ class Eco::API::UseCases::DefaultCases::CleanUnknownTags < Eco::API::Common::Loa
20
22
  people.each do |person|
21
23
  unknown_tags = person.filter_tags.select {|tag| !tag?(tag)}
22
24
  person.filter_tags -= unknown_tags
25
+ unknown_tag!(*unknown_tags)
23
26
  update.add(person)
24
27
  end
25
28
  end
26
29
 
27
30
  private
28
31
 
32
+ def unknown_tag!(*tags)
33
+ tags.each do |value|
34
+ unless unknown.include?(value)
35
+ unknown << value
36
+ File.open(unknown_tags_file, 'a') do |fd|
37
+ fd.write("#{value}\n")
38
+ end
39
+ puts "Custom detected: '#{value}'"
40
+ end
41
+ end
42
+ end
43
+
44
+ def register_tags
45
+ REGISTER_TAGS
46
+ end
47
+
48
+ def unknown
49
+ @unknown ||= []
50
+ end
51
+
29
52
  def tag?(value)
30
- tagtree.tag?(value) || REGISTER_TAGS.any? {|reg| value == reg}
53
+ tagtree.tag?(value).yield_self do |is_loc|
54
+ next true if is_loc
55
+ if clean_register_tags?
56
+ register_tags.any? {|reg| value == reg}
57
+ end
58
+ end
31
59
  end
32
60
 
33
61
  def tagtree
34
62
  @tagtree ||= ASSETS.config.tagtree
35
63
  end
36
64
 
65
+ def unknown_tags_file
66
+ File.join(".","#{session.enviro_name}_#{UNKNOWN_LOCS_FILE}")
67
+ end
68
+
69
+ def clean_register_tags?
70
+ !options.dig(:usecase, :include_register_tags)
71
+ end
72
+
37
73
  end
@@ -0,0 +1,109 @@
1
+ class Eco::API::UseCases::DefaultCases::Samples::Sftp < Eco::API::Common::Loaders::UseCase
2
+ name "sftp-sample"
3
+ type :other
4
+
5
+ attr_reader :session
6
+
7
+ def main(session, options, usecase)
8
+ @session = session
9
+ options[:end_get] = false
10
+ raise "The SFTP is not configured" unless session.sftp?
11
+ case options.dig(:sftp, :command)
12
+ when :list
13
+ list_folder
14
+ when :get
15
+ get_files
16
+ when :get_last
17
+ get_last
18
+ when :archive
19
+ archive_files
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def file_pattern
26
+ raise "You should redefine the file_pattern function as a RegEx expression that matches the target remote file"
27
+ end
28
+
29
+ # Ex: "/IN/Personnel"
30
+ def remote_subfolder
31
+ raise "You should redefine remote_subfolder as the folder where the target file sits"
32
+ end
33
+
34
+ def archive_subfolder
35
+ "Archive"
36
+ end
37
+
38
+ def with_remote_files
39
+ sftp.files(remote_folder, pattern: file_pattern).each do |remote_file|
40
+ yield(remote_file) if block_given?
41
+ end
42
+ end
43
+
44
+ def list_folder
45
+ puts "Listing remote folder: '#{remote_folder}':"
46
+ with_remote_files {|file| puts file.longname}
47
+ end
48
+
49
+ def get_files
50
+ with_remote_files.tap do |files|
51
+ unless files.empty?
52
+ file_names = files.map {|file| to_remote_path(file.name)}
53
+ puts "Getting the following files:"
54
+ puts file_names
55
+ sftp.download(file_names, local_folder: local_folder)
56
+ end
57
+ end
58
+ end
59
+
60
+ def get_last
61
+ with_remote_files.last.tap do |file|
62
+ if file
63
+ file_name = to_remote_path(file.name)
64
+ puts "Getting the following file: #{file_name}"
65
+ sftp.download(file_name, local_folder: local_folder)
66
+ end
67
+ end
68
+ end
69
+
70
+ def archive_files
71
+ with_remote_files do |file|
72
+ source = to_remote_path(file.name) # should probably be file.longname
73
+ dest = to_remote_path("#{archive_subfolder}/#{file.name}")
74
+ move_file(source, dest)
75
+ end.tap do |files|
76
+ puts "Moved the file(s) to the #{archive_subfolder} folder" unless files.empty?
77
+ end
78
+ end
79
+
80
+ def move_file(source, dest)
81
+ sftp.move(source, dest, 0x0001) do |response|
82
+ if response.ok?
83
+ puts "#{source}\n -to-> #{dest}"
84
+ else
85
+ puts "Could not move file #{source}"
86
+ end
87
+ end
88
+ end
89
+
90
+ def to_remote_path(file)
91
+ remote_folder + "/" + file
92
+ end
93
+
94
+ def local_folder
95
+ "."
96
+ end
97
+
98
+ def remote_folder
99
+ @remote_folder ||= sftp_config.remote_folder + remote_subfolder
100
+ end
101
+
102
+ def sftp_config
103
+ session.config.sftp
104
+ end
105
+
106
+ def sftp
107
+ session.sftp
108
+ end
109
+ end
@@ -0,0 +1,12 @@
1
+ module Eco
2
+ module API
3
+ class UseCases
4
+ class DefaultCases
5
+ module Samples
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ require_relative 'samples/sftp_case'
@@ -9,6 +9,7 @@ module Eco
9
9
  end
10
10
  end
11
11
 
12
+ require_relative 'default_cases/samples'
12
13
  require_relative 'default_cases/abstract_policygroup_abilities_case.rb'
13
14
  require_relative 'default_cases/analyse_people_case'
14
15
  require_relative 'default_cases/append_usergroups_case'
@@ -90,6 +90,9 @@ ASSETS.cli.config do |cnf|
90
90
  desc = "Cleans from filter_tags those tags that are not present in the tagtree (as per tagtree.json file)."
91
91
  desc += " It will preserve standard register tags of most common registers (i.e. EVENT, RISK)."
92
92
  cases.add("-clean-unknown-tags", :transform, desc, case_name: "clean-unknown-tags")
93
+ .add_option("-include-register-tags", "Will also try to remove register tags") do |options|
94
+ options.deep_merge!(usecase: {include_register_tags: true})
95
+ end
93
96
 
94
97
  desc = "Removes the landing page or sets it to -page-id"
95
98
  cases.add("-reset-landing-page", :transform, desc, case_name: "reset-landing-page")
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "2.0.46"
2
+ VERSION = "2.0.47"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.46
4
+ version: 2.0.47
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -136,7 +136,7 @@ dependencies:
136
136
  requirements:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
- version: 0.8.23
139
+ version: 0.8.24
140
140
  - - "<"
141
141
  - !ruby/object:Gem::Version
142
142
  version: '0.9'
@@ -146,7 +146,7 @@ dependencies:
146
146
  requirements:
147
147
  - - ">="
148
148
  - !ruby/object:Gem::Version
149
- version: 0.8.23
149
+ version: 0.8.24
150
150
  - - "<"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.9'
@@ -546,6 +546,8 @@ files:
546
546
  - lib/eco/api/usecases/default_cases/remove_account_trans_case.rb
547
547
  - lib/eco/api/usecases/default_cases/reset_landing_page_case.rb
548
548
  - lib/eco/api/usecases/default_cases/restore_db_case.rb
549
+ - lib/eco/api/usecases/default_cases/samples.rb
550
+ - lib/eco/api/usecases/default_cases/samples/sftp_case.rb
549
551
  - lib/eco/api/usecases/default_cases/set_default_tag_case.rb
550
552
  - lib/eco/api/usecases/default_cases/set_supervisor_case.rb
551
553
  - lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb