dolar-bna 1.0.8 → 1.0.9

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: 3108e2c21aa48d68b93712bea13b69e2cf1cc4d31bc33632cbb172713f4f4d23
4
- data.tar.gz: 0e22b4646b52d28a067c6748240c27325ec0c5035fcf252f15f3f4ca5617c395
3
+ metadata.gz: 9415ba9ecbbe666424e079f7042c703b74577bd78040bb28b6fdaafd945455b3
4
+ data.tar.gz: '095b8f8807a688601e6f9716fca09a13f15cd099bef84be26559de0857eb1284'
5
5
  SHA512:
6
- metadata.gz: dda16f2ff47129ea8a519dc056dbbf4713aa63c0431985e2dcba9cf290a6d8a0478291ca5d1cdfe6f8ba2d28c4cc2000f8eae9c9d6a31fc4095df2542e5e1d41
7
- data.tar.gz: 1aa79fb3641655306efaaab1c0ea3cd9cfce63f779b8e94c839d29c64427a48d4341e83b2679e7186d6c26ab65e51de910534493967bd2e5a5a72829bfaa83d4
6
+ metadata.gz: 40dad803b63dee909d07e65ce4d90f6781cfe230e270a1884f6d1f6bfcf0082745050a2cc525456b061848d6f69c0b99ad18e228e00d3f6844be668a73408fc8
7
+ data.tar.gz: 6cd796da0ce319a9c74025f4207a52aafa63ec19f4a1f0675c5c1b10c511ccd22fb558b2b0ad86639ed1c6e3eadc89f4beb29307f7091093997810ec19ed3b79
@@ -1,15 +1,16 @@
1
1
  module Dolar
2
2
  module Bna
3
3
  class Convert
4
- def initialize(value=0, conversion="ars_to_usd", dolar_type="Divisa")
4
+ def initialize(value=0, conversion="ars_to_usd", dolar_type="Divisa", date=Date.today)
5
5
  @value ||= value
6
6
  @conversion ||= conversion
7
7
  @dolar_type ||= dolar_type
8
+ @date ||= date
8
9
  end
9
10
 
10
11
  def perform
11
12
  #dolar_query = Dolar::Bna::DolarCotization.where(date: Date.today, dolar_type: @dolar_type).first
12
- dolar_buy, dolar_sell = set_dolar()
13
+ dolar_buy, dolar_sell = set_dolar(@date)
13
14
  if @conversion == "ars_to_usd"
14
15
  ars_to_dolar(dolar_sell)
15
16
  else
@@ -19,22 +20,22 @@ module Dolar
19
20
 
20
21
  private
21
22
 
22
- def set_dolar
23
+ def set_dolar date
23
24
  dolar_buy = 0
24
25
  dolar_sell = 0
25
26
  intents = 0
26
27
  while intents < 5
27
- dolar_query = Dolar::Bna::DolarCotization.where(date: Date.today, dolar_type: @dolar_type).first
28
+ dolar_query = Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
28
29
  if dolar_query.nil?
29
30
  intents += 1
30
31
  if @dolar_type.downcase == "divisa"
31
- Dolar::Bna::Exchange.new(Date.today).perform_bna_divisa
32
- dolar_query = Dolar::Bna::DolarCotization.where(date: Date.today, dolar_type: @dolar_type).first
32
+ Dolar::Bna::Exchange.new(date).perform_bna_divisa
33
+ dolar_query = Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
33
34
  dolar_buy = dolar_query.dolar_buy unless dolar_query.nil?
34
35
  dolar_sell = dolar_query.dolar_sell unless dolar_query.nil?
35
36
  elsif @dolar_type.downcase == "billete"
36
- Dolar::Bna::Exchange.new(Date.today).perform_bna_billete
37
- dolar_query = Dolar::Bna::DolarCotization.where(date: Date.today, dolar_type: @dolar_type).first
37
+ Dolar::Bna::Exchange.new(date).perform_bna_billete
38
+ dolar_query = Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
38
39
  dolar_buy = dolar_query.dolar_buy unless dolar_query.nil?
