iex-ruby-client 1.0.0 → 1.2.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.
Files changed (69) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +4 -1
  4. data/CHANGELOG.md +37 -7
  5. data/Dangerfile +2 -2
  6. data/Gemfile +2 -2
  7. data/README.md +159 -37
  8. data/iex-ruby-client.gemspec +3 -2
  9. data/lib/iex-ruby-client.rb +1 -0
  10. data/lib/iex/api.rb +3 -0
  11. data/lib/iex/api/client.rb +3 -0
  12. data/lib/iex/api/config.rb +2 -0
  13. data/lib/iex/cloud/connection.rb +21 -19
  14. data/lib/iex/cloud/request.rb +1 -1
  15. data/lib/iex/cloud/response.rb +1 -1
  16. data/lib/iex/endpoints/chart.rb +5 -6
  17. data/lib/iex/endpoints/company.rb +1 -1
  18. data/lib/iex/endpoints/crypto.rb +1 -1
  19. data/lib/iex/endpoints/dividends.rb +1 -1
  20. data/lib/iex/endpoints/earnings.rb +1 -1
  21. data/lib/iex/endpoints/income.rb +13 -0
  22. data/lib/iex/endpoints/key_stats.rb +1 -1
  23. data/lib/iex/endpoints/largest_trades.rb +1 -1
  24. data/lib/iex/endpoints/logo.rb +1 -1
  25. data/lib/iex/endpoints/news.rb +1 -1
  26. data/lib/iex/endpoints/ohlc.rb +2 -2
  27. data/lib/iex/endpoints/price.rb +1 -1
  28. data/lib/iex/endpoints/quote.rb +1 -1
  29. data/lib/iex/endpoints/ref_data.rb +22 -0
  30. data/lib/iex/endpoints/sectors.rb +1 -1
  31. data/lib/iex/endpoints/stock_market.rb +11 -0
  32. data/lib/iex/resources.rb +3 -0
  33. data/lib/iex/resources/chart.rb +9 -14
  34. data/lib/iex/resources/company.rb +1 -0
  35. data/lib/iex/resources/income.rb +36 -0
  36. data/lib/iex/resources/key_stats.rb +14 -2
  37. data/lib/iex/resources/quote.rb +15 -5
  38. data/lib/iex/resources/resource.rb +1 -1
  39. data/lib/iex/resources/symbol.rb +10 -0
  40. data/lib/iex/resources/symbols.rb +19 -0
  41. data/lib/iex/version.rb +1 -1
  42. data/spec/fixtures/iex/chart/1d.yml +440 -473
  43. data/spec/fixtures/iex/chart/20190306.yml +440 -473
  44. data/spec/fixtures/iex/chart/bad_option.yml +47 -81
  45. data/spec/fixtures/iex/chart/chartInterval.yml +89 -122
  46. data/spec/fixtures/iex/chart/dynamic/1m.yml +73 -107
  47. data/spec/fixtures/iex/chart/invalid.yml +47 -81
  48. data/spec/fixtures/iex/chart/msft.yml +74 -107
  49. data/spec/fixtures/iex/income/invalid.yml +49 -0
  50. data/spec/fixtures/iex/income/msft.yml +53 -0
  51. data/spec/fixtures/iex/income/nsrgy.yml +55 -0
  52. data/spec/fixtures/iex/key_stats/invalid.yml +7 -41
  53. data/spec/fixtures/iex/key_stats/msft.yml +11 -43
  54. data/spec/fixtures/iex/ref-data/isin.yml +57 -0
  55. data/spec/fixtures/iex/ref-data/isin_mapped.yml +57 -0
  56. data/spec/fixtures/iex/ref-data/symbols.yml +9002 -0
  57. data/spec/fixtures/iex/ref-data/wrong_isin_mapped.yml +57 -0
  58. data/spec/fixtures/iex/stock_market/list_mostactive.yml +76 -0
  59. data/spec/iex/client_spec.rb +6 -1
  60. data/spec/iex/endpoints/chart_spec.rb +7 -7
  61. data/spec/iex/endpoints/company_spec.rb +1 -0
  62. data/spec/iex/endpoints/income_spec.rb +68 -0
  63. data/spec/iex/endpoints/key_stats_spec.rb +42 -29
  64. data/spec/iex/endpoints/quote_spec.rb +2 -0
  65. data/spec/iex/endpoints/ref_data_spec.rb +66 -0
  66. data/spec/iex/endpoints/stock_market_spec.rb +14 -0
  67. data/spec/spec_helper.rb +1 -0
  68. data/spec/support/vcr.rb +3 -0
  69. metadata +41 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: df29afbbbd95d15992840fdfe66fd8fa31ed1cee
