avmtrf1-tools 0.17.1 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/avmtrf1/forponto/parsers/day_registers.rb +19 -0
- data/lib/avmtrf1/forponto/session.rb +9 -44
- data/lib/avmtrf1/forponto/session/day_registers.rb +39 -0
- data/lib/avmtrf1/forponto/session/interval.rb +27 -0
- data/lib/avmtrf1/forponto/session/login.rb +45 -0
- data/lib/avmtrf1/forponto/user/day_registers.rb +32 -0
- data/lib/avmtrf1/tools/runner/forponto/marcacoes.rb +43 -0
- data/lib/avmtrf1/tools/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b31e14c6a3b5afe2172bc36829cac5d0e6e05058f28b3349ee9b85a7fdcadd6d
|
4
|
+
data.tar.gz: 8741f315a310c7c5b8e19b04c7fb4a51407908063a46616707a27019302025e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 252a6dbb20ba33619f0174c77cf2edf08e4027325716bb2adf57d85855ba4b6a9cf7a830c783ac8f44b4a65dff02da409075caf7d24a2a14a84be137bd2e379b
|
7
|
+
data.tar.gz: 22148172bfd1bba6dd6607df23c82fcf7cec22bbea5990dfe076532bfde517d522b2e322f5b6ec8d5e91c6ab7587d0513264a6f09239158e019f400b4079a7fe
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'aranha/parsers/html/item_list'
|
4
|
+
|
5
|
+
module Avmtrf1
|
6
|
+
module Forponto
|
7
|
+
module Parsers
|
8
|
+
class DayRegisters < ::Aranha::Parsers::Html::ItemList
|
9
|
+
field :matricula, :string, './td[1]/font/text()'
|
10
|
+
field :nome, :string, './td[2]/font/text()'
|
11
|
+
field :hora, :string, './td[3]/font/text()'
|
12
|
+
|
13
|
+
def items_xpath
|
14
|
+
'//tr[@class = "celulatabptodados"]'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'aranha/selenium/session'
|
4
|
+
require 'eac_ruby_utils/require_sub'
|
5
|
+
::EacRubyUtils.require_sub(__FILE__)
|
4
6
|
|
5
7
|
module Avmtrf1
|
6
8
|
module Forponto
|
7
9
|
class Session
|
10
|
+
include ::Avmtrf1::Forponto::Session::DayRegisters
|
11
|
+
include ::Avmtrf1::Forponto::Session::Interval
|
12
|
+
include ::Avmtrf1::Forponto::Session::Login
|
13
|
+
|
8
14
|
attr_reader :sub, :root_url, :matricula, :codigo
|
9
15
|
|
10
16
|
def initialize(root_url, matricula, codigo)
|
@@ -16,51 +22,10 @@ module Avmtrf1
|
|
16
22
|
)
|
17
23
|
end
|
18
24
|
|
19
|
-
def
|
20
|
-
sub.navigate.to root_url
|
21
|
-
sub.wait_for_click(xpath: '//a[text() = "COLABORADOR"]')
|
22
|
-
end
|
23
|
-
|
24
|
-
def login(start_date, end_date)
|
25
|
-
go_to_login_form
|
26
|
-
login_fill_matricula
|
27
|
-
login_fill_codigo
|
28
|
-
login_fill_start_date(start_date)
|
29
|
-
login_fill_end_date(end_date)
|
30
|
-
sub.wait_for_click(xpath: '//input[@name="ok"]')
|
31
|
-
end
|
32
|
-
|
33
|
-
def interval_data(start_date, end_date)
|
25
|
+
def parser_data(parser_class, source_code)
|
34
26
|
tempfile = '/tmp/forponto.html'
|
35
|
-
::File.write(tempfile,
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
def interval_source_code(start_date, end_date)
|
40
|
-
login(start_date, end_date)
|
41
|
-
sub.switch_to.frame(sub.wait_for_element(xpath: '//frame[@name="topFrame"]'))
|
42
|
-
sub.wait_for_element(xpath: '//form[@name="frmjustificativa"]')
|
43
|
-
sub.current_source
|
44
|
-
end
|
45
|
-
|
46
|
-
def login_fill_matricula
|
47
|
-
sub.wait_for_element(xpath: '//input[@name="deEdtFunCrachaSel"]').send_keys(matricula)
|
48
|
-
end
|
49
|
-
|
50
|
-
def login_fill_codigo
|
51
|
-
sub.wait_for_element(xpath: '//input[@name="deEdtFunConsulta"]').send_keys(codigo)
|
52
|
-
end
|
53
|
-
|
54
|
-
def login_fill_start_date(start_date)
|
55
|
-
sub.wait_for_element(xpath: '//input[@name="deEdtDataDe"]').send_keys(
|
56
|
-
start_date.strftime('%d/%m/%Y')
|
57
|
-
)
|
58
|
-
end
|
59
|
-
|
60
|
-
def login_fill_end_date(end_date)
|
61
|
-
sub.wait_for_element(xpath: '//input[@name="deEdtDataAte"]').send_keys(
|
62
|
-
end_date.strftime('%d/%m/%Y')
|
63
|
-
)
|
27
|
+
::File.write(tempfile, source_code)
|
28
|
+
parser_class.new("file://#{tempfile}").data
|
64
29
|
end
|
65
30
|
end
|
66
31
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avmtrf1/forponto/parsers/day_registers'
|
4
|
+
|
5
|
+
module Avmtrf1
|
6
|
+
module Forponto
|
7
|
+
class Session
|
8
|
+
module DayRegisters
|
9
|
+
MARCACOES_DO_DIA_VALUE = '1027'
|
10
|
+
|
11
|
+
def day_registers_data
|
12
|
+
parser_data(::Avmtrf1::Forponto::Parsers::DayRegisters, day_registers_source_code)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def day_registers_source_code
|
18
|
+
login(::Date.today.at_beginning_of_month, Date.today.at_end_of_month)
|
19
|
+
click_on_consultas_on_top_menu
|
20
|
+
select_marcacoes_option
|
21
|
+
sub.current_source
|
22
|
+
end
|
23
|
+
|
24
|
+
def click_on_consultas_on_top_menu
|
25
|
+
sub.switch_to.frame(sub.wait_for_element(xpath: '//frame[@name="topFrame"]'))
|
26
|
+
sub.wait_for_click(xpath: '//a[@href="javascript:document.frmconsultas.submit()"]')
|
27
|
+
sub.switch_to.default_content
|
28
|
+
end
|
29
|
+
|
30
|
+
def select_marcacoes_option
|
31
|
+
Selenium::WebDriver::Support::Select.new(
|
32
|
+
sub.wait_for_element(xpath: '//select[@name="deEdtConOpcao"]')
|
33
|
+
).select_by(:value, MARCACOES_DO_DIA_VALUE)
|
34
|
+
sub.wait_for_click(xpath: '//input[@name="ok" and @value="ok"]')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avmtrf1/forponto/parsers/espelho'
|
4
|
+
|
5
|
+
module Avmtrf1
|
6
|
+
module Forponto
|
7
|
+
class Session
|
8
|
+
module Interval
|
9
|
+
def interval_data(start_date, end_date)
|
10
|
+
parser_data(
|
11
|
+
::Avmtrf1::Forponto::Parsers::Espelho,
|
12
|
+
interval_source_code(start_date, end_date)
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def interval_source_code(start_date, end_date)
|
19
|
+
login(start_date, end_date)
|
20
|
+
sub.switch_to.frame(sub.wait_for_element(xpath: '//frame[@name="topFrame"]'))
|
21
|
+
sub.wait_for_element(xpath: '//form[@name="frmjustificativa"]')
|
22
|
+
sub.current_source
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Avmtrf1
|
4
|
+
module Forponto
|
5
|
+
class Session
|
6
|
+
module Login
|
7
|
+
def login(start_date, end_date)
|
8
|
+
go_to_login_form
|
9
|
+
login_fill_matricula
|
10
|
+
login_fill_codigo
|
11
|
+
login_fill_start_date(start_date)
|
12
|
+
login_fill_end_date(end_date)
|
13
|
+
sub.wait_for_click(xpath: '//input[@name="ok"]')
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def go_to_login_form
|
19
|
+
sub.navigate.to root_url
|
20
|
+
sub.wait_for_click(xpath: '//a[text() = "COLABORADOR"]')
|
21
|
+
end
|
22
|
+
|
23
|
+
def login_fill_codigo
|
24
|
+
sub.wait_for_element(xpath: '//input[@name="deEdtFunConsulta"]').send_keys(codigo)
|
25
|
+
end
|
26
|
+
|
27
|
+
def login_fill_end_date(end_date)
|
28
|
+
sub.wait_for_element(xpath: '//input[@name="deEdtDataAte"]').send_keys(
|
29
|
+
end_date.strftime('%d/%m/%Y')
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
def login_fill_matricula
|
34
|
+
sub.wait_for_element(xpath: '//input[@name="deEdtFunCrachaSel"]').send_keys(matricula)
|
35
|
+
end
|
36
|
+
|
37
|
+
def login_fill_start_date(start_date)
|
38
|
+
sub.wait_for_element(xpath: '//input[@name="deEdtDataDe"]').send_keys(
|
39
|
+
start_date.strftime('%d/%m/%Y')
|
40
|
+
)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/simple_cache'
|
4
|
+
|
5
|
+
module Avmtrf1
|
6
|
+
module Forponto
|
7
|
+
class User
|
8
|
+
class DayRegisters
|
9
|
+
enable_simple_cache
|
10
|
+
common_constructor :user
|
11
|
+
|
12
|
+
def date
|
13
|
+
fresh_data
|
14
|
+
@date
|
15
|
+
end
|
16
|
+
|
17
|
+
def times
|
18
|
+
fresh_data.map { |r| r[:hora] }
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def fresh_data_uncached
|
24
|
+
r = ::Avmtrf1::Forponto::Session.new(user.url, user.matricula, user.codigo)
|
25
|
+
.day_registers_data
|
26
|
+
@date = ::Date.today
|
27
|
+
r
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avmtrf1/forponto/user/day_registers'
|
4
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
|
7
|
+
module Avmtrf1
|
8
|
+
module Tools
|
9
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
10
|
+
class Forponto < ::EacRubyUtils::Console::DocoptRunner
|
11
|
+
class Marcacoes < ::EacRubyUtils::Console::DocoptRunner
|
12
|
+
enable_console_speaker
|
13
|
+
enable_simple_cache
|
14
|
+
|
15
|
+
DOC = <<~DOCOPT
|
16
|
+
Mostra marcações Forponto do dia.
|
17
|
+
|
18
|
+
Usage:
|
19
|
+
__PROGRAM__ [options]
|
20
|
+
__PROGRAM__ -h | --help
|
21
|
+
|
22
|
+
Options:
|
23
|
+
-h --help Show this screen.
|
24
|
+
DOCOPT
|
25
|
+
|
26
|
+
def run
|
27
|
+
infov 'Date', day_registers.date
|
28
|
+
infov 'Times', day_registers.times.count
|
29
|
+
day_registers.times.each_with_index do |time, index|
|
30
|
+
infov " * #{index + 1}º", time
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def day_registers_uncached
|
37
|
+
::Avmtrf1::Forponto::User::DayRegisters.new(context(:user))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avmtrf1-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo H. Bogoni
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -258,6 +258,7 @@ files:
|
|
258
258
|
- lib/avmtrf1/esosti/session/solicitacao.rb
|
259
259
|
- lib/avmtrf1/esosti/session/solicitacao/main.rb
|
260
260
|
- lib/avmtrf1/executables.rb
|
261
|
+
- lib/avmtrf1/forponto/parsers/day_registers.rb
|
261
262
|
- lib/avmtrf1/forponto/parsers/espelho.rb
|
262
263
|
- lib/avmtrf1/forponto/parsers/espelho/day_node.rb
|
263
264
|
- lib/avmtrf1/forponto/parsers/espelho/methods_as_fields.rb
|
@@ -267,8 +268,12 @@ files:
|
|
267
268
|
- lib/avmtrf1/forponto/parsers/espelho/summary_node.rb
|
268
269
|
- lib/avmtrf1/forponto/parsers/espelho/utils.rb
|
269
270
|
- lib/avmtrf1/forponto/session.rb
|
271
|
+
- lib/avmtrf1/forponto/session/day_registers.rb
|
272
|
+
- lib/avmtrf1/forponto/session/interval.rb
|
273
|
+
- lib/avmtrf1/forponto/session/login.rb
|
270
274
|
- lib/avmtrf1/forponto/user.rb
|
271
275
|
- lib/avmtrf1/forponto/user/balance.rb
|
276
|
+
- lib/avmtrf1/forponto/user/day_registers.rb
|
272
277
|
- lib/avmtrf1/forponto/user/month.rb
|
273
278
|
- lib/avmtrf1/fs_cache.rb
|
274
279
|
- lib/avmtrf1/git.rb
|
@@ -328,6 +333,7 @@ files:
|
|
328
333
|
- lib/avmtrf1/tools/runner/esosti.rb
|
329
334
|
- lib/avmtrf1/tools/runner/forponto.rb
|
330
335
|
- lib/avmtrf1/tools/runner/forponto/espelho.rb
|
336
|
+
- lib/avmtrf1/tools/runner/forponto/marcacoes.rb
|
331
337
|
- lib/avmtrf1/tools/runner/forponto/resumos.rb
|
332
338
|
- lib/avmtrf1/tools/runner/forponto/saldo.rb
|
333
339
|
- lib/avmtrf1/tools/runner/git.rb
|