alphavantagerb 1.3.3 → 1.4.0

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: 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