algonquin_stocks 1.1.0 → 1.5.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 +4 -4
- data/README.md +16 -17
- data/lib/algonquin_stocks/stock.rb +54 -0
- data/lib/{stocks → algonquin_stocks}/stock_client.rb +12 -14
- data/lib/algonquin_stocks/version.rb +5 -0
- data/lib/algonquin_stocks.rb +3 -0
- metadata +7 -7
- data/lib/stocks/stock.rb +0 -38
- data/lib/stocks/version.rb +0 -5
- data/lib/stocks.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e39fd00a6b032314a03d25e27caee203aa1c284fd7a917d3b93c3b08f5b0bcb3
|
4
|
+
data.tar.gz: db3d0b30bf93201ef13d81a7dee6e36d879533743a0787b0778b05c3756d6fad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa67956856b743c75f887e6b6a28b63b4ff616da64867d9db55d268724bff3efe5a0724d1d2aca55384fa9419e7162a28d52e17e6d31dacf265d32860d7f0b28
|
7
|
+
data.tar.gz: 03a1da6dd9506884c701bde6f5a98adf6de4df8de35ca6b438528a0c659216f3bc5e6a625891aca804356582637a747fea47ff34059270b1e49eee248481506e
|
data/README.md
CHANGED
@@ -1,32 +1,31 @@
|
|
1
|
-
#
|
1
|
+
# AlgonquinStocks
|
2
2
|
|
3
3
|
Stock data provided by [Alpha Vantage](https://www.alphavantage.co/). An [API KEY](https://www.alphavantage.co/support/#api-key) is required.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
To install the '
|
7
|
+
To install the 'algonquin_stocks' ruby gem:
|
8
8
|
|
9
|
-
`gem install
|
9
|
+
`gem install algonquin_stocks`
|
10
10
|
|
11
11
|
## Gem Configuration
|
12
12
|
|
13
13
|
To use the gem in your Rails Application, include it in your Gemfile:
|
14
14
|
|
15
|
-
`gem "
|
16
|
-
|
15
|
+
`gem "algonquin_stocks", "~> 1.5.0"`
|
17
16
|
|
18
17
|
## Initialization
|
19
18
|
|
20
|
-
To initialize
|
19
|
+
To initialize AlgonquinStocks with a valid API_KEY:
|
21
20
|
|
22
|
-
`
|
21
|
+
`AlgonquinStocks::StockClient.new YOUR_API_KEY`
|
23
22
|
|
24
23
|
|
25
24
|
## Usage
|
26
25
|
|
27
|
-
###
|
26
|
+
### AlgonquinStocks::StockClient#quote(symbol)
|
28
27
|
|
29
|
-
Quote is the primary method, returning a
|
28
|
+
Quote is the primary method, returning a AlgonquinStocks::Stock instance including the following attributes:
|
30
29
|
|
31
30
|
- symbol
|
32
31
|
- open
|
@@ -40,19 +39,19 @@ Quote is the primary method, returning a Stocks::Stock instance including the fo
|
|
40
39
|
- percent
|
41
40
|
|
42
41
|
|
43
|
-
###
|
42
|
+
### AlgonquinStocks::StockClient#data(symbol)
|
44
43
|
|
45
|
-
Data returns a hash representation of JSON
|
44
|
+
Data returns a hash representation of the JSON data.
|
46
45
|
|
47
46
|
|
48
|
-
###
|
47
|
+
### AlgonquinStocks::Stock.new(json)
|
49
48
|
|
50
|
-
Stock.new(json) initializes a new
|
49
|
+
Stock.new(json) initializes a new AlgonquinStocks::Stock instance with the given JSON data.
|
51
50
|
|
52
|
-
###
|
51
|
+
### AlgonquinStocks::Stock#update(json)
|
53
52
|
|
54
|
-
Update updates the
|
53
|
+
Update updates the AlgonquinStocks::Stock instance with the given JSON data.
|
55
54
|
|
56
|
-
###
|
55
|
+
### AlgonquinStocks::Stock#to_s
|
57
56
|
|
58
|
-
to_s returns a string representation of the
|
57
|
+
to_s returns a string representation of the AlgonquinStocks::Stock instance.
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
module AlgonquinStocks
|
4
|
+
# => AlgonquinStocks::Stock
|
5
|
+
#
|
6
|
+
# @param json [Hash] The JSON response from Alpha Vantage.
|
7
|
+
# @return [AlgonquinStocks::Stock] The stock object.
|
8
|
+
class Stock
|
9
|
+
attr_reader :symbol, :open, :high, :low, :price, :volume, :date, :close, :change, :percent
|
10
|
+
|
11
|
+
# => AlgonquinStocks::Stock#initialize
|
12
|
+
#
|
13
|
+
# @param json [Hash] The JSON response from Alpha Vantage.
|
14
|
+
# @return [AlgonquinStocks::Stock] The stock object.
|
15
|
+
def initialize(json)
|
16
|
+
update json
|
17
|
+
end
|
18
|
+
|
19
|
+
SYMBOL = '01. symbol'
|
20
|
+
OPEN = '02. open'
|
21
|
+
HIGH = '03. high'
|
22
|
+
LOW = '04. low'
|
23
|
+
PRICE = '05. price'
|
24
|
+
VOLUME = '06. volume'
|
25
|
+
DATE = '07. latest trading day'
|
26
|
+
CLOSE = '08. previous close'
|
27
|
+
CHANGE = '09. change'
|
28
|
+
PERCENT = '10. change percent'
|
29
|
+
|
30
|
+
# => AlgonquinStocks::Stock#update
|
31
|
+
#
|
32
|
+
# @param json [Hash] The JSON response from Alpha Vantage.
|
33
|
+
# @return [AlgonquinStocks::Stock] The stock object.
|
34
|
+
def update(json)
|
35
|
+
@symbol = json[SYMBOL]
|
36
|
+
@open = json[OPEN].to_f
|
37
|
+
@high = json[HIGH].to_f
|
38
|
+
@low = json[LOW].to_f
|
39
|
+
@price = json[PRICE].to_f
|
40
|
+
@volume = json[VOLUME].to_i
|
41
|
+
@date = Date.parse json[DATE]
|
42
|
+
@close = json[CLOSE].to_f
|
43
|
+
@change = json[CHANGE].to_f
|
44
|
+
@percent = json[PERCENT].to_f
|
45
|
+
end
|
46
|
+
|
47
|
+
# => AlgonquinStocks::Stock#to_s
|
48
|
+
#
|
49
|
+
# @return [String] The stock object as a string.
|
50
|
+
def to_s
|
51
|
+
"#{symbol}: #{price} (#{change}, #{percent}) #{date}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -1,47 +1,45 @@
|
|
1
1
|
require 'rest-client'
|
2
2
|
require 'json'
|
3
|
-
require 'date'
|
4
3
|
|
5
|
-
module
|
6
|
-
|
7
|
-
# => Stocks::StockClient
|
4
|
+
module AlgonquinStocks
|
5
|
+
# => AlgonquinStocks::StockClient
|
8
6
|
#
|
9
7
|
# @param api_key [String] The API key for Alpha Vantage.
|
10
|
-
# @return [
|
8
|
+
# @return [AlgonquinStocks::StockClient] The stock client object.
|
11
9
|
class StockClient
|
12
10
|
URL_BASE = "https://www.alphavantage.co/query"
|
13
11
|
FUNCTION = "GLOBAL_QUOTE"
|
14
12
|
|
15
|
-
# =>
|
13
|
+
# => AlgonquinStocks::StockClient#initialize
|
16
14
|
#
|
17
15
|
# @param api_key [String] The API key for Alpha Vantage.
|
18
|
-
# @return [
|
16
|
+
# @return [AlgonquinStocks::StockClient] The stock client object.
|
19
17
|
def initialize(api_key)
|
20
18
|
@api_key = api_key
|
21
19
|
@url = "#{URL_BASE}?apikey=#{@api_key}"
|
22
20
|
end
|
23
21
|
|
24
|
-
# =>
|
22
|
+
# => AlgonquinStocks::StockClient#data
|
25
23
|
#
|
26
24
|
# @param symbol [String] The symbol of the stock.
|
27
25
|
# @param function [String] The function to use.
|
28
26
|
# @return [Hash] The JSON response from Alpha Vantage.
|
29
27
|
def data(symbol, function=FUNCTION)
|
30
28
|
url = "#{@url}&function=#{function}&symbol=#{symbol}"
|
31
|
-
RestClient::Request.execute
|
29
|
+
RestClient::Request.execute url: url, method: :get, verify_ssl: false do |response|
|
32
30
|
raise response.body unless response.code == 200
|
33
|
-
JSON.parse
|
31
|
+
JSON.parse response.body
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
37
|
-
# =>
|
35
|
+
# => AlgonquinStocks::StockClient#quote
|
38
36
|
#
|
39
37
|
# @param symbol [String] The symbol of the stock.
|
40
38
|
# @param function [String] The function to use.
|
41
|
-
# @return [
|
39
|
+
# @return [AlgonquinStocks::Stock] The stock object.
|
42
40
|
def quote(symbol, function=FUNCTION)
|
43
|
-
json = data
|
44
|
-
Stock.new
|
41
|
+
json = data symbol, function
|
42
|
+
Stock.new json['Global Quote']
|
45
43
|
end
|
46
44
|
end
|
47
45
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: algonquin_stocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrei Grobnic
|
@@ -10,18 +10,18 @@ bindir: exe
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2025-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: A gem for
|
13
|
+
description: A gem for retrieving stock information
|
14
14
|
email:
|
15
|
-
-
|
15
|
+
- andrey.grobnik@gmail.com
|
16
16
|
executables: []
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- README.md
|
21
|
-
- lib/
|
22
|
-
- lib/
|
23
|
-
- lib/
|
24
|
-
- lib/
|
21
|
+
- lib/algonquin_stocks.rb
|
22
|
+
- lib/algonquin_stocks/stock.rb
|
23
|
+
- lib/algonquin_stocks/stock_client.rb
|
24
|
+
- lib/algonquin_stocks/version.rb
|
25
25
|
homepage: https://github.com/andreigrob/stocks
|
26
26
|
licenses:
|
27
27
|
- GPL-2.0
|
data/lib/stocks/stock.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
module Stocks
|
2
|
-
|
3
|
-
# => Stocks::Stock
|
4
|
-
#
|
5
|
-
# @param json [Hash] The JSON response from Alpha Vantage.
|
6
|
-
# @return [Stocks::Stock] The stock object.
|
7
|
-
class Stock
|
8
|
-
attr_reader :symbol, :open, :high, :low, :price, :volume, :date, :close, :change, :percent
|
9
|
-
|
10
|
-
def initialize(json)
|
11
|
-
update(json)
|
12
|
-
end
|
13
|
-
|
14
|
-
# => Stocks::Stock#update
|
15
|
-
#
|
16
|
-
# @param json [Hash] The JSON response from Alpha Vantage.
|
17
|
-
# @return [Stocks::Stock] The stock object.
|
18
|
-
def update(json)
|
19
|
-
@symbol = json['01. symbol']
|
20
|
-
@open = json['02. open'].to_f
|
21
|
-
@high = json['03. high'].to_f
|
22
|
-
@low = json['04. low'].to_f
|
23
|
-
@price = json['05. price'].to_f
|
24
|
-
@volume = json['06. volume'].to_i
|
25
|
-
@date = Date.parse(json['07. latest trading day'])
|
26
|
-
@close = json['08. previous close'].to_f
|
27
|
-
@change = json['09. change'].to_f
|
28
|
-
@percent = json['10. change percent'].to_f
|
29
|
-
end
|
30
|
-
|
31
|
-
# => Stocks::Stock#to_s
|
32
|
-
#
|
33
|
-
# @return [String] The stock object as a string.
|
34
|
-
def to_s
|
35
|
-
"#{symbol}: #{price} (#{change}, #{percent}) #{date}"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/lib/stocks/version.rb
DELETED
data/lib/stocks.rb
DELETED