iex-ruby-client 1.0.1 → 1.1.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
  SHA1:
3
- metadata.gz: cc54c99b44f20089d95fa121c4bdf07c799bcf85
4
- data.tar.gz: c8ffcde3452f7141c61342f510d2700f6c0a0bbf
3
+ metadata.gz: 2b9626afa318608562e32bba7dc1efa03d11928a
4
+ data.tar.gz: ed9d9e67df2e48214b7b8fce95169b175f806571
5
5
  SHA512:
6
- metadata.gz: cc798095fd893860bcf460bd836c6c0c8922f4a5831df83184842a2a5be537008220f51e42a5bdfab29a791b0ef7d9f28fd50b9781e59d8fc7d0a4b9238de331
7
- data.tar.gz: cbad4c6f007f914c7548a92cdc5c9b0a77ea60c7b9f4dfd73a38c96930d8ccfca0f0ae0f436e6709e207c4afa91951b73f80c906361d86577b9757fe57ae8a62
6
+ metadata.gz: 4df0e3c0b89750c3a5206de7329cb07ebd6de89fe43e55ac9d55649ab2c30d38ebfc3edf696208ffdabb2b3d2c355bbc0ed93034ee3b0e6b955bf29c32307922
7
+ data.tar.gz: a4603bca3d2106fb42cd24e9bdfe8fadc930e6a7a7954b8d5d82e7747fa03767a0446aedd1548cd00a8eb07d977831313d3a4fc49487ef0ada48b9a142e927bf
@@ -2,12 +2,15 @@ AllCops:
2
2
  Exclude:
3
3
  - vendor/**/*
4
4
 
5
+ Style/FrozenStringLiteralComment:
6
+ Enabled: false
7
+
5
8
  Naming/MethodName:
6
9
  Enabled: false
7
10
 
8
11
  Naming/FileName:
9
12
  Exclude:
10
- - 'lib/iex-ruby-client.rb'
13
+ - "lib/iex-ruby-client.rb"
11
14
 
12
15
  Style/Documentation:
13
16
  Enabled: false
