iex-ruby-client 1.0.1 → 1.1.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
  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