basic_yahoo_finance 0.2.0 → 0.3.0

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: 814a795de1eab60580b58d3e297d75495cd1b2b253e0282d031be4415304717b
4
- data.tar.gz: 3b6262e836778a3400063c03789258506a4d298f54a81bd7c45234b6a430f397
3
+ metadata.gz: cc49f81262f0b33b698c042829def51cfc98c1bf75e29fce773cc01ab0c5ab54
4
+ data.tar.gz: 93070ae61360d85c31e1506fbed33d35c6e47ab9d5d98fa67ab6bb4dc56d25f7
5
5
  SHA512:
6
- metadata.gz: 0c51ebf8d46280e517e6525a66be84ef83a8378defcff07de647a1e3dc6fbfd188dbf95412eac2a731bd3273f8aa92482a30ea366e6f20d2fd70fb73f57a1010
7
- data.tar.gz: e69d09f901a017af01221054cf2cfa5f374bf2c4d2b35b6232995778b75bafe87c81fe566547e7a40ec1c7b149bb5007c8b8456191b57133c5cb6b3f37d1ea33
6
+ metadata.gz: f38f40a8f6e272cad2bfcd0f6eeea27bcda86bfdd0ac0e0cde3f1d972ef33aea156cd65e47b876718b1bcb268c8bf1f28e65b6c8f8f2053a33673fa274799a33
7
+ data.tar.gz: a0e36b64d40a44e4c2b569202422ebf7cd8b56f72e6e01af2cd869eddcb757c1c05caa3658ea618efbbe0a6e8a94970479fd72ca2aa6031d2e57563f9917565a
data/CHANGELOG.md CHANGED
@@ -5,14 +5,29 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## 0.2.0 - 2021-02-05
8
+ ## [0.3.0] - 2022-05-06
9
+
10
+ ### Added
11
+
12
+ - Initial setup for redis caching
13
+ - Utility class with symbols generator used in currency queries
14
+ - Foreign exchange symbol generator and finder
15
+ - Rubygems MFA requirement
16
+
17
+ ### Changed
18
+
19
+ - Fix format of returned symbol for FX symbol finder
20
+ - Update gems
21
+ - Parse URI before opening request to API
22
+
23
+ ## [0.2.0] - 2021-02-05
9
24
 
10
25
  ### Changed
11
26
 
12
27
  - User-Agent header in API requests to announce as "BYF" instead of default "Ruby"
13
28
  - Invalid ticker test to new behaviour of the API when the ticker does not exist
14
29
 
15
- ## 0.1.0 - 2021-01-29
30
+ ## [0.1.0] - 2021-01-29
16
31
 
17
32
  ### Added
18
33
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "redis"
4
+
5
+ module BasicYahooFinance
6
+ class Cache
7
+ # TODO: implement later
8
+ end
9
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BasicYahooFinance
4
+ # Small useful utility methods
5
+ class Util
6
+ # Find correct FX symbol in quotes as the symbol format can vary
7
+ def self.find_fx_symbol(quotes, currency1, currency2)
8
+ # Exception for USDCHF=X symbol as it is sometimes returned as CHF=X
9
+ if currency1 == "USD" && currency2 == "CHF"
10
+ quotes["USDCHF=X"].nil? ? "CHF=X" : "#{currency1}CHF=X"
11
+ else
12
+ "#{currency1}#{currency2}=X"
13
+ end
14
+ end
15
+
16
+ # Generate currency symbols based on array of currencies and base currency
17
+ def self.generate_currency_symbols(currencies, base_currency)
18
+ currency_symbols = []
19
+ currencies.each do |currency|
20
+ next if currency == base_currency
21
+
22
+ currency_symbols.push("#{currency}#{base_currency}=X")
23
+ end
24
+ currency_symbols.join(",")
25
+ end
26
+
27
+ # Generate symobol for foreign exchange rate lookup
28
+ def self.generate_fx_symbol(currency1, currency2)
29
+ # Exception for USD against CHF which is formatted as 'CHF=X'
30
+ if currency1 == "USD" && currency2 == "CHF"
31
+ "#{currency2}=X"
32
+ else
33
+ "#{currency1}/#{currency2}"
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BasicYahooFinance
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  require "json"
4
4
  require "open-uri"
5
+ require_relative "basic_yahoo_finance/cache"
6
+ require_relative "basic_yahoo_finance/util"
5
7
  require_relative "basic_yahoo_finance/version"
6
8
 
7
9
  module BasicYahooFinance
@@ -9,11 +11,15 @@ module BasicYahooFinance
9
11
  class Query
10
12
  API_URL = "https://query1.finance.yahoo.com"
11
13
 
14
+ def initialize(cache_url = nil)
15
+ @cache_url = cache_url
16
+ end
17
+
12
18
  def quotes(symbols)
13
19
  symbols_value = generate_symbols_value(symbols)
14
20
  begin
15
- uri = URI.open("#{API_URL}/v7/finance/quote?symbols=#{symbols_value}",
16
- "User-Agent" => "BYF/#{BasicYahooFinance::VERSION}")
21
+ url = URI.parse("#{API_URL}/v7/finance/quote?symbols=#{symbols_value}")
22
+ uri = URI.open(url, "User-Agent" => "BYF/#{BasicYahooFinance::VERSION}")
17
23
  process_output(JSON.parse(uri.read))
18
24
  rescue OpenURI::HTTPError
19
25
  empty_symbols_hash(symbols)
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basic_yahoo_finance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-05 00:00:00.000000000 Z
11
+ date: 2022-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: redis
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: minitest-emoji
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -35,6 +49,8 @@ files:
35
49
  - LICENSE
36
50
  - README.md
37
51
  - lib/basic_yahoo_finance.rb
52
+ - lib/basic_yahoo_finance/cache.rb
53
+ - lib/basic_yahoo_finance/util.rb
38
54
  - lib/basic_yahoo_finance/version.rb
39
55
  homepage: https://towards.ch
40
56
  licenses:
@@ -45,8 +61,9 @@ metadata:
45
61
  changelog_uri: https://github.com/towards/basic_yahoo_finance/blob/master/CHANGELOG.md
46
62
  documentation_uri: https://www.rubydoc.info/gems/basic_yahoo_finance
47
63
  homepage_uri: https://towards.ch
64
+ rubygems_mfa_required: 'true'
48
65
  source_code_uri: https://github.com/towards/basic_yahoo_finance
49
- post_install_message:
66
+ post_install_message:
50
67
  rdoc_options: []
51
68
  require_paths:
52
69
  - lib
@@ -61,8 +78,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
78
  - !ruby/object:Gem::Version
62
79
  version: '0'
63
80
  requirements: []
64
- rubygems_version: 3.2.3
65
- signing_key:
81
+ rubygems_version: 3.3.7
82
+ signing_key:
66
83
  specification_version: 4
67
84
  summary: Basic Yahoo Finance API to query stock prices
68
85
  test_files: []