avmtrf1-tools 0.28.0 → 0.31.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/avmtrf1/check_point/session.rb +10 -9
- data/lib/avmtrf1/esosti/entities/issue.rb +2 -29
- data/lib/avmtrf1/esosti/instance.rb +4 -0
- data/lib/avmtrf1/esosti/instance/changed.rb +33 -0
- data/lib/avmtrf1/esosti/raw_data_sanitizer.rb +47 -0
- data/lib/avmtrf1/forponto/user/month.rb +1 -1
- data/lib/avmtrf1/inventario_sistemas.rb +40 -0
- data/lib/avmtrf1/inventario_sistemas/parser.rb +42 -0
- data/lib/avmtrf1/inventario_sistemas/parser/body.rb +27 -0
- data/lib/avmtrf1/inventario_sistemas/parser/body_row.rb +12 -0
- data/lib/avmtrf1/inventario_sistemas/parser/header.rb +38 -0
- data/lib/avmtrf1/inventario_sistemas/parser/header_column.rb +27 -0
- data/lib/avmtrf1/inventario_sistemas/site_build.rb +71 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base.rb +41 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/elements.rb +54 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/layout.rb +55 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/stylesheet.css +57 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/index.rb +20 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/sistema.rb +62 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/sistemas_index.rb +31 -0
- data/lib/avmtrf1/patches/eac_launcher/git/base.rb +0 -15
- data/lib/avmtrf1/redmine/instance.rb +2 -1
- data/lib/avmtrf1/rest_provider/instance.rb +13 -55
- data/lib/avmtrf1/rest_provider/instance/issues.rb +30 -0
- data/lib/avmtrf1/rest_provider/request.rb +44 -0
- data/lib/avmtrf1/rest_provider/response.rb +77 -0
- data/lib/avmtrf1/tools/runner/esosti.rb +2 -21
- data/lib/avmtrf1/tools/runner/esosti/changed.rb +52 -0
- data/lib/avmtrf1/tools/runner/esosti/fetch.rb +52 -0
- data/lib/avmtrf1/tools/runner/esosti/request.rb +88 -0
- data/lib/avmtrf1/tools/runner/inventario_sistemas.rb +73 -0
- data/lib/avmtrf1/tools/runner/trf1_dspace_base0/deploy.rb +2 -2
- data/lib/avmtrf1/tools/version.rb +1 -1
- data/lib/avmtrf1/trf1_dspace_base0/deploy.rb +3 -3
- metadata +77 -37
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 15b0f6e21f65419282e6935854bf52b8a2cb66df48b0ec5d3514b22f63998a46
|
|
4
|
+
data.tar.gz: 3719e0002280f131142e156889f28bb876376cfedf9ae1d94b6f0c285813c026
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37002181a2dcc8e46eb145596133b4052b3db605e37cf8a4ad3b92cbd5081d226a2781ba91cf8e6eebe033f6d3db5dd044ba1c00eeaf9d7e9fad7ec8d9792592
|
|
7
|
+
data.tar.gz: 30192eca0adf53cd4e89e89541402c8a0475ad3c7e5e1afdab159cd2e18726505166c072be7a6860952d60c8954b5aba6471471fe8e4d23d9107b1efea6355c6
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
require 'avmtrf1/ad_user'
|
|
4
4
|
require 'avmtrf1/check_point/session/login'
|
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
|
5
6
|
|
|
6
7
|
module Avmtrf1
|
|
7
8
|
module CheckPoint
|
|
8
9
|
class Session
|
|
10
|
+
enable_simple_cache
|
|
11
|
+
|
|
9
12
|
ROOT_URL = 'https://cp.trf1.jus.br'
|
|
10
13
|
LOGIN_URL = "#{ROOT_URL}/connect/PortalMain"
|
|
11
14
|
LOGGED_TITLE_TEXT = 'Network Access Granted'
|
|
@@ -24,15 +27,7 @@ module Avmtrf1
|
|
|
24
27
|
end
|
|
25
28
|
end
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def initialize(username, password, driver_options = {})
|
|
30
|
-
@username = username
|
|
31
|
-
@password = password
|
|
32
|
-
@session = ::Aranha::Selenium::Session.new(
|
|
33
|
-
driver_options.merge(accept_insecure_certs: true)
|
|
34
|
-
)
|
|
35
|
-
end
|
|
30
|
+
common_constructor :username, :password, :driver_options, default: [{}]
|
|
36
31
|
|
|
37
32
|
def logged?
|
|
38
33
|
session.navigate.to LOGIN_URL
|
|
@@ -54,6 +49,12 @@ module Avmtrf1
|
|
|
54
49
|
end
|
|
55
50
|
result_text
|
|
56
51
|
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def session_uncached
|
|
56
|
+
::Aranha::Selenium::Session.new(driver_options.merge(accept_insecure_certs: true))
|
|
57
|
+
end
|
|
57
58
|
end
|
|
58
59
|
end
|
|
59
60
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'avmtrf1/esosti/raw_data_sanitizer'
|
|
3
4
|
require 'avmtrf1/rest_provider/entity'
|
|
4
5
|
|
|
5
6
|
module Avmtrf1
|
|
@@ -9,37 +10,9 @@ module Avmtrf1
|
|
|
9
10
|
class << self
|
|
10
11
|
def parse_data(data)
|
|
11
12
|
data.fetch('QueryMS_RMTICKETResponse')['MS_RMTICKETSet'].if_present(nil) do |v|
|
|
12
|
-
|
|
13
|
+
::Avmtrf1::Esosti::RawDataSanitizer.sanitize(v.fetch('TICKET'))
|
|
13
14
|
end
|
|
14
15
|
end
|
|
15
|
-
|
|
16
|
-
def sanitize_data(data)
|
|
17
|
-
if data.is_a?(Array)
|
|
18
|
-
sanitize_array_data(data)
|
|
19
|
-
elsif data.is_a?(Hash)
|
|
20
|
-
sanitize_hash_data(data)
|
|
21
|
-
else
|
|
22
|
-
data
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def sanitize_array_data(data)
|
|
29
|
-
data.map { |v| sanitize_data(v) }
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def sanitize_hash_data(data)
|
|
33
|
-
if content_hash?(data)
|
|
34
|
-
sanitize_data(data.fetch('content'))
|
|
35
|
-
else
|
|
36
|
-
data.transform_values { |v| sanitize_data(v) }
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def content_hash?(data)
|
|
41
|
-
data.is_a?(Hash) && data.count == 1 && data.key?('content')
|
|
42
|
-
end
|
|
43
16
|
end
|
|
44
17
|
|
|
45
18
|
def initialize(instance, data)
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
3
4
|
require 'avmtrf1/esosti/entities/issue'
|
|
4
5
|
require 'avmtrf1/rest_provider/instance'
|
|
5
6
|
|
|
6
7
|
module Avmtrf1
|
|
7
8
|
module Esosti
|
|
8
9
|
class Instance < ::Avmtrf1::RestProvider::Instance
|
|
10
|
+
require_sub __FILE__
|
|
11
|
+
include ::Avmtrf1::Esosti::Instance::Changed
|
|
12
|
+
|
|
9
13
|
def build_service_url(service_url_suffix)
|
|
10
14
|
"#{root_url}/maxrest/rest#{service_url_suffix}"
|
|
11
15
|
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'avmtrf1/esosti/raw_data_sanitizer'
|
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
|
5
|
+
|
|
6
|
+
module Avmtrf1
|
|
7
|
+
module Esosti
|
|
8
|
+
class Instance < ::Avmtrf1::RestProvider::Instance
|
|
9
|
+
module Changed
|
|
10
|
+
def changed(since)
|
|
11
|
+
changed_request(since).response.body_data_or_raise
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def changed_request(since)
|
|
15
|
+
request_json(changed_url_suffix(since)) do |data|
|
|
16
|
+
::Avmtrf1::Esosti::RawDataSanitizer.sanitize(
|
|
17
|
+
data.fetch('TICKETMboSet').fetch('TICKET')
|
|
18
|
+
).map { |ticket| ticket.fetch('Attributes').fetch('TICKETID').downcase }
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def changed_url_suffix(since)
|
|
23
|
+
'/mbo/ticket?_includecols=ticketid&changedate=~gt~' +
|
|
24
|
+
::CGI.escape(formatted_time(since))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def formatted_time(time)
|
|
28
|
+
time.strftime('%FT%T%:z')
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avmtrf1
|
|
6
|
+
module Esosti
|
|
7
|
+
class RawDataSanitizer
|
|
8
|
+
class << self
|
|
9
|
+
def sanitize(raw_data)
|
|
10
|
+
new(raw_data).sanitized
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
CONTENT_KEY = 'content'
|
|
15
|
+
|
|
16
|
+
common_constructor :raw_data
|
|
17
|
+
|
|
18
|
+
def sanitized
|
|
19
|
+
if raw_data.is_a?(Array)
|
|
20
|
+
array_sanitized
|
|
21
|
+
elsif raw_data.is_a?(Hash)
|
|
22
|
+
hash_sanitized
|
|
23
|
+
else
|
|
24
|
+
raw_data
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def array_sanitized
|
|
31
|
+
raw_data.map { |v| self.class.sanitize(v) }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def hash_sanitized
|
|
35
|
+
if content_hash?
|
|
36
|
+
self.class.sanitize(raw_data.fetch(CONTENT_KEY))
|
|
37
|
+
else
|
|
38
|
+
raw_data.transform_values { |v| self.class.sanitize(v) }
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def content_hash?
|
|
43
|
+
raw_data.is_a?(Hash) && raw_data.count == 1 && raw_data.key?(CONTENT_KEY)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
require 'roo'
|
|
5
|
+
|
|
6
|
+
module Avmtrf1
|
|
7
|
+
class InventarioSistemas
|
|
8
|
+
require_sub __FILE__, include_modules: true
|
|
9
|
+
|
|
10
|
+
SHEET_NAME = 'TRF1'
|
|
11
|
+
UNUSED_OFFSET = 1
|
|
12
|
+
UNUSED_SIZE = 2
|
|
13
|
+
HEADER_OFFSET = UNUSED_OFFSET + UNUSED_SIZE
|
|
14
|
+
HEADER_SIZE = 2
|
|
15
|
+
BODY_OFFSET = HEADER_OFFSET + HEADER_SIZE
|
|
16
|
+
|
|
17
|
+
enable_simple_cache
|
|
18
|
+
common_constructor :path do
|
|
19
|
+
self.path = path.to_pathname
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def to_s
|
|
23
|
+
path.to_s
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def roo_uncached
|
|
29
|
+
::Roo::Spreadsheet.open(path.to_path)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def sheet_uncached
|
|
33
|
+
roo.sheet(SHEET_NAME) || raise("Sheet not found: \"#{SHEET_NAME}\"")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def sheet_row_count
|
|
37
|
+
sheet.last_row
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
require 'roo'
|
|
5
|
+
|
|
6
|
+
module Avmtrf1
|
|
7
|
+
class InventarioSistemas
|
|
8
|
+
class Parser
|
|
9
|
+
require_sub __FILE__, include_modules: true
|
|
10
|
+
|
|
11
|
+
SHEET_NAME = 'TRF1'
|
|
12
|
+
UNUSED_OFFSET = 1
|
|
13
|
+
UNUSED_SIZE = 2
|
|
14
|
+
HEADER_OFFSET = UNUSED_OFFSET + UNUSED_SIZE
|
|
15
|
+
HEADER_SIZE = 2
|
|
16
|
+
BODY_OFFSET = HEADER_OFFSET + HEADER_SIZE
|
|
17
|
+
|
|
18
|
+
enable_simple_cache
|
|
19
|
+
common_constructor :path do
|
|
20
|
+
self.path = path.to_pathname
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def to_s
|
|
24
|
+
path.to_s
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def roo_uncached
|
|
30
|
+
::Roo::Spreadsheet.open(path.to_path)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def sheet_uncached
|
|
34
|
+
roo.sheet(SHEET_NAME) || raise("Sheet not found: \"#{SHEET_NAME}\"")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def sheet_row_count
|
|
38
|
+
sheet.last_row
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avmtrf1
|
|
6
|
+
class InventarioSistemas
|
|
7
|
+
class Parser
|
|
8
|
+
module Body
|
|
9
|
+
def body_rows_uncached
|
|
10
|
+
index = 0
|
|
11
|
+
r = []
|
|
12
|
+
loop do
|
|
13
|
+
raw_row_i = BODY_OFFSET + index
|
|
14
|
+
return r if raw_row_i > sheet.last_row
|
|
15
|
+
|
|
16
|
+
r << sheet.row(raw_row_i).map { |v| v.to_s.strip }
|
|
17
|
+
index += 1
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def body_rows_offset
|
|
22
|
+
Header::HEADER_ROW_OFFSET + Header::HEADER_ROWS_SIZE
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avmtrf1
|
|
6
|
+
class InventarioSistemas
|
|
7
|
+
class Parser
|
|
8
|
+
module Header
|
|
9
|
+
HEADER_ROW_OFFSET = 3
|
|
10
|
+
HEADER_ROWS_SIZE = 2
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def header_columns_uncached
|
|
15
|
+
r = []
|
|
16
|
+
last_main = nil
|
|
17
|
+
main_row.each_with_index do |main, index|
|
|
18
|
+
sub = sub_row[index]
|
|
19
|
+
main ||= last_main
|
|
20
|
+
raise "[main] is blank (Index: #{index}, Sub: #{sub})" if main.blank?
|
|
21
|
+
|
|
22
|
+
r << HeaderColumn.new(index, main, sub)
|
|
23
|
+
last_main = main if main.present?
|
|
24
|
+
end
|
|
25
|
+
r
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def main_row_uncached
|
|
29
|
+
sheet.row(HEADER_ROW_OFFSET)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def sub_row_uncached
|
|
33
|
+
sheet.row(HEADER_ROW_OFFSET + 1)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avmtrf1
|
|
6
|
+
class InventarioSistemas
|
|
7
|
+
class Parser
|
|
8
|
+
class HeaderColumn
|
|
9
|
+
class << self
|
|
10
|
+
def build_id(main, sub)
|
|
11
|
+
"#{main}_#{sub || 'nil'}".downcase.parameterize
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
common_constructor :index, :main, :sub
|
|
16
|
+
|
|
17
|
+
def id
|
|
18
|
+
self.class.build_id(main, sub)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def key
|
|
22
|
+
main + sub.if_present('') { |v| "/#{v}" }
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avmtrf1
|
|
6
|
+
class InventarioSistemas
|
|
7
|
+
class SiteBuild
|
|
8
|
+
require_sub __FILE__
|
|
9
|
+
enable_simple_cache
|
|
10
|
+
common_constructor :input_file, :output_directory
|
|
11
|
+
|
|
12
|
+
UNIQUES = %w[index sistemas_index].freeze
|
|
13
|
+
|
|
14
|
+
def run
|
|
15
|
+
create_output_directory
|
|
16
|
+
build_uniques
|
|
17
|
+
build_sistemas
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def column(main, sub)
|
|
21
|
+
indexed_columns.fetch(
|
|
22
|
+
::Avmtrf1::InventarioSistemas::Parser::HeaderColumn.build_id(main, sub)
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def build_uniques
|
|
29
|
+
UNIQUES.each { |unique| send(unique).build }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def build_sistemas
|
|
33
|
+
sistemas.each(&:build)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def create_output_directory
|
|
37
|
+
output_directory.mkpath
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def parser_uncached
|
|
41
|
+
::Avmtrf1::InventarioSistemas::Parser.new(input_file)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def sistemas_uncached
|
|
45
|
+
parser.body_rows
|
|
46
|
+
.map { |body_row| new_sistema(body_row) }
|
|
47
|
+
.sort_by { |sistema| [sistema.title.downcase] }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def indexed_columns_uncached
|
|
51
|
+
parser.header_columns.map do |c|
|
|
52
|
+
[c.id, c]
|
|
53
|
+
end.to_h
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def index_uncached
|
|
57
|
+
::Avmtrf1::InventarioSistemas::SiteBuild::Index.new(self, nil)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def sistemas_index_uncached
|
|
61
|
+
::Avmtrf1::InventarioSistemas::SiteBuild::SistemasIndex.new(self, index)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def new_sistema(body_row)
|
|
65
|
+
::Avmtrf1::InventarioSistemas::SiteBuild::Sistema.new(
|
|
66
|
+
self, sistemas_index, body_row
|
|
67
|
+
)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|