4
- data.tar.gz: df551117e4b8dcfa5e223a765c1fa97e7bc4bedb
2
+ SHA256:
3
+ metadata.gz: 71bec851d78d50e5e8625f18e94212bd3d5825a1bf90a3809258e6ef88dcae34
4
+ data.tar.gz: b3f668404aada9eb2bcfa7f56767ce51083222c9f40a2fa95f15d005be9ee7ed
5
5
  SHA512:
6
- metadata.gz: b28d4ea0c36db77958e86a5c0ad347a04876a7bd8e51582f853435316444f0b7277c1a1b98bd299e4b77f89821ec89dc58e9923c45e631e961433dcc5dfe2aa9
7
- data.tar.gz: 34f851cf3b8e46f2475531717055c1a9cf9ca7abb96675fc50c88a766a5ff6f92f6f52459fda71e1d046eba4ade185d7e368639222195a662c8ee1bba957c4e9
6
+ metadata.gz: bf29091889a722d957ea6abceb5dc60d761fde868abc4212829c48723fc668870dbad46a75815823224bf324bd466fc917669792b320c85b0a907979b37008cc
7
+ data.tar.gz: 1222b56a8c47e79cd36b92b124128fa0162f8acbd9aa466f212cd0bc3bbe94036c2cc0c79243e348cf3b65ebb527ba47d46b91850dc8059cd081cab247568971
@@ -0,0 +1 @@
1
+ github: [dblock]
@@ -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,33 @@
1
+ ### 1.2.0 (2020/09/01)
2
+
3
+ * [#78](https://github.com/dblock/iex-ruby-client/pull/78): Added `Quote#extended_change_percent` and `Quote#extended_change_percent_s` properties to Quote - [@reddavis](https://github.com/reddavis).
4
+ * [#71](https://github.com/dblock/iex-ruby-client/pull/71): Added `symbols` resource - [@ryosuke-endo](https://github.com/ryosuke-endo).
5
+ * [#69](https://github.com/dblock/iex-ruby-client/pull/69): Fixed `ref_data_isin` request - [@bguban](https://github.com/bguban).
6
+ * [#72](https://github.com/dblock/iex-ruby-client/pull/72): Cache `Faraday::Connection` for persistent adapters - [@dblock](https://github.com/dblock).
7
+
8
+ ### 1.1.2 (2020/03/25)
9
+
10
+ * [#68](https://github.com/dblock/iex-ruby-client/pull/68): Fixed `ref_data_isin` request with wrong isin - [@bguban](https://github.com/bguban).
11
+ * [#67](https://github.com/dblock/iex-ruby-client/pull/67): Added required ruby version to gemspec - [@wdperson](https://github.com/wdperson).
12
+ * [#66](https://github.com/dblock/iex-ruby-client/pull/66): Fixed `KeyStats#week_52_change always` returns nil - [@brunjo](https://github.com/brunjo).
13
+ * [#65](https://github.com/dblock/iex-ruby-client/pull/65): Added `stock_market_list` - [@bguban](https://github.com/bguban).
14
+ * [#64](https://github.com/dblock/iex-ruby-client/pull/64): Added `ref_data_isin` - [@bguban](https://github.com/bguban).
15
+
16
+ ### 1.1.1 (2020/03/02)
17
+
18
+ * [#63](https://github.com/dblock/iex-ruby-client/pull/63): Allow direct API calls with support for secret_token - [@bguban](https://github.com/bguban).
19
+ * [#61](https://github.com/dblock/iex-ruby-client/pull/61): Fixed income endpoint if the api returns no result - [@brunjo](https://github.com/brunjo).
20
+ * [#57](https://github.com/dblock/iex-ruby-client/pull/57): Updated properties for chart api endpoint - [@brunjo](https://github.com/brunjo).
21
+
22
+ ### 1.1.0 (2019/07/08)
23
+
24
+ * [#55](https://github.com/dblock/iex-ruby-client/pull/55): Added `income` statement API and add `tags` to the `company` - [@bingxie](https://github.com/bingxie).
25
+
26
+ ### 1.0.1 (2019/07/08)
27
+
28
+ * [#50](https://github.com/dblock/iex-ruby-client/pull/50): Added missing properties for key stats API - [@bingxie](https://github.com/bingxie).
29
+ * Fixed `uninitialized constant IEX::Endpoints::Chart::Date (NameError)` - [@dblock](https://github.com/dblock).
30
+
1
31
  ### 1.0.0 (2019/04/23)
2
32
 
3
33
  * [#42](https://github.com/dblock/iex-ruby-client/pull/42): Migrated to the IEX Cloud API - [@bingxie](https://github.com/bingxie).
@@ -6,9 +36,9 @@
6
36
  ### 0.4.4 (2018/12/27)
7
37
 
8
38
  * [#39](https://github.com/dblock/iex-ruby-client/pull/39): Remove default range and use iextrading default range 1m instead in `IEX::Api::Dividends` - [@ildarkayumov](https://github.com/ildarkayumov).
9
- * [#37](https://github.com/dblock/iex-ruby-client/pull/37): Add `IEX::Resource::Crypto` - [@rodolfobandeira](https://github.com/rodolfobandeira).
10
- * [#34](https://github.com/dblock/iex-ruby-client/pull/34): Add `IEX::Resource::LargestTrades` - [@gil27](https://github.com/gil27).
11
- * [#32](https://github.com/dblock/iex-ruby-client/pull/32): Add `IEX::Resource::Sectors` - [@gil27](https://github.com/gil27).
39
+ * [#37](https://github.com/dblock/iex-ruby-client/pull/37): Added `IEX::Resource::Crypto` - [@rodolfobandeira](https://github.com/rodolfobandeira).
40
+ * [#34](https://github.com/dblock/iex-ruby-client/pull/34): Added `IEX::Resource::LargestTrades` - [@gil27](https://github.com/gil27).
41
+ * [#32](https://github.com/dblock/iex-ruby-client/pull/32): Added `IEX::Resource::Sectors` - [@gil27](https://github.com/gil27).
12
42
 
13
43
  ### 0.4.3 (2018/08/18)
14
44
 
@@ -16,7 +46,7 @@
16
46
 
17
47
  ### 0.4.2 (2018/08/14)
18
48
 
19
- * [#24](https://github.com/dblock/iex-ruby-client/pull/24): Add danger-toc and danger-changelog - [@rodolfobandeira](https://github.com/rodolfobandeira).
49
+ * [#24](https://github.com/dblock/iex-ruby-client/pull/24): Added danger-toc and danger-changelog - [@rodolfobandeira](https://github.com/rodolfobandeira).
20
50
  * [#21](https://github.com/dblock/iex-ruby-client/pull/21): Added `IEX::Resources::Dividends` - [@rodolfobandeira](https://github.com/rodolfobandeira).
21
51
 
22
52
  ### 0.4.1 (2018/08/07)
@@ -35,18 +65,18 @@
35
65
 
36
66
  ### 0.3.2 (2018/05/26)
37
67
 
38
- * Fix: undefined method > for nil:NilClass error - [@dblock](https://github.com/dblock).
68
+ * Fixed undefined method > for nil:NilClass error - [@dblock](https://github.com/dblock).
39
69
 
40
70
  ### 0.3.1 (2018/05/23)
41
71
 
42
- * [#3](https://github.com/dblock/iex-ruby-client/issues/3): Fix: do not error on undefined properties - [@dblock](https://github.com/dblock).
72
+ * [#3](https://github.com/dblock/iex-ruby-client/issues/3): Fixed do not error on undefined properties - [@dblock](https://github.com/dblock).
43
73
 
44
74
  ### 0.3.0 (2018/05/22)
45
75
 
46
76
  * Added `IEX::Resources::Chart#get` - [@dblock](https://github.com/dblock).
47
77
  * Added `IEX::Resources::News#get` - [@dblock](https://github.com/dblock).
48
78
  * Added `IEX::Resources::Price#get` - [@dblock](https://github.com/dblock).
49
- * Fix: added `IEX::Resources::Quote#extendedPrice` and `IEX::Resources::Quote#extendedPriceTime` - [@dblock](https://github.com/dblock).
79
+ * Fixed added `IEX::Resources::Quote#extendedPrice` and `IEX::Resources::Quote#extendedPriceTime` - [@dblock](https://github.com/dblock).
50
80
 
51
81
  ### 0.2.0 (2018/03/26)
52
82
 
data/Dangerfile CHANGED
@@ -1,2 +1,2 @@
1
- toc.check
2
- changelog.check
1
+ toc.check!
2
+ changelog.check!
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'http://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :test do
6
- gem 'danger-changelog', '~> 0.3.0'
7
- gem 'danger-toc', '~> 0.1'
6
+ gem 'danger-changelog', '~> 0.6.0'
7
+ gem 'danger-toc', '~> 0.2.0'
8
8
  gem 'pry'
9
9
  end
data/README.md CHANGED
@@ -22,10 +22,16 @@ 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)
29
+ - [ISIN Mapping](#isin-mapping)
30
+ - [Get Symbols](#get-symbols)
31
+ - [Get List](#get-list)
32
+ - [Other Requests](#other-requests)
28
33
  - [Configuration](#configuration)
34
+ - [Sandbox Environment](#sandbox-environment)
29
35
  - [Errors](#errors)
30
36
  - [SymbolNotFound](#symbolnotfound)
31
37
  - [PermissionDeniedError](#permissiondeniederror)
@@ -47,20 +53,26 @@ Run `bundle install`.
47
53
 
48
54
  ### Get an API Token
49
55
 
50
- Create an account on [IEX Cloud](https://iexcloud.io) and get a publishable token from the cloud console.
56
+ Create an account on [IEX Cloud](https://iexcloud.io) and get a publishable token from the IEX cloud console.
51
57
 
52
58
  ### Configure
53
59
 
54
60
  ```ruby
55
61
  IEX::Api.configure do |config|
56
- config.publishable_token = 'token' # defaults to ENV['IEX_API_PUBLISHABLE_TOKEN']
62
+ config.publishable_token = 'publishable_token' # defaults to ENV['IEX_API_PUBLISHABLE_TOKEN']
63
+ config.secret_token = 'secret_token' # defaults to ENV['IEX_API_SECRET_TOKEN']
64
+ config.endpoint = 'https://cloud.iexapis.com/v1' # use 'https://sandbox.iexapis.com/v1' for Sandbox
57
65
  end
58
66
  ```
59
67
 
60
68
  You can also configure an instance of a client directly.
61
69
 
62
70
  ```ruby
63
- client = IEX::Api::Client.new(publishable_token: 'token')
71
+ client = IEX::Api::Client.new(
72
+ publishable_token: 'publishable_token',
73
+ secret_token: 'secret_token',
74
+ endpoint: 'https://cloud.iexapis.com/v1'
75
+ )
64
76
  ```
65
77
 
66
78
  ### Get a Single Price
@@ -68,7 +80,7 @@ client = IEX::Api::Client.new(publishable_token: 'token')
68
80
  Fetches a single number, being the IEX real time price, the 15 minute delayed market price, or the previous close price.
69
81
 
70
82
  ```ruby
71
- client.get('MSFT') # 93.78
83
+ client.price('MSFT') # 93.78
72
84
  ```
73
85
 
74
86
  See [#price](https://iexcloud.io/docs/api/#price) for detailed documentation.
@@ -93,7 +105,7 @@ See [#quote](https://iexcloud.io/docs/api/#quote) for detailed documentation or
93
105
  Fetches a single stock OHLC price. Open and Close prices contain timestamp.
94
106
 
95
107
  ```ruby
96
- ohlc = client.ohlc.get('MSFT')
108
+ ohlc = client.ohlc('MSFT')
97
109
 
98
110
  ohlc.close.price # 90.165
99
111
  ohlc.close.time #
@@ -186,6 +198,19 @@ client.chart('MSFT', Date.new(2018, 3, 26)) # a specific date
186
198
  client.chart('MSFT', '1d', chart_interval: 10) # every n-th data point
187
199
  ```
188
200
 
201
+ Note that calling the chart API weighs more than 1 IEX message (you pay more than 1 call).
202
+
203
+ ```
204
+ # 1 message per minute capped at 50 messages to intraday_prices
205
+ client.chart('MSFT', '1d')
206
+
207
+ # 2x22 trading days = 44 messages to historical_close_prices
208
+ client.chart('MSFT', '1m', chart_close_only: true)
209
+
210
+ # 2x251 trading days = 502 messages to historical_close_prices
211
+ client.chart('MSFT', '1y', chart_close_only: true)
212
+ ```
213
+
189
214
  ### Get Key Stats
190
215
 
191
216
  Fetches company's key stats for a symbol.
@@ -193,35 +218,48 @@ Fetches company's key stats for a symbol.
193
218
  ```ruby
194
219
  key_stats = client.key_stats('MSFT')
195
220
 
196
- key_stats.market_cap # 825814890000
197
- key_stats.market_cap_dollars # '$825,814,890,000'
198
- key_stats.week_52_high # 111.15
199
- key_stats.week_52_high_dollar # '$111.15'
200
- key_stats.week_52_low # 71.28
201
- key_stats.week_52_low_dollar # '$71.28'
202
- key_stats.week_52_change_dollar # '$51.77'
203
- key_stats.dividend_yield # 1.5617738
204
- key_stats.ex_dividend_date # '2018-08-15 00:00:00.0'
205
- key_stats.shares_outstanding # 7677000000
206
- key_stats.float # 7217387757
207
- key_stats.ttm_eps # 3.51
208
- key_stats.day_200_moving_avg # 91.99065
209
- key_stats.day_50_moving_avg # 102.2528
210
- key_stats.year_5_change_percent # 2.85141424991049
211
- key_stats.year_5_change_percent_s # '+285.14%'
212
- key_stats.year_2_change_percent # 0.9732002824884664
213
- key_stats.year_2_change_percent_s # '+97.32%'
214
- key_stats.year_1_change_percent # 0.5200287133805482
215
- key_stats.year_1_change_percent_s # '+52.00%'
216
- key_stats.ytd_change_percent # 0.2628699562098638
217
- key_stats.month_6_change_percent # 0.23345097958275707
218
- key_stats.month_6_change_percent_s # '+23.35%'
219
- key_stats.month_3_change_percent # 0.14846686026648437
220
- key_stats.month_3_change_percent_s # '+14.85%'
221
- key_stats.month_1_change_percent # 0.08601716304896513
222
- key_stats.month_1_change_percent_s # '+8.60%'
223
- key_stats.day_5_change_percent # -0.0010215453194652084
224
- key_stats.day_5_change_percent_s # '-0.10%'
221
+ key_stats.week_52_change_dollar # "$0.37"
222
+ key_stats.week_52_high # 136.04
223
+ key_stats.week_52_high_dollar # "$136.04"
224
+ key_stats.week_52_low # 95.92,
225
+ key_stats.week_52_low_dollar # "$95.92"
226
+ key_stats.market_cap # 990869169557
227
+ key_stats.market_cap_dollar # "$990,869,169,557"
228
+ key_stats.employees # 133074
229
+ key_stats.day_200_moving_avg # 112.43
230
+ key_stats.day_50_moving_avg # 121
231
+ key_stats.float # 7694414092
232
+ key_stats.avg_10_volume # 25160156.2
233
+ key_stats.avg_30_volume # 23123700.13
234
+ key_stats.ttm_eps # 4.66
235
+ key_stats.ttm_dividend_rate # 1.8
236
+ key_stats.company_name # "Microsoft Corp."
237
+ key_stats.shares_outstanding # 7849945172
238
+ key_stats.max_change_percent # 4.355607
239
+ key_stats.year_5_change_percent # 2.32987
240
+ key_stats.year_5_change_percent_s # "+232.99%"
241
+ key_stats.year_2_change_percent # 0.84983
242
+ key_stats.year_2_change_percent_s # "+84.98%"
243
+ key_stats.year_1_change_percent # 0.383503
244
+ key_stats.year_1_change_percent_s # "+38.35%"
245
+ key_stats.ytd_change_percent # 0.270151
246
+ key_stats.ytd_change_percent_s # "+27.02%"
247
+ key_stats.month_6_change_percent # 0.208977
248
+ key_stats.month_6_change_percent_s # "+20.90%"
249
+ key_stats.month_3_change_percent # 0.212188
250
+ key_stats.month_3_change_percent_s # "+21.22%"
251
+ key_stats.month_1_change_percent # 0.076335
252
+ key_stats.month_1_change_percent_s # "+7.63%"
253
+ key_stats.day_30_change_percent # 0.089589
254
+ key_stats.day_30_change_percent_s # "+8.96%"
255
+ key_stats.day_5_change_percent # -0.010013
256
+ key_stats.day_5_change_percent_s # "-1.00%"
257
+ key_stats.next_dividend_date # "2019-05-21"
258
+ key_stats.dividend_yield # 0.014087248841960684
259
+ key_stats.next_earnings_date # "2019-07-29"
260
+ key_stats.ex_dividend_date # "2019-05-24"
261
+ key_stats.pe_ratio # 29.47
262
+ key_stats.beta # 1.4135449089973444
225
263
  ```
226
264
 
227
265
  See [#key-stats](https://iexcloud.io/docs/api/#key-stats) for detailed documentation or [key_stats.rb](lib/iex/resources/key_stats.rb) for returned fields.
@@ -263,6 +301,25 @@ earnings.year_ago_change_percent_s # '+15.31%'
263
301
 
264
302
  See [#earnings](https://iexcloud.io/docs/api/#earnings) for detailed documentation or [earnings.rb](lib/iex/resources/earnings.rb) for returned fields.
265
303
 
304
+ ### Get Income Statement
305
+
306
+ Fetches income statement for a symbol.
307
+
308
+ ```ruby
309
+ income = client.income('MSFT')
310
+
311
+ income.report_date # '2019-03-31'
312
+ income.total_revenue # 30_505_000_000
313
+ income.total_revenue_dollar # '$30,505,000,000'
314
+ income.cost_of_revenue # 10_170_000_000
315
+ income.cost_of_revenue_dollar # '$10,170,000,000'
316
+ income.gross_profit # 20_335_000_000
317
+ income.gross_profit_dollar # '$20,335,000,000'
318
+ ...
319
+ ```
320
+
321
+ See [#income-statement](https://iexcloud.io/docs/api/#income-statement) for detailed documentation or [income.rb](lib/iex/resources/income.rb) for returned fields.
322
+
266
323
  ### Get Sector Performance
267
324
 
268
325
  Fetches latest sector's performance.
@@ -319,20 +376,77 @@ crypto.high_dollar #'$3,590'
319
376
 
320
377
  See [#crypto](https://iexcloud.io/docs/api/#crypto) for detailed documentation or [crypto.rb](lib/iex/resources/crypto.rb) for returned fields.
321
378
 
379
+ ### ISIN Mapping
380
+
381
+ Converts ISIN to IEX Cloud symbols.
382
+
383
+ ```ruby
384
+ symbols = client.ref_data_isin(['US0378331005'])
385
+
386
+ symbols.first.exchange # NAS
387
+ symbols.first.iex_id # IEX_4D48333344362D52
388
+ symbols.first.region # US
389
+ symbols.first.symbol # AAPL
390
+ ```
391
+
392
+ You can use `mapped: true` option to receive symbols grouped by their ISINs.
393
+
394
+ ```ruby
395
+ client.ref_data_isin(['US0378331005', 'US5949181045'], mapped: true) # {'US0378331005' => [...], 'US5949181045' => [...]}
396
+ ```
397
+
398
+ See [#ISIN Mapping](https://iexcloud.io/docs/api/#isin-mapping) for detailed documentation or [isin_mapping.rb](lib/iex/resources/isin_mapping.rb) for returned fields.
399
+
400
+ ### Get Symbols
401
+
402
+ Returns an array of symbols
403
+
404
+ ```ruby
405
+ symbols = client.ref_data_symbols()
406
+
407
+ symbol = symbols.first
408
+ symbol.exchange # NAS
409
+ symbol.iex_id # IEX_46574843354B2D52
410
+ symbol.region # US
411
+ symbol.symbol # A
412
+ ```
413
+
414
+ See [#symbols](https://iexcloud.io/docs/api/#symbols) for detailed documentation or [symbols.rb](lib/iex/resources/symbols.rb) for returned fields.
415
+
416
+ ### Get List
417
+
418
+ Returns an array of quotes for the top 10 symbols in a specified list.
419
+
420
+ ```ruby
421
+ client.stock_market_list(:mostactive) # [{symbol: 'AAPL', ...}, {...}]
422
+ ```
423
+
424
+ See [#list](https://iexcloud.io/docs/api/#list) for detailed documentation or [quote.rb](lib/iex/resources/quote.rb) for returned fields.
425
+
426
+ ### Other Requests
427
+
428
+ Public endpoints that aren't yet supported by the client can be called using `client.get`, `client.post`, `client.put`
429
+ and `client.delete` methods. Pass the required token explicitly:
430
+
431
+ ```ruby
432
+ client.post('ref-data/isin', isin: ['US0378331005'], token: 'secret_token') # [{'exchange' => 'NAS', ..., 'symbol' => 'AAPL'}, {'exchange' => 'ETR', ..., 'symbol' => 'APC-GY']
433
+ ```
434
+
322
435
  ## Configuration
323
436
 
324
437
  You can configure client options globally or directly with a `IEX::Api::Client` instance.
325
438
 
326
439
  ```ruby
327
440
  IEX::Api::Client.configure do |config|
328
- config.user_agent = 'IEX Ruby Client/1.0.0'
441
+ config.publishable_token = ENV['IEX_API_PUBLISHABLE_TOKEN']
442
+ config.endpoint = 'https://sandbox.iexapis.com/v1' # use sandbox environment
329
443
  end
330
444
  ```
331
445
 
332
446
  ```ruby
333
447
  client = IEX::Api::Client.new(
334
- publishable_token: 'token',
335
- user_agent: 'IEX Ruby Client/1.0.0'
448
+ publishable_token: ENV['IEX_API_PUBLISHABLE_TOKEN'],
449
+ endpoint: 'https://cloud.iexapis.com/v1'
336
450
  )
337
451
  ```
338
452
 
@@ -350,6 +464,14 @@ open_timeout | Optional connection open timeout in seconds.
350
464
  publishable_token | IEX Cloud API publishable token.
351
465
  endpoint | Defaults to `https://cloud.iexapis.com/v1`.
352
466
 
467
+ ## Sandbox Environment
468
+
469
+ IEX recommends you use a sandbox token and endpoint for testing.
470
+
471
+ However, please note that data in the IEX sandbox environment is scrambled. Therefore elements such as company and people names, descriptions, tags, and website URLs don't render any coherent data.
472
+
473
+ See [IEX sandbox environment](https://intercom.help/iexcloud/en/articles/2915433-testing-with-the-iex-cloud-sandbox) for more information.
474
+
353
475
  ## Errors
354
476
 
355
477
  ### SymbolNotFound
@@ -9,19 +9,20 @@ Gem::Specification.new do |s|
9
9
  s.email = 'dblock@dblock.org'
10
10
  s.platform = Gem::Platform::RUBY
11
11
  s.required_rubygems_version = '>= 1.3.6'
12
+ s.required_ruby_version = '>= 2.3.0'
12
13
  s.files = `git ls-files`.split("\n")
13
14
  s.test_files = `git ls-files -- spec/*`.split("\n")
14
15
  s.require_paths = ['lib']
15
16
  s.homepage = 'http://github.com/dblock/iex-ruby-client'
16
17
  s.licenses = ['MIT']
17
18
  s.summary = 'IEX Finance API Ruby client with support for retrieving stock quotes.'
18
- s.add_dependency 'faraday', '>= 0.9'
19
+ s.add_dependency 'faraday', '>= 0.17'
19
20
  s.add_dependency 'faraday_middleware'
20
21
  s.add_dependency 'hashie'
21
22
  s.add_dependency 'money_helper'
22
23
  s.add_development_dependency 'rake', '~> 10'
23
24
  s.add_development_dependency 'rspec'
24
- s.add_development_dependency 'rubocop', '0.67.2'
25
+ s.add_development_dependency 'rubocop', '0.72.0'
25
26
  s.add_development_dependency 'vcr'
26
27
  s.add_development_dependency 'webmock'
27
28
  end
@@ -3,6 +3,7 @@ require 'faraday_middleware'
3
3
  require 'faraday_middleware/response_middleware'
4
4
  require 'hashie'
5
5
  require 'money_helper'
6
+ require 'date'
6
7
 
7
8
  require_relative 'iex/version'
8
9
  require_relative 'iex/errors'
@@ -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'
@@ -11,6 +12,8 @@ require_relative 'endpoints/price'
11
12
  require_relative 'endpoints/quote'
12
13
  require_relative 'endpoints/sectors'
13
14
  require_relative 'endpoints/crypto'
15
+ require_relative 'endpoints/ref_data'
16
+ require_relative 'endpoints/stock_market'
14
17
 
15
18
  require_relative 'api/config'
16
19
  require_relative 'api/client'