alphavantagerb 1.3.3 → 1.4.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: 413b5364ea4c510277f0860e14584c0a81b38652d7c5125989ea0bf145635277
4
- data.tar.gz: 5154246e8578dac151eaabfa4426725712fc35a7fb68208108ff4f241625da5e
3
+ metadata.gz: 457cc006c17e9c74cce1898e6529dc87da99c5c7408b0c0aa45a03247794929a
4
+ data.tar.gz: 5da6c0030e6d6cf8bef44ee87e57b6401ab6ac865844e1015ae8498a70c7d8fb
5
5
  SHA512:
6
- metadata.gz: f26adab0cd5024c4e9eaa187882f61112a8b3e1d825eddd11f9ef153e75c07451d0f992bc95c1fec8dabdc9062369d643e70bad114dab9ff9e7defc182edd7bf
7
- data.tar.gz: 3001c51e62647cd3bb3b50a0cf78fa0a2277bd6c2058a572adb38a6ce0b9a1bd3575527bc6878d2ac8d68f023edb35ba803f360101471ac6bb66e06712ff503b
6
+ metadata.gz: cbf720a046243b6cdb4ead24d2ea07c6a21e88e5d41e5b1fa34f9f5f1b644c7e4cd7a27d2a2e8b76978d4539a5a083a7467d57bbc72496847868a6a0d5eb9eb1
7
+ data.tar.gz: 8db97aaf3e00136d3252a4077958375b569b679ffde9b7aaee69d6c75547760e006bc2bda2261d170bb3a4cb7f4cebc1c9c6794f2e0cc7e839fa562328cfb199
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "alphavantagerb"
6
- s.version = "1.3.3"
6
+ s.version = "1.4.0"
7
7
  s.authors = ["Stefano Martin"]
8
8
  s.email = ["stefano.martin87@gmail.com"]
