portal_scraper 2.0.1 → 2.0.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
  SHA256:
3
- metadata.gz: 3f511d4ae5d6568df6bc6960907a0964ecfb6c8f0c8d5850b5ad757a0ed35039
4
- data.tar.gz: 5edb4fdbd33676d7b03623a86815b0b865fd214d85e4cd6e34e7fe42fa67204b
3
+ metadata.gz: 4da909bd4c96e2f086b1c3d829c27a1ed6be1fc2dd2a071d1b0c95aaf062f60a
4
+ data.tar.gz: dd4c79ee59b02dc544b54507cb74a67203f17f661c39add242024a82c52dd837
5
5
  SHA512:
6
- metadata.gz: 5df684726b58e1d8da72af7abd8b0395d36bc403f8d045ef0abbf628a8eee0aeebaa13f13ecbc9e80b9ff1dd088695eec92470dac707d5e5977dab1961196234
7
- data.tar.gz: d93c42d08e8f39ddacf8828060e91324f0ad1b42f1f131b381d43ba693bbba8d05c3d82e1c669736fc153d087b9f648ba1af8fab7936be25c70ee10d811c2708
6
+ metadata.gz: ad8b34815e11e7eea8cfd7278b0fe5ad9342567855fdef8faba6a274ca0731f3976aed8804372889f742f6d8f10b72730e55f4e6ce3b18de4b24d8c6f48fa1c9
7
+ data.tar.gz: ca74f2b24e0acf074795028ed4b84a0190197743d3c30b96f6b8b13873f6cf0938b775f403c4fc878f99600cede3f39db0f3a288a9f08e5d7a473a0df6969d93
@@ -25,23 +25,28 @@ module PortalScraper
25
25
  loop do
26
26
  user_page.links_with(href: /appTiersDetail.do/).each do |link|
27
27
  account = link.click
28
- selected_row = nil
29
- selected_row_date = nil
30
-
31
- account.links_with(css: 'table#contrat td a').each do |row|
32
- row_date = parse_date(row.node.ancestors('tr').at('td[2]'))&.to_date
33
- if selected_row_date.nil? || selected_row_date < row_date
34
- selected_row_date = row_date
35
- selected_row = row
36
- end
28
+ selected_link = nil
29
+ opened_on, balance = nil, 0.to_d
30
+
31
+ account.links_with(css: 'table#contrat td a').each do |account_link|
32
+ row = account_link.node.ancestors('tr')
33
+ next unless row.at('td[1]').text.strip == 'Compte épargne rémunéré'
34
+
35
+ row_date = parse_date(row.at('td[2]'))
36
+ next unless opened_on.nil? || opened_on < row_date
37
+
38
+ selected_link = account_link
39
+ opened_on = row_date
40
+ balance = parse_number(row.at('td[4]'))
37
41
  end
38
42
 
39
- transfers = scrap_transfers(selected_row)
40
- balance = selected_row&.node&.ancestors('tr')&.at('td[4]')
43
+ next unless selected_link
44
+
45
+ transfers = scrap_transfers(selected_link)
41
46
  accounts_data[:accounts] << {
42
47
  client_ref: find_table_value(account, 'Identifiant tiers'),
43
- balance: balance.nil? ? "0".to_d : parse_number(balance),
44
- opened_on: selected_row_date.nil? ? parse_dates(account.search('table#contrat td'))&.max : selected_row_date.to_s,
48
+ balance: balance,
49
+ opened_on: opened_on,
45
50
  transfers: transfers,
46
51
  }
47
52
  end
@@ -175,21 +180,17 @@ module PortalScraper
175
180
  PortalScraper.config
176
181
  end
177
182
 
178
- def scrap_transfers(selected_row)
179
- transfers = []
180
- transfers_page = selected_row&.click
181
- if transfers_page
182
- transfers_page.search('table#operation tbody tr').each do |row|
183
- transfers << {
184
- operation_date: parse_date(row.search('td[1]')),
185
- nature: row.search('td[2]').text.strip.gsub(/[\n,\t,'']/, ''),
186
- value_date: parse_date(row.search('td[3]')),
187
- debit: parse_number(row.search('td[4]')),
188
- credit: parse_number(row.search('td[5]')),
189
- }
190
- end
183
+ def scrap_transfers(account_link)
184
+ transfers_page = account_link.click
185
+ transfers_page.search('table#operation tbody tr').map do |transfer_row|
186
+ {
187
+ operation_date: parse_date(transfer_row.search('td[1]')),
188
+ nature: transfer_row.search('td[2]').text.strip.gsub(/[\n,\t,'']/, ''),
189
+ value_date: parse_date(transfer_row.search('td[3]')),
190
+ debit: parse_number(transfer_row.search('td[4]')),
191
+ credit: parse_number(transfer_row.search('td[5]')),
192
+ }
191
193
  end
192
- transfers
193
194
  end
194
195
  end
195
196
  end
@@ -13,7 +13,7 @@ module PortalScraper
13
13
  end
14
14
 
15
15
  def parse_dates(node)
16
- node.text.strip.gsub(%r(\d{2}/\d{2}/\d{4}))
16
+ node.text.strip.gsub(%r(\d{2}/\d{2}/\d{4})).map { |d| Date.strptime(d, '%d/%m/%Y') }
17
17
  end
18
18
  end
19
19
  end
@@ -2,7 +2,7 @@ module PortalScraper
2
2
  class Version
3
3
  MAJOR = 2
4
4
  MINOR = 0
5
- PATCH = 1
5
+ PATCH = 2
6
6
 
7
7
  def self.to_s
8
8
  [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: portal_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Armand Mégrot
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-06 00:00:00.000000000 Z
12
+ date: 2020-01-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mechanize