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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ebfc73b1396d857b582c9e4d60930100280e2747d96b2dd7907e50a98adf8791
4
- data.tar.gz: f463f4821055e3fd25e406e7c01f49da4221516b2fa3f3c1e64b8951667b003f
3
+ metadata.gz: e39fd00a6b032314a03d25e27caee203aa1c284fd7a917d3b93c3b08f5b0bcb3
4
+ data.tar.gz: db3d0b30bf93201ef13d81a7dee6e36d879533743a0787b0778b05c3756d6fad
5
5
  SHA512:
6
- metadata.gz: 720606af099252a69d7b2bd69fa5a33cabe683fc4caf3893684868b3e0c6e1a2b6fbee17be674cc35064f46d0d794fc25597b2ee612f9b789a6a876e81b9941a
7
- data.tar.gz: 373348b731c160a6659c6aac39b3600072e669276ed3d0475a844ce23da846bd2fe726c702fc84b24b70eb9c36017f534cdf7fa0ab62ff7f6e359c61e9354964
6
+ metadata.gz: fa67956856b743c75f887e6b6a28b63b4ff616da64867d9db55d268724bff3efe5a0724d1d2aca55384fa9419e7162a28d52e17e6d31dacf265d32860d7f0b28
7
+ data.tar.gz: 03a1da6dd9506884c701bde6f5a98adf6de4df8de35ca6b438528a0c659216f3bc5e6a625891aca804356582637a747fea47ff34059270b1e49eee248481506e
data/README.md CHANGED
@@ -1,32 +1,31 @@
1
- # Stocks
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 'stocks' ruby gem:
7
+ To install the 'algonquin_stocks' ruby gem:
8
8
 
9
- `gem install stocks`
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 "stocks"`, '~> 1.0.0'
16
-
15
+ `gem "algonquin_stocks", "~> 1.5.0"`
17
16
 
18
17
  ## Initialization
19
18
 
20
- To initialize Stocks with a valid API_KEY:
19
+ To initialize AlgonquinStocks with a valid API_KEY:
21
20
 
22
- `Stocks::Stock.new(api_key: YOUR_API_KEY)`
21
+ `AlgonquinStocks::StockClient.new YOUR_API_KEY`
23
22
 
24
23
 
25
24
  ## Usage
26
25
 
27
- ### Stocks::StockClient.quote(symbol)
26
+ ### AlgonquinStocks::StockClient#quote(symbol)
28
27
 
29
- Quote is the primary method, returning a Stocks::Stock instance including the following attributes:
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
- ### Stocks::StockClient.data(symbol)
42
+ ### AlgonquinStocks::StockClient#data(symbol)
44
43
 
45
- Data returns a hash representation of JSON the data.
44
+ Data returns a hash representation of the JSON data.
46
45
 
47
46
 
48
- ### Stocks::Stock.new(json)
47
+ ### AlgonquinStocks::Stock.new(json)
49
48
 
50
- Stock.new(json) initializes a new Stocks::Stock instance with the given JSON data.
49
+ Stock.new(json) initializes a new AlgonquinStocks::Stock instance with the given JSON data.
51
50
 
52
- ### Stocks::Stock#update(json)
51
+ ### AlgonquinStocks::Stock#update(json)
53
52
 
54
- Update updates the Stocks::Stock instance with the given JSON data.
53
+ Update updates the AlgonquinStocks::Stock instance with the given JSON data.
55
54
 
56
- ### Stocks::Stock#to_s
55
+ ### AlgonquinStocks::Stock#to_s
57
56
 
58
- to_s returns a string representation of the Stocks::Stock instance.
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 Stocks
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 [Stocks::StockClient] The stock client object.
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
- # => Stocks::StockClient#initialize
13
+ # => AlgonquinStocks::StockClient#initialize
16
14
  #
17
15
  # @param api_key [String] The API key for Alpha Vantage.
18
- # @return [Stocks::StockClient] The stock client object.
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
- # => Stocks::StockClient#data
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(url: url, method: :get, verify_ssl: false) do |response|
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(response.body)
31
+ JSON.parse response.body
34
32
  end
35
33
  end
36
34
 
37
- # => Stocks::StockClient#quote
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 [Stocks::Stock] The stock object.
39
+ # @return [AlgonquinStocks::Stock] The stock object.
42
40
  def quote(symbol, function=FUNCTION)
43
- json = data(symbol, function)
44
- Stock.new(json['Global Quote'])
41
+ json = data symbol, function
42
+ Stock.new json['Global Quote']
45
43
  end
46
44
  end
47
45
  end
@@ -0,0 +1,5 @@
1
+ # => AlgonquinStocks::VERSION
2
+ module AlgonquinStocks
3
+ VERSION = '1.5.0'
4
+ end
5
+
@@ -0,0 +1,3 @@
1
+ require_relative "algonquin_stocks/version"
2
+ require_relative "algonquin_stocks/stock"
3
+ require_relative "algonquin_stocks/stock_client"
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.1.0
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 managing stocks
13
+ description: A gem for retrieving stock information
14
14
  email:
15
- - grobnia@algonquincollege.com
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/stocks.rb
22
- - lib/stocks/stock.rb
23
- - lib/stocks/stock_client.rb
24
- - lib/stocks/version.rb
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
@@ -1,5 +0,0 @@
1
- # => Stocks::VERSION
2
- module Stocks
3
- VERSION = '1.1.0'
4
- end
5
-
data/lib/stocks.rb DELETED
@@ -1,3 +0,0 @@
1
- require_relative "stocks/version"
2
- require_relative "stocks/stock"
3
- require_relative "stocks/stock_client"