currency_quote 0.1.7 → 0.2.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: b5b18309249ed756d407c332b6b2f9d94f9f1f66b00ee3de1fda96b812da3853
4
- data.tar.gz: 2b770235571cdd10fcad5f1d78ed4f0a71bd94e6c43749a7ef68fad466138db9
3
+ metadata.gz: 497ba47e3157da48f395e426c66c2a08f1f1fc383d5de2ec45b9c677b33d4b78
4
+ data.tar.gz: 59f706e2f84045c6544df5f657a434d22c1408098737ddb805db2731475acd47
5
5
  SHA512:
6
- metadata.gz: 5d62e4e79f1e5eff18b3abe03e8c520ed935721d8c0d9e5a908bf8a10ae091474dc0aa6cc7dd79da6ebf42c9b8b7e73d845fe9c465b78900859d39ed5393127a
7
- data.tar.gz: c7c5e006a97dc8cad4dde90b78a3856b6e38dc31ac717735576fc2b42444de78d42426f96f7d5e9e2856dc08bf74999b09535bf37c3a8ec223e78eb309cb7977
6
+ metadata.gz: 65f36c0830126a87310b1e2dee724b12fbb5cd4e6b1d4350762570e66cc97a285586d08396827a8658a5bf604717f1efe1c7c4f29416aafb729266681e103f85
7
+ data.tar.gz: 585b42b3b3b6ff2a3dcaeb307e52148494e2a45a5d3ead721a63e45cb5f9328ad003093feecba23c31ee65fc2152a19d8d15265d1b025342e4f7bf6cdb5d3570
data/Gemfile CHANGED
@@ -7,3 +7,5 @@ gem "rake", "~> 12.0"
7
7
  gem "rspec", "~> 3.0"
8
8
 
9
9
  gem "nokogiri", "~> 1.10"
10
+
11
+ gem "addressable", "~> 2.7"
@@ -1,15 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- currency_quote (0.1.6)
4
+ currency_quote (0.2.1)
5
+ addressable
6
+ nokogiri
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
8
10
  specs:
11
+ addressable (2.7.0)
12
+ public_suffix (>= 2.0.2, < 5.0)
9
13
  diff-lcs (1.4.4)
10
14
  mini_portile2 (2.4.0)
11
15
  nokogiri (1.10.10)
12
16
  mini_portile2 (~> 2.4.0)
17
+ public_suffix (4.0.6)
13
18
  rake (12.3.3)
14
19
  rspec (3.10.0)
15
20
  rspec-core (~> 3.10.0)
@@ -29,6 +34,7 @@ PLATFORMS
29
34
  ruby
30
35
 
31
36
  DEPENDENCIES
37
+ addressable (~> 2.7)
32
38
  currency_quote!
33
39
  nokogiri (~> 1.10)
34
40
  rake (~> 12.0)
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  #spec.description = %q{TODO: Write a longer description or delete this line.}
11
11
  spec.homepage = "https://www.sesocio.com"
12
12
  spec.license = "MIT"
13
- spec.required_ruby_version = Gem::Requirement.new(">= 2.7.1")
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
14
14
 
15
15
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
16
16
 
@@ -26,4 +26,6 @@ Gem::Specification.new do |spec|
26
26
  spec.bindir = "exe"
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
+ spec.add_dependency 'nokogiri'
30
+ spec.add_dependency 'addressable'
29
31
  end
@@ -3,7 +3,7 @@ class CurrencyQuote::Currency
3
3
  require 'nokogiri'
4
4
  require 'date'
5
5
 
6
- attr_accessor :currency, :date, :dolar, :doc, :sell, :buy
6
+ attr_accessor :currency, :date, :dolar, :doc, :sell, :buy, :quote
7
7
 
8
8
  BASE_URL = "https://www.bcra.gob.ar/publicacionesestadisticas/Cotizaciones_por_fecha_2.asp"
9
9
 
@@ -15,11 +15,13 @@ class CurrencyQuote::Currency
15
15
 
16
16
  def get_quotation
