currency_quote 0.2.0 → 0.2.5

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: 1445f01c79f6c6c01212e23d903b698fd6e0df3ef8ecff16b4be35beae436f35
4
- data.tar.gz: 0361676c60c807d0ca818df20e727fc6564ccd61fa1ac5c4886af584f550b054
3
+ metadata.gz: 1faabc0feffe1d54943addd93fd452607884239c58081c11375e46de4ae3b11c
4
+ data.tar.gz: c628005d7f335e895128dd59c3c01b5ff0eed8cac5a8815af2176290684ca606
5
5
  SHA512:
6
- metadata.gz: cb3e9f08a61b26e866ff2f5271affc5e497defd88c8d22d1304be914b5e99220a7d7f3dbe2b112df9a551348249b1848341c58f7b9faa147a66786a9a4be12de
7
- data.tar.gz: 80c1a02737311812074bd7977d6409e06aea639408e7fe42ae7bf6b40dfa0e98e9c74fe89ad3f560703004d57241a726fadce46ce5aaac65e884f9a317361035
6
+ metadata.gz: 85af2e02b7785d3ee83cd10c4fbb3d902947c2b39b3cd89fbe848b9988f682bcd430f9661fb8dd7724d00dd3d5f541d5b1792cdc60949958ce3332b2721a6354
7
+ data.tar.gz: 71cc8163e2aed87f4d5d8bd7bd1af1305db1ad1150f214fee2a5f09574855a39c373f223b8bea5d232a84ef4b1fb70618072bfcc7d6952e767890e00f2170517
data/Gemfile CHANGED
@@ -9,3 +9,6 @@ gem "rspec", "~> 3.0"
9
9
  gem "nokogiri", "~> 1.10"
10
10
 
11
11
  gem "addressable", "~> 2.7"
12
+
13
+
14
+ gem "httparty", "~> 0.18.1"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- currency_quote (0.1.9)
4
+ currency_quote (0.2.4)
5
5
  addressable
6
6
  nokogiri
7
7
 
@@ -11,7 +11,14 @@ GEM
11
11
  addressable (2.7.0)
12
12
  public_suffix (>= 2.0.2, < 5.0)
13
13
  diff-lcs (1.4.4)
14
+ httparty (0.18.1)
15
+ mime-types (~> 3.0)
16
+ multi_xml (>= 0.5.2)
17
+ mime-types (3.3.1)
18
+ mime-types-data (~> 3.2015)
19
+ mime-types-data (3.2020.1104)
14
20
  mini_portile2 (2.4.0)
21
+ multi_xml (0.6.0)
15
22
  nokogiri (1.10.10)
16
23
  mini_portile2 (~> 2.4.0)
17
24
  public_suffix (4.0.6)
@@ -36,6 +43,7 @@ PLATFORMS
36
43
  DEPENDENCIES
37
44
  addressable (~> 2.7)
38
45
  currency_quote!
46
+ httparty (~> 0.18.1)
39
47
  nokogiri (~> 1.10)
40
48
  rake (~> 12.0)
41
49
  rspec (~> 3.0)
@@ -1,6 +1,7 @@
1
1
  require_relative "currency_quote/version"
2
2
  require_relative "currency_quote/dolar"
3
3
  require_relative "currency_quote/currency"
4
+ require_relative "currency_quote/invertir_online"
4
5
 
5
6
  module CurrencyQuote
6
7
  class Error < StandardError; end
@@ -11,6 +12,7 @@ module CurrencyQuote
11
12
 
12
13
  autoload :Dolar, "currency_quote/dolar"
13
14
  autoload :Currency, "currency_quote/currency"
15
+ autoload :InvertirOnline, "currency_quote/invertir_online"
14
16
 
15
17
  CURRENCIES = [
16
18
  "Bolívar Venezolano",
@@ -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
 
@@ -14,14 +14,14 @@ class CurrencyQuote::Currency
14
14
  end
15
15
 
16
16
  def get_quotation
17
- if currency == "Dolar Estadounidense"
18
- return get_dolar_quotation
19
- else
17
+ begin
20
18
  get_dolar_quotation
21
19
  make_get_to_bcra
22
20
  get_currency_quotation
23
- return struct
21
+ rescue Timeout::Error => e
22
+ @sell = @buy = @quote = 0
24
23
  end
24
+ return struct
25
25
  end
26
26
 
27
27
  private
@@ -39,17 +39,18 @@ class CurrencyQuote::Currency
39
39
  data = @doc.css("td").map(&:text).collect(&:strip!)
40
40
  index = data.index(currency)
41
41
  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
42
+ pass = data[index + 1].gsub(",", ".").to_f
43
+ @quote = data[index + 2].gsub(",", ".").to_f
44
+ pass = 1.0 if pass == 0
45
+ @sell = (dolar.sell * pass).to_f
46
+ @buy = (dolar.buy * pass).to_f
46
47
  else
47
- @sell = @buy = 0
48
+ @sell = @buy = @quote = 0
48
49
  end
49
50
  end
50
51
 
51
52
  def struct
52
- s = Struct.new(:currency, :date, :sell, :buy)
53
- s.new(currency, date, sell, buy)
53
+ s = Struct.new(:currency, :date, :sell, :buy, :quote)
54
+ s.new(currency, date, sell, buy, quote)
54
55
  end
55
56
  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
 
@@ -35,9 +39,13 @@ class CurrencyQuote::Dolar
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
@@ -0,0 +1,46 @@
1
+ class CurrencyQuote::InvertirOnline
2
+ require 'httparty'
3
+
4
+ attr_accessor :username, :password, :access_token
5
+
6
+ BASE_URL = "https://api.invertironline.com"
7
+
8
+ def initialize(username:, password:)
9
+ @username = username
10
+ @password = password
11
+ get_token
12
+ end
13
+
14
+ def get_quote(simbol:, mercado: 'bCBA', plazo: 't1')
15
+ url = BASE_URL + "/api/v2/#{mercado}/Titulos/#{simbol.upcase}/Cotizacion"
16
+ HTTParty.get(url,
17
+ body: {
18
+ 'mercado' => mercado,
19
+ 'simbol' => simbol.upcase,
20
+ 'model.mercado' => mercado,
21
+ 'model.plazo' => plazo
22
+ },
23
+ headers: {
24
+ 'Authorization' => "Bearer #{@access_token}",
25
+ 'Accept' => 'application/json'
26
+ }
27
+ ).parsed_response
28
+ end
29
+
30
+ private
31
+
32
+ def get_token
33
+ url = BASE_URL + "/token"
34
+ @access_token = HTTParty.post(url,
35
+ body: {
36
+ username: username,
37
+ password: password,
38
+ grant_type: 'password'
39
+ },
40
+ headers:{
41
+ 'Content-Type' => 'application/x-www-form-urlencoded',
42
+ 'Accept' => 'application/json'
43
+ }
44
+ )['access_token']
45
+ end
46
+ end
@@ -1,3 +1,3 @@
1
1
  module CurrencyQuote
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: currency_quote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.5
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
11
+ date: 2020-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -61,6 +61,7 @@ files:
61
61
  - lib/currency_quote.rb
62
62
  - lib/currency_quote/currency.rb
63
63
  - lib/currency_quote/dolar.rb
64
+ - lib/currency_quote/invertir_online.rb
64
65
  - lib/currency_quote/version.rb
65
66
  homepage: https://www.sesocio.com
66
67
  licenses: