bank_api 0.7.8 → 1.0.0

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: 1335701d3f92554757e257856cbb744be8005a34d74eda0b0f02ed955eeaaff1
4
- data.tar.gz: 6be8e3449ea0240e6339a41cc90bb2c40c529a18cfca9525a09c50dad4686f15
3
+ metadata.gz: aaf7fef43650e6c6ca07c066219e92cedaf2602d38b880386abfe0576c60cb94
4
+ data.tar.gz: 117c566f6481736b51acbb71457e7c78261ba607a87f670cf29ce777f018514c
5
5
  SHA512:
6
- metadata.gz: ae642f9e1658a102a69a8a0888c570f83026db90e0b843b19fa78e45ea5e33e0cb90256e46fc3fef4b06aa3d0486b3a14899b4865bef049d344d4c3a1641d54f
7
- data.tar.gz: 8817140a5bc6a71d87efd589438a1c1f3d19e3786b4e12fba5ac46f53b0d7d62be9cca080266cdb52aa6e35722af008146965260abd0044c159c5c7f23121ae2
6
+ metadata.gz: 59869a54dbcf09da1d4f163686b0617564c107b43f4049e46bc1bad357eb3e953045fc670696f6077cffd36a4db15a1714ec5847d214e8b0ccbfa24e9cbcdb6c
7
+ data.tar.gz: 60cae0a659e8044abafea282b4761ed5aac0eee84c865c5ceaeba31e4d3aaab28292e3f99bfc35eb0ff442b3175981442f29ee7fc1fb803f52256a4b94faffdc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bank_api (0.7.8)
4
+ bank_api (1.0.0)
5
5
  pincers
6
6
  rest-client
7
7
  timezone (~> 1.0)
@@ -65,7 +65,7 @@ GEM
65
65
  childprocess (~> 0.5)
66
66
  rubyzip (~> 1.0)
67
67
  websocket (~> 1.0)
68
- timezone (1.2.12)
68
+ timezone (1.3.2)
69
69
  unf (0.1.4)
70
70
  unf_ext
71
71
  unf_ext (0.0.7.5)
data/lib/bank_api.rb CHANGED
@@ -25,13 +25,13 @@ module BankApi
25
25
  Clients::BancoDeChileCompanyClient.new(configuration).get_recent_deposits(options)
26
26
  end
27
27
 
28
- def self.get_bdc_account_balance(account_number)
29
- Clients::BancoDeChileCompanyClient.new(configuration).get_account_balance(account_number)
28
+ def self.get_bdc_account_balance(options = {})
29
+ Clients::BancoDeChileCompanyClient.new(configuration).get_account_balance(options)
30
30
  end
31
31
 
32
32
  module BancoSecurity
33
- def self.get_account_balance(account_number)
34
- company_instance.get_balance(account_number)
33
+ def self.get_account_balance(options = {})
34
+ company_instance.get_balance(options)
35
35
  end
36
36
 
37
37
  def self.get_recent_company_deposits(options = {})
@@ -34,13 +34,13 @@ module BankApi::Clients
34
34
  ].any?(&:nil?)
35
35
  end
36
36
 
37
- def get_balance(account_number)
37
+ def get_balance(options)
38
38
  login
39
39
  goto_balance
40
- select_account(account_number)
40
+ select_account(options[:account_number])
41
41
  click_fetch_balance_button
42
42
  {
43
- account_number: account_number,
43
+ account_number: options[:account_number],
44
44
  available_balance: money_to_i(read_balance(:available)),
45
45
  countable_balance: money_to_i(read_balance(:countable))
46
46
  }
@@ -30,11 +30,11 @@ module BankApi::Clients::BancoSecurity
30
30
  :security
31
31
  end
32
32
 
33
- def get_balance(account_number)
33
+ def get_balance(options)
34
34
  login
35
- goto_company_dashboard
35
+ goto_company_dashboard(options[:rut] || @company_rut)
36
36
  goto_balance
37
- find_account_balance(account_number)
37
+ find_account_balance(options[:account_number])
38
38
  ensure