9
9
  s.homepage = "https://github.com/StefanoMartin/AlphaVantageRB"
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  AlphavantageRB [![Gem Version](https://badge.fury.io/rb/alphavantagerb.svg)](https://badge.fury.io/rb/alphavantagerb)
2
2
  =========================================================
3
3
 
4
- Last update: 7/4/2020
4
+ Last update: 8/4/2020
5
5
 
6
6
  [Alpha Vantage](https://www.alphavantage.co/) is a great API for retrieving Stock
7
7
  market data in JSON or CSV format.
@@ -736,6 +736,7 @@ These two creation commands are equivalent:
736
736
  ``` ruby
737
737
  crypto = client.crypto symbol: "BTC", market: "DKK"
738
738
  crypto = Alphavantage::Crypto.new symbol: "BTC", market: "DKK", key: "YOURKEY"
739
+ crypto.rating # Retrieve crypto ratings instance
739
740
  ```
740
741
 
741
742
  Note that the initialization owns different entry:
@@ -832,8 +833,8 @@ exchange = Alphavantage::Exchange.new from: "USD", to: "DKK", key: "YOURKEY"
832
833
 
833
834
  Note that the initialization owns different entry:
834
835
 
835
- * from: input currency you want to check the value
836
- * to: output currency you want to see the value
836
+ * from: input currency you want to check the value (can be a crypto currency)
837
+ * to: output currency you want to see the value (can be a crypto currency)
837
838
  * symbol: it is a string that denote the stock you want to retrieve.
838
839
  * key: authentication key. This value cannot be setup if you are initializing a Stock class from a client
839
840
  * verbose: used to see the request to Alpha Vantage (default false). This value cannot be setup if you are initializing a timeseries from a stock
@@ -26,6 +26,7 @@ module Alphavantage
26
26
  end
27
27
  data = response.body
28
28
  begin
29
+ puts data if @verbose
29
30
  data = JSON.parse(data)
30
31
  rescue StandardError => e
31
32
  raise Alphavantage::Error.new message: "Parsing failed",
@@ -18,6 +18,11 @@ module Alphavantage
18
18
  @datatype = datatype
19
19
  end
20
20
 
21
+ def rating
22
+ url = "function=CRYPTO_RATING&symbol=#{@symbol}"
23
+ return open_struct(url, "Crypto Rating (FCAS)")
24
+ end
25
+
21
26
  def timeseries type: "daily", market: @market, file: nil, datatype: @datatype
22
27
  Alphavantage::Crypto_Timeseries.new type: type, market: market,
23
28
  symbol: @symbol, datatype: datatype, file: file, key: @client
@@ -6,6 +6,8 @@ module Alphavantage
6
6
  datatype: "json"
7
7
  check_argument([true, false], verbose, "verbose")
8
8
  @client = return_client(key, verbose)
9
+ from = from.symbol if from.is_a?(Alphavantage::Crypto)
10
+ to = to.symbol if to.is_a?(Alphavantage::Crypto)
9
11
  @from = from
10
12
  @to = to
11
13
  check_argument(["json", "csv"], datatype, "datatype")
@@ -23,8 +23,8 @@ module Alphavantage
23
23
  return @client.download(url, file) if datatype == "csv"
24
24
  @output = @client.request(url)
25
25
  metadata = @output.dig("Meta Data") || {}
26
- metadata.each do |key, val|
27
- key_sym = key.downcase.gsub(/[0-9.]/, "").lstrip.gsub(" ", "_").to_sym
26
+ metadata.each do |k, val|
27
+ key_sym = k.downcase.gsub(/[0-9.]/, "").lstrip.gsub(" ", "_").to_sym
28
28
  define_singleton_method(key_sym) do
29
29
  return val
30
30
  end
@@ -32,7 +32,7 @@ module Alphavantage
32
32
  @open = []; @high = []; @low = []; @close = [];
33
33
 
34
34
  begin
35
- time_series = @output.find{|key, val| key.include?("Time Series")}[1]
35
+ time_series = @output.find{|k, val| k.include?("Time Series")}[1]
36
36
  rescue StandardError => e
37
37
  raise Alphavantage::Error.new message: "No Time Series found: #{e.message}",
38
38
  data: @output
@@ -40,14 +40,14 @@ module Alphavantage
40
40
 
41
41
  series = {}
42
42
  convert_key = {}
43
- time_series.values[0].keys.each do |key|
44
- key_sym = recreate_metadata_key(key)
43
+ time_series.values[0].keys.each do |k|
44
+ key_sym = recreate_metadata_key(k)
45
45
  series[key_sym] = []
46
- convert_key[key] = key_sym
46
+ convert_key[k] = key_sym
47
47
  end
48
48
  time_series.each do |time, ts_hash|
49
- ts_hash.each do |key, value|
50
- series[convert_key[key]] << [time, value]
49
+ ts_hash.each do |k, value|
50
+ series[convert_key[k]] << [time, value]
51
51
  end
52
52
  end
53
53
  series.keys.each do |key_sym|
@@ -96,15 +96,15 @@ module Alphavantage
96
96
 
97
97
  @output = @client.request(url)
98
98
  metadata = @output.dig("Meta Data") || {}
99
- metadata.each do |key, val|
100
- key_sym = recreate_metadata_key(key)
99
+ metadata.each do |k, val|
100
+ key_sym = recreate_metadata_key(k)
101
101
  define_singleton_method(key_sym) do
102
102
  return val
103
103
  end
104
104
  end
105
105
 
106
106
  begin
107
- time_series = @output.find{|key, val| key.include?("Technical Analysis")}[1]
107
+ time_series = @output.find{|k, val| k.include?("Technical Analysis")}[1]
108
108
  rescue StandardError => e
109
109
  raise Alphavantage::Error.new message: "No Time Series found: #{e.message}",
110
110
  data: @output
@@ -112,14 +112,14 @@ module Alphavantage
112
112
 
113
113
  series = {}
114
114
  convert_key = {}
115
- time_series.values[0].keys.each do |key|
116
- key_sym = key.downcase.gsub(/[.\/]/, "").lstrip.gsub(" ", "_").to_sym
115
+ time_series.values[0].keys.each do |k|
116
+ key_sym = k.downcase.gsub(/[.\/]/, "").lstrip.gsub(" ", "_").to_sym
117
117
  series[key_sym] = []
118
- convert_key[key] = key_sym
118
+ convert_key[k] = key_sym
119
119
  end
120
120
  time_series.each do |time, ts_hash|
121
- ts_hash.each do |key, value|
122
- series[convert_key[key]] << [time, value]
121
+ ts_hash.each do |k, value|
122
+ series[convert_key[k]] << [time, value]
123
123
  end
124
124
  end
125
125
  series.keys.each do |key_sym|
@@ -7,22 +7,22 @@ module Alphavantage
7
7
  @client = return_client(key, verbose)
8
8
  @output = @client.request("function=SECTOR")
9
9
  metadata = @output.dig("Meta Data") || {}
10
- metadata.each do |key, val|
11
- key_sym = key.downcase.gsub(/[0-9.]/, "").lstrip.gsub(" ", "_").to_sym
10
+ metadata.each do |k, val|
11
+ key_sym = k.downcase.gsub(/[0-9.]/, "").lstrip.gsub(" ", "_").to_sym
12
12
  define_singleton_method(key_sym) do
13
13
  return val
14
14
  end
15
15
  end
16
- @output.each do |key, val|
17
- next if key == "Meta Data"
18
- key = key.split(":")[1].lstrip
19
- key = key.split(" ")
20
- if key[0].to_i != 0
21
- key[0] = key[0].to_i.humanize
16
+ @output.each do |k, val|
17
+ next if k == "Meta Data"
18
+ k = k.split(":")[1].lstrip
19
+ k = k.split(" ")
20
+ if k[0].to_i != 0
21
+ k[0] = k[0].to_i.humanize
22
22
  end
23
- key.delete_if{|k| k.include?("(")}
24
- key = key.join("_")
25
- key_sym = key.downcase.gsub("-", "_").to_sym
23
+ k.delete_if{|ka| ka.include?("(")}
24
+ k = k.join("_")
25
+ key_sym = k.downcase.gsub("-", "_").to_sym
26
26
  define_singleton_method(key_sym) do
27
27
  return val
28
28
  end
@@ -26,15 +26,15 @@ module Alphavantage
26
26
  return @client.download(url, file) if datatype == "csv"
27
27
  @output = @client.request(url)
28
28
  metadata = @output.dig("Meta Data") || {}
29
- metadata.each do |key, val|
30
- key_sym = recreate_metadata_key(key)
29
+ metadata.each do |k, val|
30
+ key_sym = recreate_metadata_key(k)
31
31
  define_singleton_method(key_sym) do
32
32
  return val
33
33
  end
34
34
  end
35
35
 
36
36
  begin
37
- time_series = @output.find{|key, val| key.include?("Time Series")}[1]
37
+ time_series = @output.find{|k, val| k.include?("Time Series")}[1]
38
38
  rescue StandardError => e
39
39
  raise Alphavantage::Error.new message: "No Time Series found: #{e.message}",
40
40
  data: @output
@@ -42,14 +42,14 @@ module Alphavantage
42
42
 
43
43
  series = {}
44
44
  convert_key = {}
45
- time_series.values[0].keys.each do |key|
46
- key_sym = key.downcase.gsub(/[0-9.]/, "").lstrip.gsub(" ", "_").to_sym
45
+ time_series.values[0].keys.each do |k|
46
+ key_sym = k.downcase.gsub(/[0-9.]/, "").lstrip.gsub(" ", "_").to_sym
47
47
  series[key_sym] = []
48
- convert_key[key] = key_sym
48
+ convert_key[k] = key_sym
49
49
  end
50
50
  time_series.each do |time, ts_hash|
51
- ts_hash.each do |key, value|
52
- series[convert_key[key]] << [time, value]
51
+ ts_hash.each do |k, value|
52
+ series[convert_key[k]] << [time, value]
53
53
  end
54
54
  end
55
55
  series.keys.each do |key_sym|
@@ -22,7 +22,7 @@ describe Alphavantage::Crypto do
22
22
  bool << "error"
23
23
  end
24
24
  stock.datatype = "csv"
25
- bool <<stock.datatype
25
+ bool << stock.datatype
26
26
  stock.datatype = "json"
27
27
  expect(bool).to eq ["json", "error", "csv"]
28
28
  end
@@ -32,5 +32,11 @@ describe Alphavantage::Crypto do
32
32
  timeseries = stock.timeseries
33
33
  expect(timeseries.class).to eq Alphavantage::Crypto_Timeseries
34
34
  end
35
+
36
+ it "can check its rating" do
37
+ stock = @client.crypto symbol: "BTC", market: "DKK"
38
+ rating = stock.rating
39
+ expect(rating.symbol).to eq "BTC"
40
+ end
35
41
  end
36
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alphavantagerb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-07 00:00:00.000000000 Z
11
+ date: 2020-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty