iex-ruby-client 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +4 -0
- data/.rubocop_todo.yml +17 -18
- data/CHANGELOG.md +5 -0
- data/README.md +16 -0
- data/UPGRADING.md +26 -0
- data/iex-ruby-client.gemspec +1 -1
- data/lib/iex/api.rb +4 -3
- data/lib/iex/api/logo.rb +13 -0
- data/lib/iex/errors.rb +1 -0
- data/lib/iex/errors/client_error.rb +12 -0
- data/lib/iex/resources.rb +1 -0
- data/lib/iex/resources/base.rb +13 -0
- data/lib/iex/resources/chart.rb +15 -14
- data/lib/iex/resources/company.rb +6 -4
- data/lib/iex/resources/logo.rb +15 -0
- data/lib/iex/resources/news.rb +7 -5
- data/lib/iex/resources/ohlc.rb +11 -10
- data/lib/iex/resources/price.rb +6 -4
- data/lib/iex/resources/quote.rb +6 -4
- data/lib/iex/version.rb +1 -1
- data/spec/fixtures/iex/chart/bad_option.yml +65 -0
- data/spec/fixtures/iex/logo/msft.yml +67 -0
- data/spec/iex/resources/chart_spec.rb +15 -0
- data/spec/iex/resources/logo_spec.rb +13 -0
- data/spec/iex/resources/ohlc_spec.rb +1 -0
- data/spec/iex/resources/price_spec.rb +1 -0
- data/spec/iex/resources/quote_spec.rb +1 -0
- metadata +14 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 122b8435449269a11df3e45d0c9742f2cc23090d
|
4
|
+
data.tar.gz: d7581662b889893a85d771d79c3bcbbd657b7273
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66c2cf2f5e2df6f46aea535436961d0aac6adf86259d135411f7879ab41db1e750e47275255a27db4b4c37ab187d579e1a69d72dc4d86e19c2ef26b721b5d6ae
|
7
|
+
data.tar.gz: 73611d7582829ef959585c72114d4f1bc135a4afad69b0765b308a00f02fa58516dfc680d4b9e416909ff416d6b31e338b508b302fbc54d6fd7e054b1bbfb138
|
data/.rubocop.yml
CHANGED
data/.rubocop_todo.yml
CHANGED
@@ -1,35 +1,28 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2018-
|
3
|
+
# on 2018-07-27 05:38:15 -0400 using RuboCop version 0.58.2.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
9
|
+
# Offense count: 1
|
10
|
+
Metrics/AbcSize:
|
11
|
+
Max: 16
|
12
|
+
|
13
|
+
# Offense count: 5
|
10
14
|
# Configuration parameters: CountComments, ExcludedMethods.
|
15
|
+
# ExcludedMethods: refine
|
11
16
|
Metrics/BlockLength:
|
12
|
-
Max:
|
13
|
-
|
14
|
-
# Offense count: 41
|
15
|
-
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
16
|
-
# URISchemes: http, https
|
17
|
-
Metrics/LineLength:
|
18
|
-
Max: 221
|
17
|
+
Max: 79
|
19
18
|
|
20
19
|
# Offense count: 1
|
21
20
|
# Configuration parameters: CountComments.
|
22
21
|
Metrics/MethodLength:
|
23
|
-
Max:
|
24
|
-
|
25
|
-
# Offense count: 1
|
26
|
-
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
|
27
|
-
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
|
28
|
-
Naming/FileName:
|
29
|
-
Exclude:
|
30
|
-
- 'lib/iex-ruby-client.rb'
|
22
|
+
Max: 17
|
31
23
|
|
32
24
|
# Offense count: 1
|
25
|
+
# Configuration parameters: AllowedChars.
|
33
26
|
Style/AsciiComments:
|
34
27
|
Exclude:
|
35
28
|
- 'lib/iex/resources/quote.rb'
|
@@ -40,6 +33,12 @@ Style/DateTime:
|
|
40
33
|
- 'lib/iex/resources/news.rb'
|
41
34
|
- 'spec/iex/resources/news_spec.rb'
|
42
35
|
|
43
|
-
# Offense count:
|
36
|
+
# Offense count: 23
|
44
37
|
Style/Documentation:
|
45
38
|
Enabled: false
|
39
|
+
|
40
|
+
# Offense count: 43
|
41
|
+
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
42
|
+
# URISchemes: http, https
|
43
|
+
Metrics/LineLength:
|
44
|
+
Max: 221
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
### 0.4.0 (2018/07/29)
|
2
|
+
|
3
|
+
* [#9](https://github.com/dblock/iex-ruby-client/pull/9): Added `IEX::Errors::ClientError` - [@rodolfobandeira](https://github.com/rodolfobandeira).
|
4
|
+
* [#10](https://github.com/dblock/iex-ruby-client/pull/10): Added `IEX::Resources::Logo#get` - [@rodolfobandeira](https://github.com/rodolfobandeira).
|
5
|
+
|
1
6
|
### 0.3.3 (2018/07/06)
|
2
7
|
|
3
8
|
* [#5](https://github.com/dblock/iex-ruby-client/pull/5): Added `IEX::Resources::OHLC#get` - [@jromanovs](https://github.com/jromanovs).
|
data/README.md
CHANGED
@@ -83,6 +83,18 @@ company.company_name # 'Microsoft Corporation'
|
|
83
83
|
|
84
84
|
See [#company](https://iextrading.com/developer/docs/#company) for detailed documentation or [company.rb](lib/iex/resources/company.rb) for returned fields.
|
85
85
|
|
86
|
+
### Get Company Logo
|
87
|
+
|
88
|
+
Fetches company logo for a symbol.
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
logo = IEX::Resources::Logo.get('MSFT')
|
92
|
+
|
93
|
+
logo.url # 'https://storage.googleapis.com/iex/api/logos/MSFT.png'
|
94
|
+
```
|
95
|
+
|
96
|
+
See [#logo](https://iextrading.com/developer/docs/#logo) for detailed documentation or [logo.rb](lib/iex/resources/logo.rb) for returned fields.
|
97
|
+
|
86
98
|
### Get Recent News
|
87
99
|
|
88
100
|
Fetches news for a symbol.
|
@@ -146,6 +158,10 @@ See [#chart](https://iextrading.com/developer/docs/#chart) for detailed document
|
|
146
158
|
|
147
159
|
If a symbol cannot be found an [IEX::Errors::SymbolNotFound](lib/iex/errors/symbol_not_found_error.rb) exception is raised.
|
148
160
|
|
161
|
+
### ClientError
|
162
|
+
|
163
|
+
All errors that return HTTP codes 400-600 result in a [IEX::Errors::ClientError](lib/iex/errors/client_error.rb) exception.
|
164
|
+
|
149
165
|
## Contributing
|
150
166
|
|
151
167
|
See [CONTRIBUTING](CONTRIBUTING.md).
|
data/UPGRADING.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Upgrading iex-ruby-client
|
2
|
+
===========================
|
3
|
+
|
4
|
+
### Upgrading to >= 0.4.0
|
5
|
+
|
6
|
+
#### All errors that return HTTP codes 400-600 result in a IEX::Errors::ClientError exception
|
7
|
+
|
8
|
+
On previous versions, calling `IEX::Resources::Chart.get` with an invalid option results on a
|
9
|
+
`Faraday::ClientError`. On versions >= 0.4.0, it will return an `IEX::Errors::ClientError`.
|
10
|
+
|
11
|
+
Before:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
IEX::Resources::Chart.get('MSFT', '1d', chart_interval: 10, invalid_option: 'foo')
|
15
|
+
> Faraday::ClientError: the server responded with status 400
|
16
|
+
```
|
17
|
+
|
18
|
+
After:
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
IEX::Resources::Chart.get('MSFT', '1d', chart_interval: 10, invalid_option: 'foo')
|
22
|
+
> IEX::Errors::ClientError: "invalidOption" is not allowed
|
23
|
+
```
|
24
|
+
|
25
|
+
See [#9](https://github.com/dblock/iex-ruby-client/pull/9) for more information.
|
26
|
+
|
data/iex-ruby-client.gemspec
CHANGED
data/lib/iex/api.rb
CHANGED
@@ -17,9 +17,10 @@ module IEX
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
require_relative 'api/
|
20
|
+
require_relative 'api/chart'
|
21
21
|
require_relative 'api/company'
|
22
|
-
require_relative 'api/
|
22
|
+
require_relative 'api/logo'
|
23
23
|
require_relative 'api/news'
|
24
|
-
require_relative 'api/chart'
|
25
24
|
require_relative 'api/ohlc'
|
25
|
+
require_relative 'api/price'
|
26
|
+
require_relative 'api/quote'
|
data/lib/iex/api/logo.rb
ADDED
data/lib/iex/errors.rb
CHANGED
data/lib/iex/resources.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
module IEX
|
2
|
+
module Resources
|
3
|
+
module Base
|
4
|
+
def self.symbol(symbol, &_block)
|
5
|
+
yield
|
6
|
+
rescue Faraday::ResourceNotFound => e
|
7
|
+
raise IEX::Errors::SymbolNotFoundError.new(symbol, e.response[:body])
|
8
|
+
rescue Faraday::ClientError => e
|
9
|
+
raise IEX::Errors::ClientError, e.response
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/iex/resources/chart.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require_relative 'base'
|
1
2
|
require_relative 'chart/base'
|
2
3
|
require_relative 'chart/one_day'
|
3
4
|
require_relative 'chart/default'
|
@@ -5,22 +6,22 @@ require_relative 'chart/default'
|
|
5
6
|
module IEX
|
6
7
|
module Resources
|
7
8
|
module Chart
|
8
|
-
def self.get(
|
9
|
-
|
10
|
-
|
11
|
-
range
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
def self.get(stock_symbol, range = nil, options = {})
|
10
|
+
IEX::Resources::Base.symbol(stock_symbol) do
|
11
|
+
response = IEX::Api::Chart.get(stock_symbol, range, options)
|
12
|
+
if range && range.to_s == 'dynamic'
|
13
|
+
range = response['range']
|
14
|
+
response = response['data']
|
15
|
+
end
|
16
|
+
response.map do |data|
|
17
|
+
case range
|
18
|
+
when '1d', Date, DateTime
|
19
|
+
Chart::OneDay.new data
|
20
|
+
else
|
21
|
+
Chart::Default.new data
|
22
|
+
end
|
20
23
|
end
|
21
24
|
end
|
22
|
-
rescue Faraday::ResourceNotFound => e
|
23
|
-
raise IEX::Errors::SymbolNotFoundError.new(symbol, e.response[:body])
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
1
3
|
module IEX
|
2
4
|
module Resources
|
3
5
|
class Company < Resource
|
@@ -11,10 +13,10 @@ module IEX
|
|
11
13
|
property 'issue_type', from: 'issueType' # common issue type of the stock
|
12
14
|
property 'sector'
|
13
15
|
|
14
|
-
def self.get(
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
def self.get(stock_symbol)
|
17
|
+
Base.symbol(stock_symbol) do
|
18
|
+
new IEX::Api::Company.get(stock_symbol)
|
19
|
+
end
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
data/lib/iex/resources/news.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
1
3
|
module IEX
|
2
4
|
module Resources
|
3
5
|
class News < Resource
|
@@ -8,12 +10,12 @@ module IEX
|
|
8
10
|
property 'summary'
|
9
11
|
property 'related', transform_with: ->(v) { v.split(',') if v.is_a?(String) }
|
10
12
|
|
11
|
-
def self.get(
|
12
|
-
|
13
|
-
|
13
|
+
def self.get(stock_symbol, range = nil)
|
14
|
+
Base.symbol(stock_symbol) do
|
15
|
+
IEX::Api::News.get(stock_symbol, range).map do |data|
|
16
|
+
new data
|
17
|
+
end
|
14
18
|
end
|
15
|
-
rescue Faraday::ResourceNotFound => e
|
16
|
-
raise IEX::Errors::SymbolNotFoundError.new(symbol, e.response[:body])
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
data/lib/iex/resources/ohlc.rb
CHANGED
@@ -1,21 +1,22 @@
|
|
1
|
+
require_relative 'base'
|
1
2
|
require_relative 'ohlc/base'
|
2
3
|
|
3
4
|
module IEX
|
4
5
|
module Resources
|
5
6
|
module OHLC
|
6
|
-
def self.get(
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
def self.get(stock_symbol)
|
8
|
+
IEX::Resources::Base.symbol(stock_symbol) do
|
9
|
+
resource = IEX::Api::OHLC.get(stock_symbol)
|
10
|
+
OHLC::Base.new resource
|
11
|
+
end
|
11
12
|
end
|
12
13
|
|
13
14
|
def self.market
|
14
|
-
|
15
|
-
[k,
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
IEX::Resources::Base.symbol(nil) do
|
16
|
+
Hash[IEX::Api::OHLC.market.map do |k, v|
|
17
|
+
[k, OHLC::Base.new(v)]
|
18
|
+
end]
|
19
|
+
end
|
19
20
|
end
|
20
21
|
end
|
21
22
|
end
|
data/lib/iex/resources/price.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
1
3
|
module IEX
|
2
4
|
module Resources
|
3
5
|
module Price
|
4
|
-
def self.get(
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
def self.get(stock_symbol)
|
7
|
+
Base.symbol(stock_symbol) do
|
8
|
+
IEX::Api::Price.get(stock_symbol)
|
9
|
+
end
|
8
10
|
end
|
9
11
|
end
|
10
12
|
end
|
data/lib/iex/resources/quote.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
1
3
|
module IEX
|
2
4
|
module Resources
|
3
5
|
class Quote < Resource
|
@@ -51,10 +53,10 @@ module IEX
|
|
51
53
|
property 'week_52_low', from: 'week52Low' # adjusted 52 week low
|
52
54
|
property 'ytd_change', from: 'ytdChange' # price change percentage from start of year to previous close
|
53
55
|
|
54
|
-
def self.get(
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
def self.get(stock_symbol)
|
57
|
+
Base.symbol(stock_symbol) do
|
58
|
+
new IEX::Api::Quote.get(stock_symbol)
|
59
|
+
end
|
58
60
|
end
|
59
61
|
end
|
60
62
|
end
|
data/lib/iex/version.rb
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.iextrading.com/1.0/stock/MSFT/chart/1d?badOption=option&chartInterval=10
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.15.2
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 400
|
19
|
+
message: Bad Request
|
20
|
+
headers:
|
21
|
+
Server:
|
22
|
+
- nginx
|
23
|
+
Date:
|
24
|
+
- Fri, 27 Jul 2018 00:59:53 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json; charset=utf-8
|
27
|
+
Content-Length:
|
28
|
+
- '40'
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
Set-Cookie:
|
32
|
+
- ctoken=cd9863332b4546a4a6b8f0a9550e7030; Domain=.iextrading.com; Path=/; Expires=Fri,
|
33
|
+
27 Jul 2018 12:59:53 GMT; Secure
|
34
|
+
Content-Security-Policy:
|
35
|
+
- default-src 'self'; child-src 'none'; object-src 'none'; style-src 'self'
|
36
|
+
'unsafe-inline'; font-src data:; frame-src 'self'; connect-src 'self' https://auth.iextrading.com
|
37
|
+
https://api.iextrading.com https://api.iextrading.com wss://iextrading.com
|
38
|
+
wss://tops.iextrading.com wss://api.iextrading.com wss://iextrading.com; script-src
|
39
|
+
'self' 'unsafe-inline' 'unsafe-eval';
|
40
|
+
X-Content-Security-Policy:
|
41
|
+
- default-src 'self'; child-src 'none'; object-src 'none'; style-src 'self'
|
42
|
+
'unsafe-inline'; font-src data:; frame-src 'self'; connect-src 'self' https://auth.iextrading.com
|
43
|
+
https://api.iextrading.com https://api.iextrading.com wss://iextrading.com
|
44
|
+
wss://tops.iextrading.com wss://api.iextrading.com wss://iextrading.com; script-src
|
45
|
+
'self' 'unsafe-inline' 'unsafe-eval';
|
46
|
+
Frame-Options:
|
47
|
+
- SAMEORIGIN
|
48
|
+
X-Frame-Options:
|
49
|
+
- SAMEORIGIN
|
50
|
+
Strict-Transport-Security:
|
51
|
+
- max-age=15768000
|
52
|
+
Access-Control-Allow-Origin:
|
53
|
+
- "*"
|
54
|
+
Access-Control-Allow-Credentials:
|
55
|
+
- 'true'
|
56
|
+
Access-Control-Allow-Methods:
|
57
|
+
- GET, OPTIONS
|
58
|
+
Access-Control-Allow-Headers:
|
59
|
+
- Origin, X-Requested-With, Content-Type, Accept
|
60
|
+
body:
|
61
|
+
encoding: UTF-8
|
62
|
+
string: '{"error":"\"badOption\" is not allowed"}'
|
63
|
+
http_version:
|
64
|
+
recorded_at: Fri, 27 Jul 2018 00:59:53 GMT
|
65
|
+
recorded_with: VCR 4.0.0
|
@@ -0,0 +1,67 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.iextrading.com/1.0/stock/msft/logo
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.15.2
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Server:
|
22
|
+
- nginx
|
23
|
+
Date:
|
24
|
+
- Thu, 26 Jul 2018 02:21:28 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json; charset=utf-8
|
27
|
+
Content-Length:
|
28
|
+
- '63'
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
Set-Cookie:
|
32
|
+
- ctoken=4dae8f73e709423697c3c7af35f4a156; Domain=.iextrading.com; Path=/; Expires=Thu,
|
33
|
+
26 Jul 2018 14:21:28 GMT; Secure
|
34
|
+
Content-Security-Policy:
|
35
|
+
- default-src 'self'; child-src 'none'; object-src 'none'; style-src 'self'
|
36
|
+
'unsafe-inline'; font-src data:; frame-src 'self'; connect-src 'self' https://auth.iextrading.com
|
37
|
+
https://api.iextrading.com https://api.iextrading.com wss://iextrading.com
|
38
|
+
wss://tops.iextrading.com wss://api.iextrading.com wss://iextrading.com; script-src
|
39
|
+
'self' 'unsafe-inline' 'unsafe-eval';
|
40
|
+
X-Content-Security-Policy:
|
41
|
+
- default-src 'self'; child-src 'none'; object-src 'none'; style-src 'self'
|
42
|
+
'unsafe-inline'; font-src data:; frame-src 'self'; connect-src 'self' https://auth.iextrading.com
|
43
|
+
https://api.iextrading.com https://api.iextrading.com wss://iextrading.com
|
44
|
+
wss://tops.iextrading.com wss://api.iextrading.com wss://iextrading.com; script-src
|
45
|
+
'self' 'unsafe-inline' 'unsafe-eval';
|
46
|
+
Frame-Options:
|
47
|
+
- SAMEORIGIN
|
48
|
+
X-Frame-Options:
|
49
|
+
- SAMEORIGIN
|
50
|
+
X-Content-Type-Options:
|
51
|
+
- nosniff
|
52
|
+
Strict-Transport-Security:
|
53
|
+
- max-age=15768000
|
54
|
+
Access-Control-Allow-Origin:
|
55
|
+
- "*"
|
56
|
+
Access-Control-Allow-Credentials:
|
57
|
+
- 'true'
|
58
|
+
Access-Control-Allow-Methods:
|
59
|
+
- GET, OPTIONS
|
60
|
+
Access-Control-Allow-Headers:
|
61
|
+
- Origin, X-Requested-With, Content-Type, Accept
|
62
|
+
body:
|
63
|
+
encoding: UTF-8
|
64
|
+
string: '{"url":"https://storage.googleapis.com/iex/api/logos/MSFT.png"}'
|
65
|
+
http_version:
|
66
|
+
recorded_at: Thu, 26 Jul 2018 02:21:28 GMT
|
67
|
+
recorded_with: VCR 4.0.0
|
@@ -17,6 +17,7 @@ describe IEX::Resources::Chart do
|
|
17
17
|
expect(last.label).to eq 'Mar 26'
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
20
21
|
context '1d', vcr: { cassette_name: 'chart/1d' } do
|
21
22
|
subject do
|
22
23
|
IEX::Resources::Chart.get('MSFT', '1d')
|
@@ -32,6 +33,7 @@ describe IEX::Resources::Chart do
|
|
32
33
|
expect(first.minute).to eq '09:30'
|
33
34
|
end
|
34
35
|
end
|
36
|
+
|
35
37
|
context 'with options', vcr: { cassette_name: 'chart/chartInterval' } do
|
36
38
|
subject do
|
37
39
|
IEX::Resources::Chart.get('MSFT', '1d', chart_interval: 10)
|
@@ -42,6 +44,7 @@ describe IEX::Resources::Chart do
|
|
42
44
|
expect(first).to be_a IEX::Resources::Chart::OneDay
|
43
45
|
end
|
44
46
|
end
|
47
|
+
|
45
48
|
context 'date', vcr: { cassette_name: 'chart/20180227' } do
|
46
49
|
subject do
|
47
50
|
IEX::Resources::Chart.get('MSFT', Date.new(2018, 2, 27))
|
@@ -53,6 +56,7 @@ describe IEX::Resources::Chart do
|
|
53
56
|
expect(first.date).to eq Date.new(2018, 2, 27)
|
54
57
|
end
|
55
58
|
end
|
59
|
+
|
56
60
|
context 'dynamic 1m', vcr: { cassette_name: 'chart/dynamic/1m' } do
|
57
61
|
subject do
|
58
62
|
IEX::Resources::Chart.get('MSFT', :dynamic)
|
@@ -64,6 +68,7 @@ describe IEX::Resources::Chart do
|
|
64
68
|
expect(first.date).to eq Date.new(2018, 2, 26)
|
65
69
|
end
|
66
70
|
end
|
71
|
+
|
67
72
|
context 'invalid symbol', vcr: { cassette_name: 'chart/invalid' } do
|
68
73
|
subject do
|
69
74
|
IEX::Resources::Chart.get('INVALID')
|
@@ -72,4 +77,14 @@ describe IEX::Resources::Chart do
|
|
72
77
|
expect { subject }.to raise_error IEX::Errors::SymbolNotFoundError, 'Symbol INVALID Not Found'
|
73
78
|
end
|
74
79
|
end
|
80
|
+
|
81
|
+
context 'with client error', vcr: { cassette_name: 'chart/bad_option' } do
|
82
|
+
subject do
|
83
|
+
IEX::Resources::Chart.get('MSFT', '1d', chart_interval: 10, bad_option: 'option')
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'fails with ClientError' do
|
87
|
+
expect { subject }.to raise_error IEX::Errors::ClientError, '"badOption" is not allowed'
|
88
|
+
end
|
89
|
+
end
|
75
90
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe IEX::Resources::Logo do
|
4
|
+
context "retrieves company's logo", vcr: { cassette_name: 'logo/msft' } do
|
5
|
+
subject do
|
6
|
+
IEX::Resources::Logo.get('MSFT')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'retrieves a logo' do
|
10
|
+
expect(subject.url).to eq 'https://storage.googleapis.com/iex/api/logos/MSFT.png'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iex-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Doubrovkine
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -140,23 +140,28 @@ files:
|
|
140
140
|
- README.md
|
141
141
|
- RELEASING.md
|
142
142
|
- Rakefile
|
143
|
+
- UPGRADING.md
|
143
144
|
- iex-ruby-client.gemspec
|
144
145
|
- lib/iex-ruby-client.rb
|
145
146
|
- lib/iex/api.rb
|
146
147
|
- lib/iex/api/chart.rb
|
147
148
|
- lib/iex/api/company.rb
|
149
|
+
- lib/iex/api/logo.rb
|
148
150
|
- lib/iex/api/news.rb
|
149
151
|
- lib/iex/api/ohlc.rb
|
150
152
|
- lib/iex/api/price.rb
|
151
153
|
- lib/iex/api/quote.rb
|
152
154
|
- lib/iex/errors.rb
|
155
|
+
- lib/iex/errors/client_error.rb
|
153
156
|
- lib/iex/errors/symbol_not_found_error.rb
|
154
157
|
- lib/iex/resources.rb
|
158
|
+
- lib/iex/resources/base.rb
|
155
159
|
- lib/iex/resources/chart.rb
|
156
160
|
- lib/iex/resources/chart/base.rb
|
157
161
|
- lib/iex/resources/chart/default.rb
|
158
162
|
- lib/iex/resources/chart/one_day.rb
|
159
163
|
- lib/iex/resources/company.rb
|
164
|
+
- lib/iex/resources/logo.rb
|
160
165
|
- lib/iex/resources/news.rb
|
161
166
|
- lib/iex/resources/ohlc.rb
|
162
167
|
- lib/iex/resources/ohlc/base.rb
|
@@ -167,12 +172,14 @@ files:
|
|
167
172
|
- lib/iex/version.rb
|
168
173
|
- spec/fixtures/iex/chart/1d.yml
|
169
174
|
- spec/fixtures/iex/chart/20180227.yml
|
175
|
+
- spec/fixtures/iex/chart/bad_option.yml
|
170
176
|
- spec/fixtures/iex/chart/chartInterval.yml
|
171
177
|
- spec/fixtures/iex/chart/dynamic/1m.yml
|
172
178
|
- spec/fixtures/iex/chart/invalid.yml
|
173
179
|
- spec/fixtures/iex/chart/msft.yml
|
174
180
|
- spec/fixtures/iex/company/invalid.yml
|
175
181
|
- spec/fixtures/iex/company/msft.yml
|
182
|
+
- spec/fixtures/iex/logo/msft.yml
|
176
183
|
- spec/fixtures/iex/news/invalid.yml
|
177
184
|
- spec/fixtures/iex/news/market.yml
|
178
185
|
- spec/fixtures/iex/news/msft.yml
|
@@ -185,6 +192,7 @@ files:
|
|
185
192
|
- spec/fixtures/iex/quote/msft.yml
|
186
193
|
- spec/iex/resources/chart_spec.rb
|
187
194
|
- spec/iex/resources/company_spec.rb
|
195
|
+
- spec/iex/resources/logo_spec.rb
|
188
196
|
- spec/iex/resources/news_spec.rb
|
189
197
|
- spec/iex/resources/ohlc_spec.rb
|
190
198
|
- spec/iex/resources/price_spec.rb
|
@@ -212,19 +220,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
220
|
version: 1.3.6
|
213
221
|
requirements: []
|
214
222
|
rubyforge_project:
|
215
|
-
rubygems_version: 2.
|
223
|
+
rubygems_version: 2.5.2
|
216
224
|
signing_key:
|
217
225
|
specification_version: 4
|
218
226
|
summary: IEX Finance API Ruby client with support for retrieving stock quotes.
|
219
227
|
test_files:
|
220
228
|
- spec/fixtures/iex/chart/1d.yml
|
221
229
|
- spec/fixtures/iex/chart/20180227.yml
|
230
|
+
- spec/fixtures/iex/chart/bad_option.yml
|
222
231
|
- spec/fixtures/iex/chart/chartInterval.yml
|
223
232
|
- spec/fixtures/iex/chart/dynamic/1m.yml
|
224
233
|
- spec/fixtures/iex/chart/invalid.yml
|
225
234
|
- spec/fixtures/iex/chart/msft.yml
|
226
235
|
- spec/fixtures/iex/company/invalid.yml
|
227
236
|
- spec/fixtures/iex/company/msft.yml
|
237
|
+
- spec/fixtures/iex/logo/msft.yml
|
228
238
|
- spec/fixtures/iex/news/invalid.yml
|
229
239
|
- spec/fixtures/iex/news/market.yml
|
230
240
|
- spec/fixtures/iex/news/msft.yml
|
@@ -237,6 +247,7 @@ test_files:
|
|
237
247
|
- spec/fixtures/iex/quote/msft.yml
|
238
248
|
- spec/iex/resources/chart_spec.rb
|
239
249
|
- spec/iex/resources/company_spec.rb
|
250
|
+
- spec/iex/resources/logo_spec.rb
|
240
251
|
- spec/iex/resources/news_spec.rb
|
241
252
|
- spec/iex/resources/ohlc_spec.rb
|
242
253
|
- spec/iex/resources/price_spec.rb
|