39
40
  dolar_sell = dolar_query.dolar_sell unless dolar_query.nil?
40
41
  else
@@ -63,7 +63,7 @@ module Dolar
63
63
  ddolar = get_dolar()
64
64
  end
65
65
  else
66
- ddolar = {compra: query.dolar_buy, venta: query.dolar_sell}
66
+ ddolar = {compra: query.dolar_buy, venta: query.dolar_sell, fecha: query.date}
67
67
  end
68
68
  return ddolar
69
69
  end
@@ -76,7 +76,7 @@ module Dolar
76
76
  begin
77
77
  Timeout.timeout(15) do
78
78
  url = "http://www.bna.com.ar/Cotizador/HistoricoPrincipales?id=billetes&fecha=#{@fecha.day}%2F#{@fecha.month}%2F#{@fecha.year}&filtroEuro=0&filtroDolar=1"
79
- value = obtain_dolar_from_html(url, mechanize, data)
79
+ value = obtain_dolar_from_html(url, mechanize, data, "billete")
80
80
  return value
81
81
  end
82
82
  rescue => ex
@@ -93,7 +93,7 @@ module Dolar
93
93
  begin
94
94
  Timeout.timeout(15) do
95
95
  url = "http://www.bna.com.ar/Cotizador/MonedasHistorico"
96
- value = obtain_dolar_from_html(url, mechanize, data)
96
+ value = obtain_dolar_from_html(url, mechanize, data, "billete")
97
97
  return value
98
98
  end
99
99
  rescue => ex
@@ -102,27 +102,36 @@ module Dolar
102
102
  end
103
103
  end
104
104
 
105
- def obtain_dolar_from_html(url, mechanize, data)
106
-
105
+ def obtain_dolar_from_html(url, mechanize, data, d_type)
106
+ dolar_fecha = nil
107
107
  page = mechanize.get(url)
108
108
  doc = Nokogiri::HTML(page.body, "UTF-8")
109
109
  doc.xpath("//td").each_with_index do |node, index|
110
110
  data[index] = node.text
111
111
  end
112
+ if d_type == "divisa"
113
+ divs_data = {}
114
+ doc.xpath("//div").each_with_index do |node, index|
115
+ divs_data[index] = node.text
116
+ end
117
+ dolar_fecha = divs_data[1]
118
+ end
112
119
  correct_date = "#{@fecha.day.to_i}/#{@fecha.month.to_i}/#{@fecha.year.to_i}"
113
120
  i = data.key(correct_date)
114
121
  if !i.nil?
122
+ dolar_fecha = data[i - 3]
115
123
  dolar_compra = BigDecimal(data[i - 2].tr(",", ".")).truncate(3).to_f
116
124
  dolar_venta = BigDecimal(data[i - 1].tr(",", ".")).truncate(3).to_f
117
125
  else
126
+ dolar_fecha = dolar_fecha.nil? ? data[3] : dolar_fecha
118
127
  dolar_compra = BigDecimal(data[1].tr(",", ".")).truncate(3).to_f
119
128
  dolar_venta = BigDecimal(data[2].tr(",", ".")).truncate(3).to_f
120
129
  end
121
- return {compra: dolar_compra, venta: dolar_venta}
130
+ return {compra: dolar_compra, venta: dolar_venta, fecha: dolar_fecha}
122
131
  end
123
132
 
124
133
  def save_in_db data, dolar_type
125
- Dolar::Bna::DolarCotization.create(date: @fecha, dolar_type: dolar_type, dolar_buy: data[:compra], dolar_sell: data[:venta])
134
+ Dolar::Bna::DolarCotization.create(date: data[:fecha], dolar_type: dolar_type, dolar_buy: data[:compra], dolar_sell: data[:venta])
126
135
  end
127
136
 
128
137
  end
@@ -1,5 +1,5 @@
1
1
  module Dolar
2
2
  module Bna
3
- VERSION = "1.0.8"
3
+ VERSION = "1.0.9"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dolar-bna
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - LITECODE
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-02 00:00:00.000000000 Z
11
+ date: 2019-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: factory_bot