@@ -1,3 +1,7 @@
1
+ ### 1.1.0 (2019/07/08)
2
+
3
+ * [#55](https://github.com/dblock/iex-ruby-client/pull/55): Add `income` statement API and add `tags` to the `company` - [@bingxie](https://github.com/bingxie).
4
+
1
5
  ### 1.0.1 (2019/07/08)
2
6
 
3
7
  * [#50](https://github.com/dblock/iex-ruby-client/pull/50): Add missing properties for key stats API - [@bingxie](https://github.com/bingxie).
data/README.md CHANGED
@@ -22,6 +22,7 @@ A Ruby client for the [The IEX Cloud API](https://iexcloud.io/docs/api/).
22
22
  - [Get Key Stats](#get-key-stats)
23
23
  - [Get Dividends](#get-dividends)
24
24
  - [Get Earnings](#get-earnings)
25
+ - [Get Income Statement](#get-income-statement)
25
26
  - [Get Sector Performance](#get-sector-performance)
26
27
  - [Get Largest Trades](#get-largest-trades)
27
28
  - [Get a Quote for Crypto Currencies](#get-a-quote-for-crypto-currencies)
@@ -216,7 +217,7 @@ key_stats.week_52_high_dollar # "$136.04"
216
217
  key_stats.week_52_low # 95.92,
217
218
  key_stats.week_52_low_dollar # "$95.92"
218
219
  key_stats.market_cap # 990869169557
219
- key_stats.market_cap_dollars # "$990,869,169,557"
220
+ key_stats.market_cap_dollar # "$990,869,169,557"
220
221
  key_stats.employees # 133074
221
222
  key_stats.day_200_moving_avg # 112.43
222
223
  key_stats.day_50_moving_avg # 121
@@ -293,6 +294,25 @@ earnings.year_ago_change_percent_s # '+15.31%'
293
294
 
294
295
  See [#earnings](https://iexcloud.io/docs/api/#earnings) for detailed documentation or [earnings.rb](lib/iex/resources/earnings.rb) for returned fields.
295
296
 
297
+ ### Get Income Statement
298
+
299
+ Fetches income statement for a symbol.
300
+
301
+ ```ruby
302
+ income = client.income('MSFT')
303
+
304
+ income.report_date # '2019-03-31'
305
+ income.total_revenue # 30_505_000_000
306
+ income.total_revenue_dollar # '$30,505,000,000'
307
+ income.cost_of_revenue # 10_170_000_000
308
+ income.cost_of_revenue_dollar # '$10,170,000,000'
309
+ income.gross_profit # 20_335_000_000
310
+ income.gross_profit_dollar # '$20,335,000,000'
311
+ ...
312
+ ```
313
+
314
+ See [#income-statement](https://iexcloud.io/docs/api/#income-statement) for detailed documentation or [income.rb](lib/iex/resources/income.rb) for returned fields.
315
+
296
316
  ### Get Sector Performance
297
317
 
298
318
  Fetches latest sector's performance.
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency 'money_helper'
22
22
  s.add_development_dependency 'rake', '~> 10'
23
23
  s.add_development_dependency 'rspec'
24
- s.add_development_dependency 'rubocop', '0.67.2'
24
+ s.add_development_dependency 'rubocop', '0.72.0'
25
25
  s.add_development_dependency 'vcr'
26
26
  s.add_development_dependency 'webmock'
27
27
  end
@@ -2,6 +2,7 @@ require_relative 'endpoints/chart'
2
2
  require_relative 'endpoints/company'
3
3
  require_relative 'endpoints/dividends'
4
4
  require_relative 'endpoints/earnings'
5
+ require_relative 'endpoints/income'
5
6
  require_relative 'endpoints/largest_trades'
6
7
  require_relative 'endpoints/logo'
7
8
  require_relative 'endpoints/key_stats'
@@ -6,6 +6,7 @@ module IEX
6
6
  include Endpoints::Crypto
7
7
  include Endpoints::Dividends
8
8
  include Endpoints::Earnings
9
+ include Endpoints::Income
9
10
  include Endpoints::KeyStats
10
11
  include Endpoints::LargestTrades
11
12
  include Endpoints::Logo
@@ -10,11 +10,10 @@ module IEX
10
10
  ].compact.join('/')
11
11
 
12
12
  params = {}
13
- if options
14
- options.each_pair do |k, v|
15
- k = k.to_s.split('_').map(&:capitalize).join.sub(/^[A-Z]/, &:downcase)
16
- params[k.to_sym] = v
17
- end
13
+
14
+ options&.each_pair do |k, v|
15
+ k = k.to_s.split('_').map(&:capitalize).join.sub(/^[A-Z]/, &:downcase)
16
+ params[k.to_sym] = v
18
17
  end
19
18
 
20
19
  response = get(url, params)
@@ -0,0 +1,13 @@
1
+ module IEX
2
+ module Endpoints
3
+ module Income
4
+ def income(symbol, options = {})
5
+ get("stock/#{symbol}/income", options)['income'].map do |data|
6
+ IEX::Resources::Income.new(data)
7
+ end
8
+ rescue Faraday::ResourceNotFound => e
9
+ raise IEX::Errors::SymbolNotFoundError.new(symbol, e.response[:body])
10
+ end
11
+ end
12
+ end
13
+ end
@@ -4,6 +4,7 @@ require_relative 'resources/chart'
4
4
  require_relative 'resources/company'
5
5
  require_relative 'resources/dividends'
6
6
  require_relative 'resources/earnings'
7
+ require_relative 'resources/income'
7
8
  require_relative 'resources/key_stats'
8
9
  require_relative 'resources/largest_trades'
9
10
  require_relative 'resources/logo'
@@ -18,7 +18,7 @@ module IEX
18
18
  property 'change_percent', from: 'changePercent'
19
19
  property 'change_percent_s', from: 'changePercent', with: lambda { |v|
20
20
  [
21
- v > 0 ? '+' : '',
21
+ v.positive? ? '+' : '',
22
22
  format('%.2f', v),
23
23
  '%'
24
24
  ].join
@@ -12,6 +12,7 @@ module IEX
12
12
  property 'issue_type', from: 'issueType' # common issue type of the stock
13
13
  property 'sector'
14
14
  property 'employees'
15
+ property 'tags'
15
16
  end
16
17
  end
17
18
  end
@@ -0,0 +1,36 @@
1
+ module IEX
2
+ module Resources
3
+ class Income < Resource
4
+ property 'report_date', from: 'reportDate'
5
+ property 'total_revenue', from: 'totalRevenue'
6
+ property 'total_revenue_dollar', from: 'totalRevenue', with: ->(v) { to_dollar(amount: v) }
7
+ property 'cost_of_revenue', from: 'costOfRevenue'
8
+ property 'cost_of_revenue_dollar', from: 'costOfRevenue', with: ->(v) { to_dollar(amount: v) }
9
+ property 'gross_profit', from: 'grossProfit'
10
+ property 'gross_profit_dollar', from: 'grossProfit', with: ->(v) { to_dollar(amount: v) }
11
+ property 'research_and_development', from: 'researchAndDevelopment'
12
+ property 'research_and_development_dollar', from: 'researchAndDevelopment', with: ->(v) { to_dollar(amount: v) }
13
+ property 'selling_general_and_admin', from: 'sellingGeneralAndAdmin'
14
+ property 'selling_general_and_admin_dollar', from: 'sellingGeneralAndAdmin', with: ->(v) { to_dollar(amount: v) }
15
+ property 'operating_expense', from: 'operatingExpense'
16
+ property 'operating_expense_dollar', from: 'operatingExpense', with: ->(v) { to_dollar(amount: v) }
17
+ property 'operating_income', from: 'operatingIncome'
18
+ property 'operating_income_dollar', from: 'operatingIncome', with: ->(v) { to_dollar(amount: v) }
19
+ property 'other_income_expense_net', from: 'otherIncomeExpenseNet'
20
+ property 'other_income_expense_net_dollar', from: 'otherIncomeExpenseNet', with: ->(v) { to_dollar(amount: v) }
21
+ property 'ebit'
22
+ property 'ebit_dollar', from: 'ebit', with: ->(v) { to_dollar(amount: v) }
23
+ property 'interest_income', from: 'interestIncome'
24
+ property 'interest_income_dollar', from: 'interestIncome', with: ->(v) { to_dollar(amount: v) }
25
+ property 'pretax_income', from: 'pretaxIncome'
26
+ property 'pretax_income_dollar', from: 'pretaxIncome', with: ->(v) { to_dollar(amount: v) }
27
+ property 'income_tax', from: 'incomeTax'
28
+ property 'income_tax_dollar', from: 'incomeTax', with: ->(v) { to_dollar(amount: v) }
29
+ property 'minority_interest', from: 'minorityInterest'
30
+ property 'net_income', from: 'netIncome'
31
+ property 'net_income_dollar', from: 'netIncome', with: ->(v) { to_dollar(amount: v) }
32
+ property 'net_income_basic', from: 'netIncomeBasic'
33
+ property 'net_income_basic_dollar', from: 'netIncomeBasic', with: ->(v) { to_dollar(amount: v) }
34
+ end
35
+ end
36
+ end
@@ -3,7 +3,7 @@ module IEX
3
3
  class KeyStats < Resource
4
4
  property 'company_name', from: 'companyName'
5
5
  property 'market_cap', from: 'marketcap'
6
- property 'market_cap_dollars', from: 'marketcap', with: ->(v) { Resource.to_dollar(amount: v) }
6
+ property 'market_cap_dollar', from: 'marketcap', with: ->(v) { Resource.to_dollar(amount: v) }
7
7
  property 'week_52_high', from: 'week52high'
8
8
  property 'week_52_high_dollar', from: 'week52high', with: ->(v) { Resource.to_dollar(amount: v, ignore_cents: false) }
9
9
  property 'week_52_low', from: 'week52low'
@@ -16,12 +16,12 @@ module IEX
16
16
  property 'latest_source', from: 'latestSource' # the source of latestPrice - IEX real time price, 15 minute delayed price, Close or Previous close
17
17
  property 'latest_time', from: 'latestTime' # human readable time of the latestPrice
18
18
  property 'latest_update', from: 'latestUpdate' # the update time of latestPrice in milliseconds since midnight Jan 1, 1970
19
- property 'latest_update_t', from: 'latestUpdate', with: ->(v) { v && v > 0 ? Time.at(v / 1000) : nil } # the update time of latestPrice
19
+ property 'latest_update_t', from: 'latestUpdate', with: ->(v) { v&.positive? ? Time.at(v / 1000) : nil } # the update time of latestPrice
20
20
  property 'latest_volume', from: 'latestVolume' # the total market volume of the stock
21
21
  property 'iex_realtime_price', from: 'iexRealtimePrice' # last sale price of the stock on IEX
22
22
  property 'iex_realtime_size', from: 'iexRealtimeSize' # last sale size of the stock on IEX
23
23
  property 'iex_last_updated', from: 'iexLastUpdated' # last update time of the data in milliseconds since midnight Jan 1, 1970 UTC or -1 or 0; if the value is -1 or 0, IEX has not quoted the symbol in the trading day
24
- property 'iex_last_updated_t', from: 'iexLastUpdated', with: ->(v) { v && v > 0 ? Time.at(v / 1000) : nil } # last update time of the data
24
+ property 'iex_last_updated_t', from: 'iexLastUpdated', with: ->(v) { v&.positive? ? Time.at(v / 1000) : nil } # last update time of the data
25
25
  property 'delayed_price', from: 'delayedPrice' # 15 minute delayed market price
26
26
  property 'delayed_price_time', from: 'delayedPriceTime' # time of the delayed market price
27
27
  property 'extended_price', from: 'extendedPrice' # ?
@@ -32,7 +32,7 @@ module IEX
32
32
  property 'change_percent_s', from: 'changePercent', with: lambda { |v|
33
33
  if v
34
34
  [
35
- v > 0 ? '+' : '',
35
+ v.positive? ? '+' : '',
36
36
  format('%.2f', v * 100),
37
37
  '%'
38
38
  ].join
@@ -8,7 +8,7 @@ module IEX
8
8
  return '+0.00%' if float_number.zero?
9
9
 
10
10
  [
11
- float_number > 0 ? '+' : '',
11
+ float_number.positive? ? '+' : '',
12
12
  format('%.2f', float_number * 100),
13
13
  '%'
14
14
  ].join
@@ -1,3 +1,3 @@
1
1
  module IEX
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
@@ -0,0 +1,49 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://cloud.iexapis.com/v1/stock/INVALID/earnings?token=test-iex-api-publishable-token
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ""
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - IEX Ruby Client/1.0.1
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ response:
17
+ status:
18
+ code: 404
19
+ message: Not Found
20
+ headers:
21
+ Server:
22
+ - nginx
23
+ Date:
24
+ - Mon, 08 Jul 2019 05:44:19 GMT
25
+ Content-Type:
26
+ - text/html; charset=utf-8
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ Set-Cookie:
32
+ - ctoken=5eb12a74846a4e03b399e201d6853f6a; Max-Age=43200; Path=/; Expires=Mon,
33
+ 08 Jul 2019 17:44:19 GMT
34
+ Strict-Transport-Security:
35
+ - max-age=15768000
36
+ Access-Control-Allow-Origin:
37
+ - "*"
38
+ Access-Control-Allow-Credentials:
39
+ - "true"
40
+ Access-Control-Allow-Methods:
41
+ - GET, OPTIONS
42
+ Access-Control-Allow-Headers:
43
+ - Origin, X-Requested-With, Content-Type, Accept
44
+ body:
45
+ encoding: ASCII-8BIT
46
+ string: Unknown symbol
47
+ http_version:
48
+ recorded_at: Mon, 08 Jul 2019 05:44:19 GMT
49
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,53 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://cloud.iexapis.com/v1/stock/MSFT/income?token=test-iex-api-publishable-token
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ""
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - IEX Ruby Client/1.0.1
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - nginx
23
+ Date:
24
+ - Mon, 08 Jul 2019 04:53:26 GMT
25
+ Content-Type:
26
+ - application/json; charset=utf-8
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ Set-Cookie:
32
+ - ctoken=153fb65c56854cf995c8112a5cd5f554; Max-Age=43200; Path=/; Expires=Mon,
33
+ 08 Jul 2019 16:53:26 GMT
34
+ Iexcloud-Messages-Used:
35
+ - "1000"
36
+ X-Content-Type-Options:
37
+ - nosniff
38
+ Strict-Transport-Security:
39
+ - max-age=15768000
40
+ Access-Control-Allow-Origin:
41
+ - "*"
42
+ Access-Control-Allow-Credentials:
43
+ - "true"
44
+ Access-Control-Allow-Methods:
45
+ - GET, OPTIONS
46
+ Access-Control-Allow-Headers:
47
+ - Origin, X-Requested-With, Content-Type, Accept
48
+ body:
49
+ encoding: ASCII-8BIT
50
+ string: '{"symbol":"MSFT","income":[{"reportDate":"2019-03-31","totalRevenue":30505000000,"costOfRevenue":10170000000,"grossProfit":20335000000,"researchAndDevelopment":4316000000,"sellingGeneralAndAdmin":5744000000,"operatingExpense":20230000000,"operatingIncome":10275000000,"otherIncomeExpenseNet":211000000,"ebit":10275000000,"interestIncome":671000000,"pretaxIncome":10486000000,"incomeTax":1677000000,"minorityInterest":0,"netIncome":8809000000,"netIncomeBasic":8809000000}]}'
51
+ http_version:
52
+ recorded_at: Mon, 08 Jul 2019 04:53:26 GMT
53
+ recorded_with: VCR 4.0.0
@@ -19,6 +19,7 @@ describe IEX::Resources::Company do
19
19
  expect(subject.sector).to eq 'Technology Services'
20
20
  expect(subject.employees).to eq 131_000
21
21
  expect(subject.security_name).to eq 'Microsoft Corporation'
22
+ expect(subject.tags).to eq ['Technology Services', 'Packaged Software']
22
23
  end
23
24
  end
24
25
  context 'invalid symbol', vcr: { cassette_name: 'company/invalid' } do
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe IEX::Resources::Income do
6
+ include_context 'client'
7
+
8
+ context 'known symbol' do
9
+ context 'with defaults', vcr: { cassette_name: 'income/msft' } do
10
+ subject do
11
+ client.income('MSFT')
12
+ end
13
+ let(:income) { subject.first }
14
+
15
+ it 'retrieves income statement' do
16
+ expect(subject.size).to eq 1
17
+ expect(income.report_date).to eq '2019-03-31'
18
+ expect(income.total_revenue).to eq 30_505_000_000
19
+ expect(income.total_revenue_dollar).to eq '$30,505,000,000'
20
+ expect(income.cost_of_revenue).to eq 10_170_000_000
21
+ expect(income.cost_of_revenue_dollar).to eq '$10,170,000,000'
22
+ expect(income.gross_profit).to eq 20_335_000_000
23
+ expect(income.gross_profit_dollar).to eq '$20,335,000,000'
24
+ expect(income.research_and_development).to eq 4_316_000_000
25
+ expect(income.research_and_development_dollar).to eq '$4,316,000,000'
26
+ expect(income.selling_general_and_admin).to eq 5_744_000_000
27
+ expect(income.selling_general_and_admin_dollar).to eq '$5,744,000,000'
28
+ expect(income.operating_expense).to eq 20_230_000_000
29
+ expect(income.operating_expense_dollar).to eq '$20,230,000,000'
30
+ expect(income.operating_income).to eq 10_275_000_000
31
+ expect(income.operating_income_dollar).to eq '$10,275,000,000'
32
+ expect(income.other_income_expense_net).to eq 211_000_000
33
+ expect(income.other_income_expense_net_dollar).to eq '$211,000,000'
34
+ expect(income.ebit_dollar).to eq '$10,275,000,000'
35
+ expect(income.ebit).to eq 10_275_000_000
36
+ expect(income.interest_income).to eq 671_000_000
37
+ expect(income.interest_income_dollar).to eq '$671,000,000'
38
+ expect(income.pretax_income).to eq 10_486_000_000
39
+ expect(income.pretax_income_dollar).to eq '$10,486,000,000'
40
+ expect(income.income_tax).to eq 1_677_000_000
41
+ expect(income.income_tax_dollar).to eq '$1,677,000,000'
42
+ expect(income.minority_interest).to eq 0
43
+ expect(income.net_income).to eq 8_809_000_000
44
+ expect(income.net_income_dollar).to eq '$8,809,000,000'
45
+ expect(income.net_income_basic).to eq 8_809_000_000
46
+ expect(income.net_income_basic_dollar).to eq '$8,809,000,000'
47
+ end
48
+ end
49
+ end
50
+
51
+ context 'invalid symbol', vcr: { cassette_name: 'income/invalid' } do
52
+ subject do
53
+ client.earnings('INVALID')
54
+ end
55
+ it 'fails with SymbolNotFoundError' do
56
+ expect { subject }.to raise_error IEX::Errors::SymbolNotFoundError, 'Symbol INVALID Not Found'
57
+ end
58
+ end
59
+ end
@@ -10,7 +10,7 @@ describe IEX::Resources::KeyStats do
10
10
  it 'retrieves a keyStats' do
11
11
  expect(subject.company_name).to eq 'Microsoft Corp.'
12
12
  expect(subject.market_cap).to eq 990_869_169_557
13
- expect(subject.market_cap_dollars).to eq '$990,869,169,557'
13
+ expect(subject.market_cap_dollar).to eq '$990,869,169,557'
14
14
  expect(subject.employees).to eq 133_074
15
15
  end
16
16
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iex-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.67.2
103
+ version: 0.72.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.67.2
110
+ version: 0.72.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: vcr
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -170,6 +170,7 @@ files:
170
170
  - lib/iex/endpoints/crypto.rb
171
171
  - lib/iex/endpoints/dividends.rb
172
172
  - lib/iex/endpoints/earnings.rb
173
+ - lib/iex/endpoints/income.rb
173
174
  - lib/iex/endpoints/key_stats.rb
174
175
  - lib/iex/endpoints/largest_trades.rb
175
176
  - lib/iex/endpoints/logo.rb
@@ -189,6 +190,7 @@ files:
189
190
  - lib/iex/resources/crypto.rb
190
191
  - lib/iex/resources/dividends.rb
191
192
  - lib/iex/resources/earnings.rb
193
+ - lib/iex/resources/income.rb
192
194
  - lib/iex/resources/key_stats.rb
193
195
  - lib/iex/resources/largest_trades.rb
194
196
  - lib/iex/resources/logo.rb
@@ -216,6 +218,8 @@ files:
216
218
  - spec/fixtures/iex/dividends/msft_invalid_range.yml
217
219
  - spec/fixtures/iex/earnings/invalid.yml
218
220
  - spec/fixtures/iex/earnings/msft.yml
221
+ - spec/fixtures/iex/income/invalid.yml
222
+ - spec/fixtures/iex/income/msft.yml
219
223
  - spec/fixtures/iex/key_stats/invalid.yml
220
224
  - spec/fixtures/iex/key_stats/msft.yml
221
225
  - spec/fixtures/iex/largest-trades/aapl.yml
@@ -239,6 +243,7 @@ files:
239
243
  - spec/iex/endpoints/crypto_spec.rb
240
244
  - spec/iex/endpoints/dividends_spec.rb
241
245
  - spec/iex/endpoints/earnings_spec.rb
246
+ - spec/iex/endpoints/income_spec.rb
242
247
  - spec/iex/endpoints/key_stats_spec.rb
243
248
  - spec/iex/endpoints/largest_trades_spec.rb
244
249
  - spec/iex/endpoints/logo_spec.rb
@@ -295,6 +300,8 @@ test_files:
295
300
  - spec/fixtures/iex/dividends/msft_invalid_range.yml
296
301
  - spec/fixtures/iex/earnings/invalid.yml
297
302
  - spec/fixtures/iex/earnings/msft.yml
303
+ - spec/fixtures/iex/income/invalid.yml
304
+ - spec/fixtures/iex/income/msft.yml
298
305
  - spec/fixtures/iex/key_stats/invalid.yml
299
306
  - spec/fixtures/iex/key_stats/msft.yml
300
307
  - spec/fixtures/iex/largest-trades/aapl.yml
@@ -318,6 +325,7 @@ test_files:
318
325
  - spec/iex/endpoints/crypto_spec.rb
319
326
  - spec/iex/endpoints/dividends_spec.rb
320
327
  - spec/iex/endpoints/earnings_spec.rb
328
+ - spec/iex/endpoints/income_spec.rb
321
329
  - spec/iex/endpoints/key_stats_spec.rb
322
330
  - spec/iex/endpoints/largest_trades_spec.rb
323
331
  - spec/iex/endpoints/logo_spec.rb