bank_api 0.7.3 → 0.7.4

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: 1a9bf267f63507899736d217cc642ac0710ab105f381c8867e479bd4f080bc30
4
- data.tar.gz: aa50b1fb9c8704aabb3e0e5f16ebd19e3439aec308b2553f4c133fb6af1e591c
3
+ metadata.gz: 2f2f4a9a510aa0be5c38a8ca5334288bb54e18ed4c331a9041d1a429d3a6465b
4
+ data.tar.gz: 619066eb0753d40b8eba8779243302c1b40df0fadb99d9498fd242787ef62db8
5
5
  SHA512:
6
- metadata.gz: 6c40f5db39554b751b1b627739233d9905acdade157050c7f0b94694085e9b05588fc27a55ec1a0b721215edfe59ee43edd9fa2b8056ebc30ab4742456cbfb38
7
- data.tar.gz: 3bc7a8e336b25128f07e890b6a9016175be9fe7686904d3552116568054d7305617f36e7eca1dad209497e360205d31d47d2330d38a50c0d0c675f78e9af2357
6
+ metadata.gz: 738db258a350678887dc01087758e13deb84cc6a0e80bfb27eab363ac79fb312c7f33b5cb7791c22a690e14a236f4982e1c35b6314c25bc122d778f01a255ce6
7
+ data.tar.gz: 41a00c54ffa933d16faeaf780a3ca931a62e37d8fbfab038b5810ff2e1efa4f0ec582f78588968c33ccd3ed5f0ef7cd68c383c7daf652fae0b21328c15db2ef2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bank_api (0.7.3)
4
+ bank_api (0.7.4)
5
5
  pincers
6
6
  rest-client
7
7
  timezone (~> 1.0)
@@ -7,6 +7,7 @@ module BankApi::Clients
7
7
  class BancoDeChileCompanyClient < BaseClient
8
8
  COMPANY_LOGIN_URL = 'https://www.empresas.bancochile.cl/cgi-bin/navega?pagina=enlinea/login_fus'
9
9
  COMPANY_DEPOSITS_URL = 'https://www.empresas.bancochile.cl/GlosaInternetEmpresaRecibida/ConsultaRecibidaAction.do'
10
+ COMPANY_PREPARE_DEPOSITS_URL = 'https://www.empresas.bancochile.cl/GlosaInternetEmpresaRecibida/RespuestaConsultaRecibidaAction.do'
10
11
  COMPANY_DEPOSITS_TXT_URL = 'https://www.empresas.bancochile.cl/GlosaInternetEmpresaRecibida/RespuestaConsultaRecibidaAction.do'
11
12
  COMPANY_ACCOUNT_DEPOSITS_URL = 'https://www.empresas.bancochile.cl/CCOLSaldoMovimientosWEB/selectorCuentas.do?accion=initSelectorCuentas&cuenta=001642711701&moneda=CTD#page=page-1'
12
13
  COMPANY_CC_BALANCE_URL = 'https://www.empresas.bancochile.cl/CCOLDerivadorWEB/selectorCuentas.do?accion=initSelectorCuentas&opcion=saldos&moduloProducto=CC'
@@ -95,7 +96,6 @@ module BankApi::Clients
95
96
 
96
97
  def get_deposits_from_transfers_section
97
98
  goto_deposits
98
- select_deposits_range
99
99
  deposits_from_txt
100
100
  end
101
101
 
@@ -137,36 +137,17 @@ module BankApi::Clients
137
137
  format_account_transactions(result)
138
138
  end
139
139
 
140
- def select_deposits_range
141
- browser.search('input[name=initDate]').set(deposit_range[:start])
142
- first_account = browser.search("select[name=ctaCorriente] option").find do |account|
143
- account.value.include? @bdc_account
144
- end.value
145
- browser.search("select[name=ctaCorriente]").set by_value: first_account
146
- browser.search('#consultar').click
147
- end
148
-
149
140
  def validate_banchile_status!
150
141
  unless browser.search(".textoerror:contains('no podemos atenderle')").none?
151
142
  raise "Banchile is down"
152
143
  end
153
144
  end
154
145
 
