bank_api 0.3.1 → 0.3.2
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abde8158cac67c0a38e773a4667767026e6146ae
|
4
|
+
data.tar.gz: aeb12e55f14718d2df458d28173f61c9f5d032f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b87b6c4371123c40cb0727a2c9a1335bf7f4c3e599e0cb74fe57c81a767df9b9e26c250e819e90e20c8f64a06645799f28bacbd920e19b816f2ec3043da82b3e
|
7
|
+
data.tar.gz: 25af2be30ba0ae54b42b45c59b98e7760ac14a7b1b1046306c9d7e39b7099c3e08a698e196583a6480cb39de197141cb0b9e7729bec9683de17efd869c02e39b
|
data/Gemfile.lock
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'cgi'
|
1
2
|
require 'timezone'
|
2
3
|
|
3
4
|
require 'bank_api/clients/base_client'
|
@@ -29,17 +30,13 @@ module BankApi::Clients::BancoSecurity
|
|
29
30
|
|
30
31
|
def get_deposits
|
31
32
|
login
|
32
|
-
deposits_first_try = get_deposits_try
|
33
|
-
deposits_second_try = get_deposits_try
|
34
|
-
browser.close
|
35
|
-
deposits_first_try == deposits_second_try ? deposits_first_try : []
|
36
|
-
end
|
37
|
-
|
38
|
-
def get_deposits_try
|
39
33
|
goto_company_dashboard
|
40
34
|
goto_deposits
|
41
35
|
select_deposits_range
|
42
|
-
|
36
|
+
deposits = deposits_from_txt
|
37
|
+
validate_deposits(deposits) unless deposits.empty?
|
38
|
+
browser.close
|
39
|
+
deposits
|
43
40
|
end
|
44
41
|
|
45
42
|
def execute_transfer(transfer_data)
|
@@ -6,16 +6,13 @@ module BankApi::Clients::BancoSecurity
|
|
6
6
|
RUT_COLUMN = 2
|
7
7
|
AMOUNT_COLUMN = 5
|
8
8
|
|
9
|
-
NUMBER_OF_COLUMNS = 7
|
10
|
-
|
11
9
|
def select_deposits_range
|
12
10
|
browser.search('.BusquedaPorDefectoRecibida a:contains("búsqueda avanzada")').click
|
13
11
|
browser.search('#RadioEntreFechasRecibido').click
|
14
|
-
browser.search('#datePickerInicioRecibidas').set deposit_range[:start]
|
15
|
-
browser.search('#datePickerFinRecibido').set deposit_range[:end]
|
12
|
+
browser.search('#datePickerInicioRecibidas').set deposit_range[:start].strftime('%d/%m/%Y')
|
13
|
+
browser.search('#datePickerFinRecibido').set deposit_range[:end].strftime('%d/%m/%Y')
|
16
14
|
wait('.ContenedorSubmitRecibidas .btn_buscar').click
|
17
15
|
wait_for_deposits_fetch
|
18
|
-
set_page_size
|
19
16
|
end
|
20
17
|
|
21
18
|
def wait_for_deposits_fetch
|
@@ -25,62 +22,42 @@ module BankApi::Clients::BancoSecurity
|
|
25
22
|
wait('.k-loading-image') { browser.search('.k-loading-image').none? }
|
26
23
|
end
|
27
24
|
|
28
|
-
def
|
29
|
-
|
25
|
+
def deposits_from_txt
|
26
|
+
return [] unless any_deposits?
|
27
|
+
download = browser.download(deposits_txt_url)
|
28
|
+
transactions = download.content.split("\n").drop(1).map { |r| r.split("|") }
|
29
|
+
format_transactions(transactions)
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
((total_deposits - 1) / @page_size).times do
|
40
|
-
goto_next_page
|
41
|
-
wait_for_next_page(last_seen_deposit)
|
42
|
-
last_seen_deposit = last_deposit_in_current_page
|
43
|
-
|
44
|
-
deposits += deposits_from_page
|
32
|
+
def format_transactions(transactions)
|
33
|
+
transactions.map do |t|
|
34
|
+
{
|
35
|
+
rut: format_rut(t[RUT_COLUMN]),
|
36
|
+
date: Date.parse(t[DATE_COLUMN]),
|
37
|
+
amount: t[AMOUNT_COLUMN].to_i
|
38
|
+
}
|
45
39
|
end
|
46
|
-
|
47
|
-
validate_deposits(deposits, last_seen_deposit)
|
48
|
-
|
49
|
-
deposits.sort_by { |d| d[:date] }
|
50
40
|
end
|
51
41
|
|
52
|
-
def
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
deposit[:rut] = div.text
|
58
|
-
elsif (index % NUMBER_OF_COLUMNS) == DATE_COLUMN
|
59
|
-
deposit[:date] = Date.parse div.text
|
60
|
-
elsif (index % NUMBER_OF_COLUMNS) == AMOUNT_COLUMN
|
61
|
-
deposit[:amount] = div.text.gsub(/[\. $]/, '').to_i
|
62
|
-
elsif ((index + 1) % NUMBER_OF_COLUMNS).zero?
|
63
|
-
deposits << deposit
|
64
|
-
deposit = {}
|
65
|
-
end
|
42
|
+
def deposit_range
|
43
|
+
@deposit_range ||= begin
|
44
|
+
timezone = Timezone['America/Santiago']
|
45
|
+
today = timezone.utc_to_local(Time.now).to_date
|
46
|
+
{ start: (today - @days_to_check), end: today }
|
66
47
|
end
|
67
|
-
deposits
|
68
48
|
end
|
69
49
|
|
70
|
-
def
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
wait('.k-loading-image') { browser.search('.k-loading-image').none? }
|
50
|
+
def deposits_txt_url
|
51
|
+
account_number = CGI.escape(selenium_browser.execute_script('return nCuenta'))
|
52
|
+
start_ = CGI.escape("#{deposit_range[:start].strftime('%m/%d/%Y')} 00:00:00")
|
53
|
+
end_ = CGI.escape("#{deposit_range[:end].strftime('%m/%d/%Y')} 00:00:00")
|
54
|
+
"https://www.bancosecurity.cl/ConvivenciaEmpresas/CartolasTEF/Download/" +
|
55
|
+
"CrearTxTRecibidas?numeroCuenta=#{account_number}&monto=0&" +
|
56
|
+
"fechaInicio=#{start_}&fechaFin=#{end_}&estado=1"
|
78
57
|
end
|
79
58
|
|
80
|
-
def
|
81
|
-
|
82
|
-
matches = pages_info.text.match(/(\d+)[a-z\s-]+(\d+)[a-z\s-]+(\d+)/)
|
83
|
-
matches[2].to_i
|
59
|
+
def format_rut(rut)
|
60
|
+
rut.insert(-2, '-')
|
84
61
|
end
|
85
62
|
|
86
63
|
def total_deposits
|
@@ -89,18 +66,6 @@ module BankApi::Clients::BancoSecurity
|
|
89
66
|
matches[3].to_i
|
90
67
|
end
|
91
68
|
|
92
|
-
def goto_next_page
|
93
|
-
browser.search('#gridPrincipalRecibidas a.k-link[title="Go to the next page"]').click
|
94
|
-
end
|
95
|
-
|
96
|
-
def deposit_range
|
97
|
-
@deposit_range ||= begin
|
98
|
-
timezone = Timezone['America/Santiago']
|
99
|
-
today = timezone.utc_to_local(Time.now).to_date
|
100
|
-
{ start: (today - @days_to_check).strftime('%d/%m/%Y'), end: today.strftime('%d/%m/%Y') }
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
69
|
def any_deposits?
|
105
70
|
browser.search(
|
106
71
|
"#gridPrincipalRecibidas " \
|
@@ -108,17 +73,12 @@ module BankApi::Clients::BancoSecurity
|
|
108
73
|
).none?
|
109
74
|
end
|
110
75
|
|
111
|
-
def validate_deposits(deposits
|
76
|
+
def validate_deposits(deposits)
|
112
77
|
total_deposits_ = total_deposits
|
113
78
|
unless deposits.count == total_deposits_
|
114
79
|
raise BankApi::Deposit::QuantityError, "Expected #{total_deposits_} deposits," +
|
115
80
|
" got #{deposits.count}."
|
116
81
|
end
|
117
|
-
|
118
|
-
unless last_seen_deposit == total_deposits_
|
119
|
-
raise BankApi::Deposit::PaginationError, "Expected to fetch #{total_deposits_} deposits," +
|
120
|
-
" the last seen deposit was nº #{last_seen_deposit}."
|
121
|
-
end
|
122
82
|
end
|
123
83
|
end
|
124
84
|
end
|
data/lib/bank_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bank_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- oaestay
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pincers
|