39
39
  browser.close
40
40
  end
@@ -7,6 +7,11 @@ module BankApi::Clients::BancoSecurity
7
7
  COUNTABLE_BALANCE_COLUMN = 2
8
8
 
9
9
  def find_account_balance(account_number)
10
+ return get_balance_from_accounts_list(account_number) if account_number
11
+ get_balance_from_account_summary
12
+ end
13
+
14
+ def get_balance_from_accounts_list(account_number)
10
15
  balance = browser.search(".cuentas-corrientes").search("tbody tr").map do |row|
11
16
  cells = row.search("td")
12
17
  {
@@ -17,19 +22,41 @@ module BankApi::Clients::BancoSecurity
17
22
  end.find do |row|
18
23
  row[:account_number] == account_number
19
24
  end
20
- validate_balance(balance, account_number)
25
+ validate_account_balance(balance, account_number)
21
26
  balance
22
27
  end
23
28
 
24
- def money_to_i(text)
25
- text.delete(".").delete("$").delete(" ").to_i
29
+ def get_balance_from_account_summary
30
+ available_balance = extract_balance(1)
31
+ countable_balance = extract_balance(2)
32
+ validate_summary_balance(available_balance, countable_balance)
33
+
34
+ {
35
+ available_balance: available_balance,
36
+ countable_balance: countable_balance
37
+ }
26
38
  end
27
39
 
28
- def validate_balance(balance, account_number)
40
+ def validate_account_balance(balance, account_number)
29
41
  if balance.nil?
30
42
  raise BankApi::Balance::InvalidAccountNumber, "Couldn't find balance of account " +
31
43
  account_number.to_s
32
44
  end
33
45
  end
46
+
47
+ def validate_summary_balance(available_balance, countable_balance)
48
+ if available_balance.zero? || countable_balance.zero?
49
+ raise BankApi::Balance::MissingAccountBalance, "Couldn't find balance"
50
+ end
51
+ end
52
+
53
+ def extract_balance(td_pos)
54
+ xp = "//*[@id=\"body\"]/div[1]/section/div/div/div[3]/div[2]/table/tbody/tr[1]/td[#{td_pos}]"
55
+ money_to_i(browser.search(xpath: xp).text)
56
+ end
57
+
58
+ def money_to_i(text)
59
+ text.to_s.delete(".").delete("$").delete(" ").to_i
60
+ end
34
61
  end
35
62
  end
@@ -16,9 +16,9 @@ module BankApi::Clients
16
16
  parse_entries(get_deposits(options))
17
17
  end
18
18
 
19
- def get_account_balance(account_number)
19
+ def get_account_balance(options)
20
20
  validate_credentials
21
- get_balance(account_number)
21
+ get_balance(options)
22
22
  end
23
23
 
24
24
  def transfer(transfer_data)
@@ -51,7 +51,7 @@ module BankApi::Clients
51
51
  raise NotImplementedError
52
52
  end
53
53
 
54
- def get_balance
54
+ def get_balance(_options = {})
55
55
  raise NotImplementedError
56
56
  end
57
57
 
@@ -2,6 +2,7 @@ module BankApi
2
2
  class MissingCredentialsError < StandardError; end
3
3
  module Balance
4
4
  class InvalidAccountNumber < StandardError; end
5
+ class MissingAccountBalance < StandardError; end
5
6
  end
6
7
  module Deposit
7
8
  class FetchError < StandardError; end
@@ -1,3 +1,3 @@
1
1
  module BankApi
2
- VERSION = "0.7.8"
2
+ VERSION = "1.0.0"
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.8
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - oaestay
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-09 00:00:00.000000000 Z
11
+ date: 2018-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pincers
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
194
  version: '0'
195
195
  requirements: []
196
196
  rubyforge_project:
197
- rubygems_version: 2.7.7
197
+ rubygems_version: 2.7.8
198
198
  signing_key:
199
199
  specification_version: 4
200
200
  summary: Wrapper for chilean banks