155
- def any_deposits?
156
- browser.search('table#sin_datos').none?
157
- end
158
-
159
- def total_results
160
- browser.search("#pager .encabezadotabla:contains(\"Operaciones encontradas\")")
161
- .text[/\d+/].to_i
162
- end
163
-
164
146
  def deposits_from_txt
165
- validate_banchile_status!
166
- return [] unless any_deposits?
147
+ prepare_deposits
167
148
  response = RestClient::Request.execute(
168
149
  url: COMPANY_DEPOSITS_TXT_URL, method: :post, headers: session_headers,
169
- payload: deposits_params(deposit_range[:start], deposit_range[:end]), verify_ssl: false
150
+ payload: deposits_txt_payload(deposit_range[:start], deposit_range[:end]), verify_ssl: false
170
151
  )
171
152
  raise "Banchile is down" if response.body.include? "no podemos atenderle"
172
153
 
@@ -177,6 +158,14 @@ module BankApi::Clients
177
158
  raise e
178
159
  end
179
160
 
161
+ def prepare_deposits
162
+ RestClient::Request.execute(
163
+ url: COMPANY_PREPARE_DEPOSITS_URL, method: :post, headers: session_headers,
164
+ payload: prepare_deposits_payload(deposit_range[:start], deposit_range[:end]),
165
+ verify_ssl: false
166
+ )
167
+ end
168
+
180
169
  def split_transactions(transactions_str)
181
170
  transactions_str.delete("\r").split("\n").drop(1).map { |r| r.split(";") }.select do |t|
182
171
  t[7] == "Aprobada"
@@ -217,28 +206,50 @@ module BankApi::Clients
217
206
  name.to_s.split("DE:").last.to_s.strip
218
207
  end
219
208
 
220
- def deposits_params(from_date, to_date)
209
+ def base_payload(from_date, to_date)
221
210
  {
222
- 'accion' => 'exportarTxtOperaciones',
223
211
  'initDate' => from_date,
224
212
  'endDate' => to_date,
225
- 'ctaCorriente' => 'TODAS',
213
+ 'ctaCorriente' => padded_account,
226
214
  'nada' => 'nada'
227
215
  }
228
216
  end
229
217
 
218
+ def padded_account
219
+ "0" * (12 - @bdc_account.length) + @bdc_account
220
+ end
221
+
222
+ def prepare_deposits_payload(from_date, to_date)
223
+ base_payload(from_date, to_date).merge('accion' => 'buscarOperaciones')
224
+ end
225
+
226
+ def deposits_txt_payload(from_date, to_date)
227
+ base_payload(from_date, to_date).merge('accion' => 'exportarTxtOperaciones')
228
+ end
229
+
230
230
  def session_headers
231
231
  {
232
- "Cookie" => "JSESSIONID=#{cookie('JSESSIONID')}; token=#{cookie('token')}",
232
+ "Pragma" => "no-cache",
233
+ "Connection" => "keep-alive",
234
+ "Cache-Control" => "no-cache",
235
+ "Upgrade-Insecure-Requests" => 1,
233
236
  "Content-Type" => "application/x-www-form-urlencoded",
234
- "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/" +
235
- "apng,*/*;q=0.8",
237
+ "Origin" => "https://www.empresas.bancochile.cl",
238
+ "User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 " +
239
+ "(KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
240
+ "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9," +
241
+ "image/webp,image/apng,*/*;q=0.8",
236
242
  "Accept-Encoding" => "gzip, deflate, br",
237
- "Referer" => "https://www.empresas.bancochile.cl/GlosaInternetEmpresaRecibida/" +
238
- "RespuestaConsultaRecibidaAction.do"
243
+ "Cookie" => cookies
239
244
  }
240
245
  end
241
246
 
247
+ def cookies
248
+ selenium_browser.manage.all_cookies.map do |cookie|
249
+ "#{cookie[:name]}=#{cookie[:value]}"
250
+ end.join("; ")
251
+ end
252
+
242
253
  def cookie(name)
243
254
  selenium_browser.manage.cookie_named(name)[:value]
244
255
  end
@@ -1,3 +1,3 @@
1
1
  module BankApi
2
- VERSION = "0.7.3"
2
+ VERSION = "0.7.4"
3
3
  end
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.7.3
4
+ version: 0.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - oaestay
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-24 00:00:00.000000000 Z
11
+ date: 2018-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pincers