17
17
  if currency == "Dolar Estadounidense"
18
- return get_dolar_quotation
19
- else
20
- get_dolar_quotation
21
- make_get_to_bcra
22
- get_currency_quotation
18
+ begin
19
+ get_dolar_quotation
20
+ make_get_to_bcra
21
+ get_currency_quotation
22
+ rescue Timeout::Error => e
23
+ @sell = @buy = @quote = 0
24
+ end
23
25
  return struct
24
26
  end
25
27
  end
@@ -32,24 +34,25 @@ class CurrencyQuote::Currency
32
34
 
33
35
  def make_get_to_bcra
34
36
  url = "#{BASE_URL}?date2=#{date}"
35
- @doc = Nokogiri::HTML( URI.open(url) )
37
+ @doc = Nokogiri::HTML( open(url) )
36
38
  end
37
39
 
38
40
  def get_currency_quotation
39
41
  data = @doc.css("td").map(&:text).collect(&:strip!)
40
42
  index = data.index(currency)
41
43
  if index
42
- quote = data[index + 1].gsub(",", ".").to_f
43
- quote = 1.0 if quote == 0
44
- @sell = (dolar.sell * quote).to_f
45
- @buy = (dolar.buy * quote).to_f
44
+ pass = data[index + 1].gsub(",", ".").to_f
45
+ @quote = data[index + 2].gsub(",", ".").to_f
46
+ pass = 1.0 if pass == 0
47
+ @sell = (dolar.sell * pass).to_f
48
+ @buy = (dolar.buy * pass).to_f
46
49
  else
47
- @sell = @buy = 0
50
+ @sell = @buy = @quote = 0
48
51
  end
49
52
  end
50
53
 
51
54
  def struct
52
- s = Struct.new(:currency, :date, :sell, :buy)
53
- s.new(currency, date, sell, buy)
55
+ s = Struct.new(:currency, :date, :sell, :buy, :quote)
56
+ s.new(currency, date, sell, buy, quote)
54
57
  end
55
58
  end
@@ -13,8 +13,12 @@ class CurrencyQuote::Dolar
13
13
  end
14
14
 
15
15
  def get_quotation
16
- make_get_to_bna
17
- extract_data
16
+ begin
17
+ make_get_to_bna
18
+ extract_data
19
+ rescue Timeout::Error => e
20
+ @data = @sell = @buy = 0
21
+ end
18
22
  return struct
19
23
  end
20
24
 
@@ -30,14 +34,18 @@ class CurrencyQuote::Dolar
30
34
  }
31
35
  url = "#{BASE_URL}?#{params.query}"
32
36
 
33
- @doc = Nokogiri::HTML( URI.open(url) )
37
+ @doc = Nokogiri::HTML( open(url) )
34
38
  end
35
39
 
36
40
  def extract_data
37
41
  data = @doc.css("td").map(&:text)
38
- @date = data[data.size - 1]
39
- @sell = data[data.size - 2].gsub(",", ".").to_f
40
- @buy = data[data.size - 3].gsub(",", ".").to_f
42
+ if data.empty?
43
+ @data = @sell = @buy = 0
44
+ else
45
+ @date = data[data.size - 1]
46
+ @sell = data[data.size - 2].gsub(",", ".").to_f
47
+ @buy = data[data.size - 3].gsub(",", ".").to_f
48
+ end
41
49
  end
42
50
 
43
51
  def struct
@@ -1,3 +1,3 @@
1
1
  module CurrencyQuote
2
- VERSION = "0.1.7"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: currency_quote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Facundo A. Díaz Martínez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-17 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-11-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: addressable
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  description:
14
42
  email:
15
43
  - facundo.martinez@sesocio.com
@@ -48,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
48
76
  requirements:
49
77
  - - ">="
50
78
  - !ruby/object:Gem::Version
51
- version: 2.7.1
79
+ version: 2.4.0
52
80
  required_rubygems_version: !ruby/object:Gem::Requirement
53
81
  requirements:
54
82
  - - ">="