bank_api 0.7.8 → 1.0.0

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 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