dolar-bna 1.0.8.1 → 1.0.9.4

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: 2d8d51459187279a89320164459851615e7de64e1ff9dd75d106a7322845eef0
4
- data.tar.gz: 3427e7161337aa661489939e0b9e85c4c99748e3e3fefdbbce13f3153d5eab70
3
+ metadata.gz: 2d9343fee1ffa21bb51f2aad7ef448281dc129a73b5b0118080fff7d036f1e21
4
+ data.tar.gz: 83568ea830cfeecf9b602402bec919b404c33e7c6e98a890b29b13e528c93772
5
5
  SHA512:
6
- metadata.gz: 7a4edad7f7449555932c395cdc9c8821af89e3ffe4935f0fbe361c04a251969b4b035ffac0e2953f045c6156c9d0ac0d59765fd2d963c7ce60a09de5e064752e
7
- data.tar.gz: 82a44c06971f40161f48450fa2b2641fe32498e06ce0063121231c5a768eb4bd954dd452e4a91df78baed90fc8fbd6fcfffe12cb4177b646e62de4d4437dab18
6
+ metadata.gz: add15d42604754a0c3ef1514322bf9504f17d86f7703235fb422f70f319d01c607ceb585925dea1ec4b72b0751454adcb0f97ee24386f82840d95ddf2576fcc5
7
+ data.tar.gz: acc6e416e7a9a89090924c855eec56b8f66da19ab2243984b2106107f73230016463090e53808c4bead23418cb9e73abe44870cfdcc341a8651a623287a81138
@@ -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,32 +20,33 @@ 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
27
+ date = date.to_date
26
28
  while intents < 5
27
- dolar_query = Dolar::Bna::DolarCotization.where(date: Date.today, dolar_type: @dolar_type).first
28
- if dolar_query.nil?
29
+ dolar_query = Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
30
+ if dolar_query.blank?
29
31
  intents += 1
30
32
  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
33
- dolar_buy = dolar_query.dolar_buy unless dolar_query.nil?
34
- dolar_sell = dolar_query.dolar_sell unless dolar_query.nil?
33
+ Dolar::Bna::Exchange.new(date).perform_bna_divisa
34
+ dolar_query = Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
35
+ dolar_buy = dolar_query.dolar_buy unless dolar_query.blank?
36
+ dolar_sell = dolar_query.dolar_sell unless dolar_query.blank?
35
37
  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
38
- dolar_buy = dolar_query.dolar_buy unless dolar_query.nil?
39
- dolar_sell = dolar_query.dolar_sell unless dolar_query.nil?
38
+ Dolar::Bna::Exchange.new(date).perform_bna_billete
39
+ dolar_query = Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
40
+ dolar_buy = dolar_query.dolar_buy unless dolar_query.blank?
41
+ dolar_sell = dolar_query.dolar_sell unless dolar_query.blank?
40
42
  else
41
- dolar_buy = 0
42
- dolar_sell = dolar_query.dolar_sell unless dolar_query.nil?
43
+ dolar_buy = dolar_query.dolar_buy unless dolar_query.blank?
44
+ dolar_sell = dolar_query.dolar_sell unless dolar_query.blank?
43
45
  break
44
46
  end
45
47
  else
46
- dolar_buy = dolar_query.dolar_buy
47
- dolar_sell = dolar_query.dolar_sell unless dolar_query.nil?
48
+ dolar_buy = dolar_query.dolar_buy unless dolar_query.blank?
49
+ dolar_sell = dolar_query.dolar_sell unless dolar_query.blank?
48
50
  break
49
51
  end
50
52
  end
@@ -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, fecha: query.date}
66
+ ddolar = {compra: query.dolar_buy, venta: query.dolar_sell}
67
67
  end
68
68
  return ddolar
69
69
  end
@@ -103,35 +103,30 @@ module Dolar
103
103
  end
104
104
 
105
105
  def obtain_dolar_from_html(url, mechanize, data, d_type)
106
- dolar_fecha = nil
107
106
  page = mechanize.get(url)
108
107
  doc = Nokogiri::HTML(page.body, "UTF-8")
109
108
  doc.xpath("//td").each_with_index do |node, index|
110
109
  data[index] = node.text
111
110
  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
119
111
  correct_date = "#{@fecha.day.to_i}/#{@fecha.month.to_i}/#{@fecha.year.to_i}"
120
112
  i = data.key(correct_date)
121
113
  if !i.nil?
122
- dolar_fecha = data[i - 3]
123
114
  dolar_compra = BigDecimal(data[i - 2].tr(",", ".")).truncate(3).to_f
124
115
  dolar_venta = BigDecimal(data[i - 1].tr(",", ".")).truncate(3).to_f
125
116
  else
126
- dolar_fecha = dolar_fecha.nil? ? data[3] : dolar_fecha
127
117
  dolar_compra = BigDecimal(data[1].tr(",", ".")).truncate(3).to_f
128
118
  dolar_venta = BigDecimal(data[2].tr(",", ".")).truncate(3).to_f
129
119
  end
130
- return {compra: dolar_compra, venta: dolar_venta, fecha: dolar_fecha}
120
+ return {compra: dolar_compra, venta: dolar_venta}
131
121
  end
132
122
 
133
123
  def save_in_db data, dolar_type
134
- Dolar::Bna::DolarCotization.create(date: data[:fecha], dolar_type: dolar_type, dolar_buy: data[:compra], dolar_sell: data[:venta])
124
+ dr = Dolar::Bna::DolarCotization.where(date: @fecha, dolar_type: dolar_type, dolar_buy: data[:compra], dolar_sell: data[:venta]).first_or_initialize
125
+ if dr.save
126
+ pp "todo ok"
127
+ else
128
+ pp dr.errors
129
+ end
135
130
  end
136
131
 
137
132
  end
@@ -1,5 +1,5 @@
1
1
  module Dolar
2
2
  module Bna
3
- VERSION = "1.0.8.1"
3
+ VERSION = "1.0.9.4"
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.1
4
+ version: 1.0.9.4
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-05 00:00:00.000000000 Z
11
+ date: 2019-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: factory_bot