barchart 0.0.1
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 +7 -0
- data/.gitignore +36 -0
- data/.rspec +3 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +86 -0
- data/README.md +65 -0
- data/Rakefile +6 -0
- data/barchart.gemspec +30 -0
- data/bin/console +11 -0
- data/bin/setup +7 -0
- data/console +4 -0
- data/lib/barchart.rb +15 -0
- data/lib/barchart/configuration.rb +26 -0
- data/lib/barchart/request.rb +66 -0
- data/lib/barchart/resources/history.rb +24 -0
- data/lib/barchart/resources/quote.rb +18 -0
- data/lib/barchart/resources/resource.rb +30 -0
- data/lib/barchart/version.rb +3 -0
- data/spec/barchart_spec.rb +11 -0
- data/spec/spec_helper.rb +2 -0
- metadata +180 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ff46e2ff07f00e03d59fd6db110a98d491dc3b1c
|
4
|
+
data.tar.gz: 75e61c0258d4c7d40015c3cc127c70c89811343e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fc88e7837821b8ac0da379700e50cdd8cd92426d1bd21eb36a8129694e24109d4cdd36fade051e4bd14245e5082f84e8fb44be66bef05d9631a95cc5c23041e8
|
7
|
+
data.tar.gz: cb3ce3baad7c33b7e3273dbb7cc685c85e67163b39d2be7aeb84161b6b23a8884b7e56930d32c0011577c4b1a02186dc89c057f372fc14c8d516024396125691
|
data/.gitignore
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
/.config
|
4
|
+
/coverage/
|
5
|
+
/InstalledFiles
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/spec/examples.txt
|
9
|
+
/test/tmp/
|
10
|
+
/test/version_tmp/
|
11
|
+
/tmp/
|
12
|
+
|
13
|
+
## Specific to RubyMotion:
|
14
|
+
.dat*
|
15
|
+
.repl_history
|
16
|
+
build/
|
17
|
+
|
18
|
+
## Documentation cache and generated files:
|
19
|
+
/.yardoc/
|
20
|
+
/_yardoc/
|
21
|
+
/doc/
|
22
|
+
/rdoc/
|
23
|
+
|
24
|
+
## Environment normalization:
|
25
|
+
/.bundle/
|
26
|
+
/vendor/bundle
|
27
|
+
/lib/bundler/man/
|
28
|
+
|
29
|
+
# for a library or gem, you might want to ignore these files since the code is
|
30
|
+
# intended to run in multiple environments; otherwise, check them in:
|
31
|
+
# Gemfile.lock
|
32
|
+
# .ruby-version
|
33
|
+
# .ruby-gemset
|
34
|
+
|
35
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
36
|
+
.rvmrc
|
data/.rspec
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.3
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
barchart (0.0.1)
|
5
|
+
activesupport
|
6
|
+
recursive-open-struct
|
7
|
+
rest-client
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
activesupport (4.2.5)
|
13
|
+
i18n (~> 0.7)
|
14
|
+
json (~> 1.7, >= 1.7.7)
|
15
|
+
minitest (~> 5.1)
|
16
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
17
|
+
tzinfo (~> 1.1)
|
18
|
+
addressable (2.4.0)
|
19
|
+
coderay (1.1.0)
|
20
|
+
crack (0.4.3)
|
21
|
+
safe_yaml (~> 1.0.0)
|
22
|
+
diff-lcs (1.2.5)
|
23
|
+
domain_name (0.5.25)
|
24
|
+
unf (>= 0.0.5, < 1.0.0)
|
25
|
+
hashdiff (0.2.3)
|
26
|
+
http-cookie (1.0.2)
|
27
|
+
domain_name (~> 0.5)
|
28
|
+
i18n (0.7.0)
|
29
|
+
json (1.8.3)
|
30
|
+
method_source (0.8.2)
|
31
|
+
mime-types (2.99)
|
32
|
+
minitest (5.8.4)
|
33
|
+
netrc (0.11.0)
|
34
|
+
pry (0.10.3)
|
35
|
+
coderay (~> 1.1.0)
|
36
|
+
method_source (~> 0.8.1)
|
37
|
+
slop (~> 3.4)
|
38
|
+
recursive-open-struct (1.0.1)
|
39
|
+
rest-client (1.8.0)
|
40
|
+
http-cookie (>= 1.0.2, < 2.0)
|
41
|
+
mime-types (>= 1.16, < 3.0)
|
42
|
+
netrc (~> 0.7)
|
43
|
+
rspec (3.4.0)
|
44
|
+
rspec-core (~> 3.4.0)
|
45
|
+
rspec-expectations (~> 3.4.0)
|
46
|
+
rspec-mocks (~> 3.4.0)
|
47
|
+
rspec-collection_matchers (1.1.2)
|
48
|
+
rspec-expectations (>= 2.99.0.beta1)
|
49
|
+
rspec-core (3.4.1)
|
50
|
+
rspec-support (~> 3.4.0)
|
51
|
+
rspec-expectations (3.4.0)
|
52
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
53
|
+
rspec-support (~> 3.4.0)
|
54
|
+
rspec-its (1.2.0)
|
55
|
+
rspec-core (>= 3.0.0)
|
56
|
+
rspec-expectations (>= 3.0.0)
|
57
|
+
rspec-mocks (3.4.1)
|
58
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
59
|
+
rspec-support (~> 3.4.0)
|
60
|
+
rspec-support (3.4.1)
|
61
|
+
safe_yaml (1.0.4)
|
62
|
+
slop (3.6.0)
|
63
|
+
thread_safe (0.3.5)
|
64
|
+
tzinfo (1.2.2)
|
65
|
+
thread_safe (~> 0.1)
|
66
|
+
unf (0.1.4)
|
67
|
+
unf_ext
|
68
|
+
unf_ext (0.0.7.1)
|
69
|
+
webmock (1.22.6)
|
70
|
+
addressable (>= 2.3.6)
|
71
|
+
crack (>= 0.3.2)
|
72
|
+
hashdiff
|
73
|
+
|
74
|
+
PLATFORMS
|
75
|
+
ruby
|
76
|
+
|
77
|
+
DEPENDENCIES
|
78
|
+
barchart!
|
79
|
+
pry
|
80
|
+
rspec
|
81
|
+
rspec-collection_matchers
|
82
|
+
rspec-its
|
83
|
+
webmock
|
84
|
+
|
85
|
+
BUNDLED WITH
|
86
|
+
1.10.6
|
data/README.md
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# barchart
|
2
|
+
|
3
|
+
Ruby client library for querying some of [Barchart OnDemand's](http://www.barchartondemand.com/) APIs.
|
4
|
+
|
5
|
+
They have excellent documentation of their APIs [here](http://www.barchartondemand.com/api.php).
|
6
|
+
|
7
|
+
# Configuration
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
Barchart.configure do |config|
|
11
|
+
config.api_key = 'your_api_key'
|
12
|
+
config.api_base_url = 'http://ondemand.websol.barchart.com'
|
13
|
+
end
|
14
|
+
```
|
15
|
+
# Usage
|
16
|
+
|
17
|
+
## Barchart::Quote
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
Barchart::Quote.get!('AAPL')
|
21
|
+
```
|
22
|
+
and the output...
|
23
|
+
```ruby
|
24
|
+
=> #<Barchart::Quote symbol="AAPL", name="Apple Inc", day_code="L", server_timestamp=nil, mode="r", last_price=101.42, trade_timestamp="2016-01-22T00:00:00-06:00", net_change=5.12, percent_change=5.32, bid=0, ask=0, unit_code="2", open=98.63, high=101.46, low=98.37, close=101.42, num_trades=274569, dollar_volume=5844876768.2, flag="s", volume=65800400, previous_volume=52161398>
|
25
|
+
```
|
26
|
+
|
27
|
+
You can also provide an array of symbols if you like:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
Barchart::Quote.get!(['AAPL', 'FB', 'GOOG'])
|
31
|
+
```
|
32
|
+
|
33
|
+
and you'll get an array of `Barchart::Quote`
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
=> [#<Barchart::Quote symbol="AAPL", name="Apple Inc", day_code="L", server_timestamp=nil, mode="r", last_price=101.42, trade_timestamp="2016-01-22T00:00:00-06:00", net_change=5.12, percent_change=5.32, bid=0, ask=0, unit_code="2", open=98.63, high=101.46, low=98.37, close=101.42, num_trades=274569, dollar_volume=5844876768.2, flag="s", volume=65800400, previous_volume=52161398>,
|
37
|
+
#<Barchart::Quote symbol="FB", name="Facebook Inc", day_code="L", server_timestamp=nil, mode="r", last_price=97.94, trade_timestamp="2016-01-22T00:00:00-06:00", net_change=3.78, percent_change=4.01, bid=0, ask=0, unit_code="2", open=96.41, high=98.07, low=95.49, close=97.94, num_trades=127919, dollar_volume=2664720705.58, flag="s", volume=30495300, previous_volume=30518898>,
|
38
|
+
#<Barchart::Quote symbol="GOOG", name="Alphabet Inc Class C", day_code="L", server_timestamp=nil, mode="r", last_price=725.25, trade_timestamp="2016-01-22T00:00:00-06:00", net_change=18.66, percent_change=2.64, bid=0, ask=0, unit_code="2", open=723.6, high=728.13, low=720.12, close=725.25, num_trades=9735, dollar_volume=982119017.648, flag="s", volume=2011700, previous_volume=2412200>]
|
39
|
+
```
|
40
|
+
|
41
|
+
## Barchart::History
|
42
|
+
|
43
|
+
Returns historical quotes for equities, indices, and forex. Specifying `endDate` is optional, defaults to `nil`.
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
Barchart::History.get!('AAPL', 1.week.ago)
|
47
|
+
```
|
48
|
+
|
49
|
+
and you'll get the daily history, an array of `Barchart::History` objects
|
50
|
+
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
=> [#<Barchart::History symbol="AAPL", timestamp="2016-01-19T00:00:00-05:00", trading_day="2016-01-19", open=98.41, high=98.65, low=95.5, close=96.66, volume=53087700, open_interest=nil>,
|
54
|
+
#<Barchart::History symbol="AAPL", timestamp="2016-01-20T00:00:00-05:00", trading_day="2016-01-20", open=95.1, high=98.19, low=93.42, close=96.79, volume=72334400, open_interest=nil>,
|
55
|
+
#<Barchart::History symbol="AAPL", timestamp="2016-01-21T00:00:00-05:00", trading_day="2016-01-21", open=97.06, high=97.88, low=94.94, close=96.3, volume=52161400, open_interest=nil>,
|
56
|
+
#<Barchart::History symbol="AAPL", timestamp="2016-01-22T00:00:00-05:00", trading_day="2016-01-22", open=98.63, high=101.46, low=98.37, close=101.42, volume=65800400, open_interest=nil>]
|
57
|
+
```
|
58
|
+
|
59
|
+
# Interactive Console
|
60
|
+
|
61
|
+
This is useful if you just want to try out the package, you'll stil need to initialize Barchart with some valid configuration
|
62
|
+
|
63
|
+
```bash
|
64
|
+
bin/console
|
65
|
+
```
|
data/Rakefile
ADDED
data/barchart.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
require "barchart/version"
|
6
|
+
|
7
|
+
Gem::Specification.new do |gem|
|
8
|
+
gem.name = "barchart"
|
9
|
+
gem.version = Barchart::VERSION
|
10
|
+
gem.authors = ["Karney Li"]
|
11
|
+
gem.email = ["karney@wealthsimple.com"]
|
12
|
+
gem.description = %q{}
|
13
|
+
gem.summary = %q{}
|
14
|
+
gem.homepage = ""
|
15
|
+
|
16
|
+
gem.files = `git ls-files`.split($/)
|
17
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
|
+
gem.require_paths = ["lib"]
|
20
|
+
|
21
|
+
gem.add_dependency "rest-client"
|
22
|
+
gem.add_dependency "activesupport"
|
23
|
+
gem.add_dependency "recursive-open-struct"
|
24
|
+
|
25
|
+
gem.add_development_dependency "rspec"
|
26
|
+
gem.add_development_dependency "rspec-its"
|
27
|
+
gem.add_development_dependency "rspec-collection_matchers"
|
28
|
+
gem.add_development_dependency "webmock"
|
29
|
+
gem.add_development_dependency "pry"
|
30
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "barchart"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
data/bin/setup
ADDED
data/console
ADDED
data/lib/barchart.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'active_support'
|
4
|
+
require 'active_support/core_ext'
|
5
|
+
require 'recursive-open-struct'
|
6
|
+
|
7
|
+
require 'barchart/version'
|
8
|
+
require 'barchart/configuration'
|
9
|
+
require 'barchart/request'
|
10
|
+
require 'barchart/resources/resource'
|
11
|
+
require 'barchart/resources/quote'
|
12
|
+
require 'barchart/resources/history'
|
13
|
+
|
14
|
+
module Barchart
|
15
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Barchart
|
2
|
+
class << self
|
3
|
+
attr_writer :configuration
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.configuration
|
7
|
+
@configuration ||= Configuration.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.configure
|
11
|
+
yield(configuration)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.reset_configuration!
|
15
|
+
@configuration = Configuration.new
|
16
|
+
end
|
17
|
+
|
18
|
+
class Configuration
|
19
|
+
ATTRIBUTES = [:api_key, :api_base_url]
|
20
|
+
attr_accessor *ATTRIBUTES
|
21
|
+
|
22
|
+
def validate!
|
23
|
+
raise "Invalid or missing configuration" unless ATTRIBUTES.all? { |attribute| send(attribute).present? }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Barchart
|
2
|
+
class Request
|
3
|
+
attr_reader :method, :path, :body
|
4
|
+
|
5
|
+
def initialize(method:, path:, body: nil)
|
6
|
+
Barchart.configuration.validate!
|
7
|
+
@method = method
|
8
|
+
@path = path
|
9
|
+
@body = body
|
10
|
+
end
|
11
|
+
|
12
|
+
# Define class methods for more succinct requests
|
13
|
+
%i(get post put delete head patch).each do |http_method|
|
14
|
+
define_singleton_method(http_method) do |path, body=nil|
|
15
|
+
Request.new(method: http_method, path: path, body: body).execute
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def execute
|
20
|
+
p url
|
21
|
+
response = RestClient::Request.new({
|
22
|
+
url: url,
|
23
|
+
method: method,
|
24
|
+
headers: {
|
25
|
+
'Content-Type': 'application/json',
|
26
|
+
'Date': Time.now.utc.httpdate,
|
27
|
+
},
|
28
|
+
payload: body_to_json,
|
29
|
+
}).execute
|
30
|
+
|
31
|
+
convert_hash_keys(JSON.parse(response))
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def url
|
37
|
+
base_url = Barchart.configuration.api_base_url
|
38
|
+
base_url += "/" unless base_url.end_with?("/")
|
39
|
+
base_url += path.sub(%r{^/}, '')
|
40
|
+
|
41
|
+
base_url += path =~ /\?/ ? '&' : '?'
|
42
|
+
base_url += "apikey=#{Barchart.configuration.api_key}"
|
43
|
+
base_url
|
44
|
+
end
|
45
|
+
|
46
|
+
def underscore_key(k)
|
47
|
+
k.to_s.underscore.to_sym
|
48
|
+
end
|
49
|
+
|
50
|
+
def convert_hash_keys(value)
|
51
|
+
case value
|
52
|
+
when Array then value.map { |v| convert_hash_keys(v) }
|
53
|
+
when Hash then Hash[value.map { |k, v| [underscore_key(k), convert_hash_keys(v)] }]
|
54
|
+
else value
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def body_to_json
|
59
|
+
if body
|
60
|
+
body.is_a?(String) ? body : body.to_json
|
61
|
+
else
|
62
|
+
nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Barchart
|
2
|
+
# http://www.barchartondemand.com/api/getHistory
|
3
|
+
|
4
|
+
# The getHistory API is used to request historical time series data on stocks,
|
5
|
+
# indices, mutual funds, ETFs, futures, indices or forex pairs.
|
6
|
+
# Historical data is available as tick, minute or end-of-day data.
|
7
|
+
|
8
|
+
|
9
|
+
class History < Resource
|
10
|
+
# see the API documentation for values for type
|
11
|
+
def self.get!(symbol, start_date=Date.today, end_date=nil)
|
12
|
+
|
13
|
+
start_date_query = "startDate=#{start_date.strftime('%Y%m%d')}" if start_date
|
14
|
+
end_date_query = "endDate=#{end_date.strftime('%Y%m%d')}" if end_date
|
15
|
+
symbol_query = "symbol=#{symbol}"
|
16
|
+
type_query = "type=daily"
|
17
|
+
|
18
|
+
params = [symbol_query, type_query, start_date_query, end_date_query].compact.join('&')
|
19
|
+
response = Request.get("/getHistory.json?#{params}")
|
20
|
+
|
21
|
+
response[:results].map { |result| History.new(result) }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Barchart
|
2
|
+
# http://www.barchartondemand.com/api/getQuote
|
3
|
+
class Quote < Resource
|
4
|
+
# mode can be R (realtime), I (delayed), D (end-of-day)
|
5
|
+
def self.get!(symbols, fields=[:bid,:ask], mode='R')
|
6
|
+
fields_query = fields.join(',')
|
7
|
+
|
8
|
+
symbols_query = symbols
|
9
|
+
symbols_query = symbols.join(',') if symbols.is_a?(Array)
|
10
|
+
|
11
|
+
response = Request.get("/getQuote.json?symbols=#{symbols_query}&fields=#{fields_query}")
|
12
|
+
|
13
|
+
return Quote.new(response[:results].first) if symbols.is_a?(String)
|
14
|
+
response[:results].map { |result| Quote.new(result) }
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Barchart
|
2
|
+
class Resource
|
3
|
+
|
4
|
+
def self.initialize_from_array_response(resource_class, response)
|
5
|
+
JSON.parse(response.body).map do |resource_json|
|
6
|
+
resource_class.new(resource_json)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
attr_reader :response_json, :struct
|
11
|
+
|
12
|
+
def initialize(response)
|
13
|
+
@response_json = response
|
14
|
+
@struct = RecursiveOpenStruct.new(@response_json, {recurse_over_arrays: true})
|
15
|
+
end
|
16
|
+
|
17
|
+
def as_json(options = {})
|
18
|
+
@response_json
|
19
|
+
end
|
20
|
+
|
21
|
+
def method_missing(name, *args)
|
22
|
+
@struct[name.to_sym]
|
23
|
+
end
|
24
|
+
|
25
|
+
def inspect
|
26
|
+
@struct.inspect.gsub(/#<RecursiveOpenStruct/,"#<#{self.class.name}")
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: barchart
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Karney Li
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-01-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: recursive-open-struct
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-its
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec-collection_matchers
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webmock
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: ''
|
126
|
+
email:
|
127
|
+
- karney@wealthsimple.com
|
128
|
+
executables:
|
129
|
+
- console
|
130
|
+
- setup
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files: []
|
133
|
+
files:
|
134
|
+
- ".gitignore"
|
135
|
+
- ".rspec"
|
136
|
+
- ".ruby-version"
|
137
|
+
- ".travis.yml"
|
138
|
+
- Gemfile
|
139
|
+
- Gemfile.lock
|
140
|
+
- README.md
|
141
|
+
- Rakefile
|
142
|
+
- barchart.gemspec
|
143
|
+
- bin/console
|
144
|
+
- bin/setup
|
145
|
+
- console
|
146
|
+
- lib/barchart.rb
|
147
|
+
- lib/barchart/configuration.rb
|
148
|
+
- lib/barchart/request.rb
|
149
|
+
- lib/barchart/resources/history.rb
|
150
|
+
- lib/barchart/resources/quote.rb
|
151
|
+
- lib/barchart/resources/resource.rb
|
152
|
+
- lib/barchart/version.rb
|
153
|
+
- spec/barchart_spec.rb
|
154
|
+
- spec/spec_helper.rb
|
155
|
+
homepage: ''
|
156
|
+
licenses: []
|
157
|
+
metadata: {}
|
158
|
+
post_install_message:
|
159
|
+
rdoc_options: []
|
160
|
+
require_paths:
|
161
|
+
- lib
|
162
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
requirements: []
|
173
|
+
rubyforge_project:
|
174
|
+
rubygems_version: 2.4.5.1
|
175
|
+
signing_key:
|
176
|
+
specification_version: 4
|
177
|
+
summary: ''
|
178
|
+
test_files:
|
179
|
+
- spec/barchart_spec.rb
|
180
|
+
- spec/spec_helper.rb
|