finnhub_ruby 1.1.19 → 2.0.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 (383) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +39 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +148 -0
  5. data/.travis.yml +14 -0
  6. data/README.md +4 -4
  7. data/docs/AirlinePriceIndex.md +22 -0
  8. data/docs/AirlinePriceIndexData.md +24 -0
  9. data/docs/CompanyESG2.md +28 -0
  10. data/docs/CompanyProfile.md +6 -0
  11. data/docs/CountryMetadata.md +9 -1
  12. data/docs/DefaultApi.md +582 -38
  13. data/docs/ETFProfileData.md +2 -0
  14. data/docs/EarningResult.md +2 -2
  15. data/docs/EarningsEstimatesInfo.md +5 -1
  16. data/docs/EbitEstimatesInfo.md +5 -1
  17. data/docs/EbitdaEstimatesInfo.md +5 -1
  18. data/docs/EmployeeCount.md +20 -0
  19. data/docs/FilingResponse.md +1 -1
  20. data/docs/HistoricalCompanyESG.md +20 -0
  21. data/docs/HistoricalEmployeeCount.md +20 -0
  22. data/docs/HistoricalMarketCapData.md +22 -0
  23. data/docs/IndicesConstituents.md +3 -1
  24. data/docs/IndicesConstituentsBreakdown.md +28 -0
  25. data/docs/MarketCapData.md +20 -0
  26. data/docs/MarketHoliday.md +22 -0
  27. data/docs/MarketHolidayData.md +22 -0
  28. data/docs/MarketStatus.md +28 -0
  29. data/docs/MutualFundProfileData.md +2 -0
  30. data/docs/PriceTarget.md +2 -0
  31. data/docs/RevenueEstimatesInfo.md +5 -1
  32. data/docs/SentimentContent.md +30 -0
  33. data/docs/SocialSentiment.md +2 -4
  34. data/finnhub_ruby.gemspec +9 -9
  35. data/git_push.sh +0 -0
  36. data/lib/finnhub_ruby/version.rb +2 -14
  37. data/lib/finnhub_ruby.rb +519 -178
  38. metadata +29 -521
  39. data/finnhub_ruby-1.1.10.gem +0 -0
  40. data/finnhub_ruby-1.1.11.gem +0 -0
  41. data/finnhub_ruby-1.1.12.gem +0 -0
  42. data/finnhub_ruby-1.1.13.gem +0 -0
  43. data/finnhub_ruby-1.1.14.gem +0 -0
  44. data/finnhub_ruby-1.1.15.gem +0 -0
  45. data/finnhub_ruby-1.1.16.gem +0 -0
  46. data/finnhub_ruby-1.1.17.gem +0 -0
  47. data/finnhub_ruby-1.1.18.gem +0 -0
  48. data/finnhub_ruby-1.1.7.gem +0 -0
  49. data/finnhub_ruby-1.1.8.gem +0 -0
  50. data/finnhub_ruby-1.1.9.gem +0 -0
  51. data/lib/finnhub_ruby/api/default_api.rb +0 -6370
  52. data/lib/finnhub_ruby/api_client.rb +0 -391
  53. data/lib/finnhub_ruby/api_error.rb +0 -57
  54. data/lib/finnhub_ruby/configuration.rb +0 -277
  55. data/lib/finnhub_ruby/models/aggregate_indicators.rb +0 -227
  56. data/lib/finnhub_ruby/models/basic_financials.rb +0 -247
  57. data/lib/finnhub_ruby/models/bond_candles.rb +0 -243
  58. data/lib/finnhub_ruby/models/bond_profile.rb +0 -419
  59. data/lib/finnhub_ruby/models/bond_tick_data.rb +0 -347
  60. data/lib/finnhub_ruby/models/bond_yield_curve.rb +0 -231
  61. data/lib/finnhub_ruby/models/bond_yield_curve_info.rb +0 -229
  62. data/lib/finnhub_ruby/models/breakdown_item.rb +0 -228
  63. data/lib/finnhub_ruby/models/company.rb +0 -279
  64. data/lib/finnhub_ruby/models/company_earnings_quality_score.rb +0 -241
  65. data/lib/finnhub_ruby/models/company_earnings_quality_score_data.rb +0 -279
  66. data/lib/finnhub_ruby/models/company_esg.rb +0 -268
  67. data/lib/finnhub_ruby/models/company_executive.rb +0 -231
  68. data/lib/finnhub_ruby/models/company_news.rb +0 -299
  69. data/lib/finnhub_ruby/models/company_news_statistics.rb +0 -239
  70. data/lib/finnhub_ruby/models/company_profile.rb +0 -509
  71. data/lib/finnhub_ruby/models/company_profile2.rb +0 -329
  72. data/lib/finnhub_ruby/models/congressional_trading.rb +0 -231
  73. data/lib/finnhub_ruby/models/congressional_transaction.rb +0 -309
  74. data/lib/finnhub_ruby/models/country_metadata.rb +0 -289
  75. data/lib/finnhub_ruby/models/covid_info.rb +0 -249
  76. data/lib/finnhub_ruby/models/crypto_candles.rb +0 -291
  77. data/lib/finnhub_ruby/models/crypto_profile.rb +0 -319
  78. data/lib/finnhub_ruby/models/crypto_symbol.rb +0 -239
  79. data/lib/finnhub_ruby/models/development.rb +0 -259
  80. data/lib/finnhub_ruby/models/dividends.rb +0 -299
  81. data/lib/finnhub_ruby/models/dividends2.rb +0 -231
  82. data/lib/finnhub_ruby/models/dividends2_basic.rb +0 -231
  83. data/lib/finnhub_ruby/models/dividends2_info.rb +0 -229
  84. data/lib/finnhub_ruby/models/document_response.rb +0 -271
  85. data/lib/finnhub_ruby/models/earning_estimate.rb +0 -259
  86. data/lib/finnhub_ruby/models/earning_release.rb +0 -299
  87. data/lib/finnhub_ruby/models/earning_result.rb +0 -289
  88. data/lib/finnhub_ruby/models/earnings_calendar.rb +0 -221
  89. data/lib/finnhub_ruby/models/earnings_call_transcripts.rb +0 -303
  90. data/lib/finnhub_ruby/models/earnings_call_transcripts_list.rb +0 -231
  91. data/lib/finnhub_ruby/models/earnings_estimates.rb +0 -241
  92. data/lib/finnhub_ruby/models/earnings_estimates_info.rb +0 -259
  93. data/lib/finnhub_ruby/models/ebit_estimates.rb +0 -241
  94. data/lib/finnhub_ruby/models/ebit_estimates_info.rb +0 -259
  95. data/lib/finnhub_ruby/models/ebitda_estimates.rb +0 -241
  96. data/lib/finnhub_ruby/models/ebitda_estimates_info.rb +0 -259
  97. data/lib/finnhub_ruby/models/economic_calendar.rb +0 -221
  98. data/lib/finnhub_ruby/models/economic_code.rb +0 -249
  99. data/lib/finnhub_ruby/models/economic_data.rb +0 -231
  100. data/lib/finnhub_ruby/models/economic_data_info.rb +0 -229
  101. data/lib/finnhub_ruby/models/economic_event.rb +0 -289
  102. data/lib/finnhub_ruby/models/estimate.rb +0 -259
  103. data/lib/finnhub_ruby/models/et_fs_country_exposure.rb +0 -219
  104. data/lib/finnhub_ruby/models/et_fs_holdings.rb +0 -219
  105. data/lib/finnhub_ruby/models/et_fs_industry_exposure.rb +0 -219
  106. data/lib/finnhub_ruby/models/et_fs_profile.rb +0 -216
  107. data/lib/finnhub_ruby/models/etf_country_exposure_data.rb +0 -229
  108. data/lib/finnhub_ruby/models/etf_holdings_data.rb +0 -289
  109. data/lib/finnhub_ruby/models/etf_profile_data.rb +0 -419
  110. data/lib/finnhub_ruby/models/etf_sector_exposure_data.rb +0 -229
  111. data/lib/finnhub_ruby/models/etfs_country_exposure.rb +0 -231
  112. data/lib/finnhub_ruby/models/etfs_holdings.rb +0 -251
  113. data/lib/finnhub_ruby/models/etfs_profile.rb +0 -228
  114. data/lib/finnhub_ruby/models/etfs_sector_exposure.rb +0 -231
  115. data/lib/finnhub_ruby/models/excerpt_response.rb +0 -249
  116. data/lib/finnhub_ruby/models/fda_comittee_meeting.rb +0 -249
  117. data/lib/finnhub_ruby/models/filing.rb +0 -289
  118. data/lib/finnhub_ruby/models/filing_response.rb +0 -339
  119. data/lib/finnhub_ruby/models/filing_sentiment.rb +0 -299
  120. data/lib/finnhub_ruby/models/financial_statements.rb +0 -231
  121. data/lib/finnhub_ruby/models/financials_as_reported.rb +0 -241
  122. data/lib/finnhub_ruby/models/forex_candles.rb +0 -291
  123. data/lib/finnhub_ruby/models/forex_symbol.rb +0 -239
  124. data/lib/finnhub_ruby/models/forexrates.rb +0 -228
  125. data/lib/finnhub_ruby/models/fund_ownership.rb +0 -231
  126. data/lib/finnhub_ruby/models/fund_ownership_info.rb +0 -259
  127. data/lib/finnhub_ruby/models/historical_nbbo.rb +0 -345
  128. data/lib/finnhub_ruby/models/in_filing_response.rb +0 -351
  129. data/lib/finnhub_ruby/models/in_filing_search_body.rb +0 -239
  130. data/lib/finnhub_ruby/models/index_historical_constituent.rb +0 -239
  131. data/lib/finnhub_ruby/models/indicator.rb +0 -239
  132. data/lib/finnhub_ruby/models/indices_constituents.rb +0 -231
  133. data/lib/finnhub_ruby/models/indices_historical_constituents.rb +0 -231
  134. data/lib/finnhub_ruby/models/insider_sentiments.rb +0 -231
  135. data/lib/finnhub_ruby/models/insider_sentiments_data.rb +0 -259
  136. data/lib/finnhub_ruby/models/insider_transactions.rb +0 -231
  137. data/lib/finnhub_ruby/models/institutional_ownership.rb +0 -241
  138. data/lib/finnhub_ruby/models/institutional_ownership_group.rb +0 -231
  139. data/lib/finnhub_ruby/models/institutional_ownership_info.rb +0 -309
  140. data/lib/finnhub_ruby/models/institutional_portfolio.rb +0 -241
  141. data/lib/finnhub_ruby/models/institutional_portfolio_group.rb +0 -241
  142. data/lib/finnhub_ruby/models/institutional_portfolio_info.rb +0 -319
  143. data/lib/finnhub_ruby/models/institutional_profile.rb +0 -231
  144. data/lib/finnhub_ruby/models/institutional_profile_info.rb +0 -269
  145. data/lib/finnhub_ruby/models/international_filing.rb +0 -299
  146. data/lib/finnhub_ruby/models/investment_theme_portfolio.rb +0 -219
  147. data/lib/finnhub_ruby/models/investment_themes.rb +0 -231
  148. data/lib/finnhub_ruby/models/investment_themes_thematic_investing.rb +0 -231
  149. data/lib/finnhub_ruby/models/investor.rb +0 -249
  150. data/lib/finnhub_ruby/models/investors_ownership.rb +0 -219
  151. data/lib/finnhub_ruby/models/ipo_calendar.rb +0 -221
  152. data/lib/finnhub_ruby/models/ipo_event.rb +0 -289
  153. data/lib/finnhub_ruby/models/isin_change.rb +0 -241
  154. data/lib/finnhub_ruby/models/isin_change_info.rb +0 -239
  155. data/lib/finnhub_ruby/models/key_customers_suppliers.rb +0 -329
  156. data/lib/finnhub_ruby/models/last_bid_ask.rb +0 -259
  157. data/lib/finnhub_ruby/models/lobbying_data.rb +0 -359
  158. data/lib/finnhub_ruby/models/lobbying_result.rb +0 -231
  159. data/lib/finnhub_ruby/models/major_developments.rb +0 -219
  160. data/lib/finnhub_ruby/models/major_press_releases.rb +0 -231
  161. data/lib/finnhub_ruby/models/market_news.rb +0 -299
  162. data/lib/finnhub_ruby/models/mutual_fund_country_exposure.rb +0 -231
  163. data/lib/finnhub_ruby/models/mutual_fund_country_exposure_data.rb +0 -229
  164. data/lib/finnhub_ruby/models/mutual_fund_eet.rb +0 -228
  165. data/lib/finnhub_ruby/models/mutual_fund_eet_pai.rb +0 -228
  166. data/lib/finnhub_ruby/models/mutual_fund_holdings.rb +0 -251
  167. data/lib/finnhub_ruby/models/mutual_fund_holdings_data.rb +0 -289
  168. data/lib/finnhub_ruby/models/mutual_fund_profile.rb +0 -228
  169. data/lib/finnhub_ruby/models/mutual_fund_profile_data.rb +0 -479
  170. data/lib/finnhub_ruby/models/mutual_fund_sector_exposure.rb +0 -231
  171. data/lib/finnhub_ruby/models/mutual_fund_sector_exposure_data.rb +0 -229
  172. data/lib/finnhub_ruby/models/mutual_funds_country_exposure.rb +0 -231
  173. data/lib/finnhub_ruby/models/mutual_funds_holdings.rb +0 -251
  174. data/lib/finnhub_ruby/models/mutual_funds_profile.rb +0 -228
  175. data/lib/finnhub_ruby/models/news.rb +0 -299
  176. data/lib/finnhub_ruby/models/news_sentiment.rb +0 -267
  177. data/lib/finnhub_ruby/models/ownership.rb +0 -231
  178. data/lib/finnhub_ruby/models/ownership_info.rb +0 -249
  179. data/lib/finnhub_ruby/models/pattern_recognition.rb +0 -221
  180. data/lib/finnhub_ruby/models/press_release.rb +0 -231
  181. data/lib/finnhub_ruby/models/price_metrics.rb +0 -238
  182. data/lib/finnhub_ruby/models/price_target.rb +0 -269
  183. data/lib/finnhub_ruby/models/quote.rb +0 -279
  184. data/lib/finnhub_ruby/models/recommendation_trend.rb +0 -279
  185. data/lib/finnhub_ruby/models/reddit_sentiment_content.rb +0 -279
  186. data/lib/finnhub_ruby/models/report.rb +0 -318
  187. data/lib/finnhub_ruby/models/revenue_breakdown.rb +0 -241
  188. data/lib/finnhub_ruby/models/revenue_estimates.rb +0 -241
  189. data/lib/finnhub_ruby/models/revenue_estimates_info.rb +0 -259
  190. data/lib/finnhub_ruby/models/search_body.rb +0 -434
  191. data/lib/finnhub_ruby/models/search_filter.rb +0 -229
  192. data/lib/finnhub_ruby/models/search_response.rb +0 -251
  193. data/lib/finnhub_ruby/models/sec_sentiment_analysis.rb +0 -248
  194. data/lib/finnhub_ruby/models/sector_metric.rb +0 -231
  195. data/lib/finnhub_ruby/models/sector_metric_data.rb +0 -229
  196. data/lib/finnhub_ruby/models/sentiment.rb +0 -229
  197. data/lib/finnhub_ruby/models/similarity_index.rb +0 -241
  198. data/lib/finnhub_ruby/models/similarity_index_info.rb +0 -329
  199. data/lib/finnhub_ruby/models/social_sentiment.rb +0 -243
  200. data/lib/finnhub_ruby/models/split.rb +0 -249
  201. data/lib/finnhub_ruby/models/stock.rb +0 -249
  202. data/lib/finnhub_ruby/models/stock_candles.rb +0 -291
  203. data/lib/finnhub_ruby/models/stock_symbol.rb +0 -309
  204. data/lib/finnhub_ruby/models/stock_transcripts.rb +0 -259
  205. data/lib/finnhub_ruby/models/supply_chain_relationships.rb +0 -231
  206. data/lib/finnhub_ruby/models/support_resistance.rb +0 -221
  207. data/lib/finnhub_ruby/models/symbol_change.rb +0 -241
  208. data/lib/finnhub_ruby/models/symbol_change_info.rb +0 -239
  209. data/lib/finnhub_ruby/models/symbol_lookup.rb +0 -231
  210. data/lib/finnhub_ruby/models/symbol_lookup_info.rb +0 -249
  211. data/lib/finnhub_ruby/models/technical_analysis.rb +0 -228
  212. data/lib/finnhub_ruby/models/tick_data.rb +0 -309
  213. data/lib/finnhub_ruby/models/transactions.rb +0 -289
  214. data/lib/finnhub_ruby/models/transcript_content.rb +0 -241
  215. data/lib/finnhub_ruby/models/transcript_participant.rb +0 -239
  216. data/lib/finnhub_ruby/models/trend.rb +0 -229
  217. data/lib/finnhub_ruby/models/twitter_sentiment_content.rb +0 -279
  218. data/lib/finnhub_ruby/models/upgrade_downgrade.rb +0 -269
  219. data/lib/finnhub_ruby/models/usa_spending.rb +0 -409
  220. data/lib/finnhub_ruby/models/usa_spending_result.rb +0 -231
  221. data/lib/finnhub_ruby/models/uspto_patent.rb +0 -301
  222. data/lib/finnhub_ruby/models/uspto_patent_result.rb +0 -231
  223. data/lib/finnhub_ruby/models/visa_application.rb +0 -439
  224. data/lib/finnhub_ruby/models/visa_application_result.rb +0 -231
  225. data/spec/api/default_api_spec.rb +0 -724
  226. data/spec/api_client_spec.rb +0 -226
  227. data/spec/configuration_spec.rb +0 -42
  228. data/spec/models/aggregate_indicators_spec.rb +0 -40
  229. data/spec/models/basic_financials_spec.rb +0 -52
  230. data/spec/models/bond_candles_spec.rb +0 -46
  231. data/spec/models/bond_profile_spec.rb +0 -154
  232. data/spec/models/bond_tick_data_spec.rb +0 -82
  233. data/spec/models/bond_yield_curve_info_spec.rb +0 -40
  234. data/spec/models/bond_yield_curve_spec.rb +0 -40
  235. data/spec/models/breakdown_item_spec.rb +0 -40
  236. data/spec/models/company_earnings_quality_score_data_spec.rb +0 -70
  237. data/spec/models/company_earnings_quality_score_spec.rb +0 -46
  238. data/spec/models/company_esg_spec.rb +0 -64
  239. data/spec/models/company_executive_spec.rb +0 -40
  240. data/spec/models/company_news_spec.rb +0 -82
  241. data/spec/models/company_news_statistics_spec.rb +0 -46
  242. data/spec/models/company_profile2_spec.rb +0 -100
  243. data/spec/models/company_profile_spec.rb +0 -196
  244. data/spec/models/company_spec.rb +0 -70
  245. data/spec/models/congressional_trading_spec.rb +0 -40
  246. data/spec/models/congressional_transaction_spec.rb +0 -88
  247. data/spec/models/country_metadata_spec.rb +0 -64
  248. data/spec/models/covid_info_spec.rb +0 -52
  249. data/spec/models/crypto_candles_spec.rb +0 -70
  250. data/spec/models/crypto_profile_spec.rb +0 -94
  251. data/spec/models/crypto_symbol_spec.rb +0 -46
  252. data/spec/models/development_spec.rb +0 -58
  253. data/spec/models/dividends2_info_spec.rb +0 -40
  254. data/spec/models/dividends2_spec.rb +0 -40
  255. data/spec/models/dividends_spec.rb +0 -76
  256. data/spec/models/document_response_spec.rb +0 -64
  257. data/spec/models/earning_estimate_spec.rb +0 -58
  258. data/spec/models/earning_release_spec.rb +0 -82
  259. data/spec/models/earning_result_spec.rb +0 -64
  260. data/spec/models/earnings_calendar_spec.rb +0 -34
  261. data/spec/models/earnings_call_transcripts_list_spec.rb +0 -40
  262. data/spec/models/earnings_call_transcripts_spec.rb +0 -82
  263. data/spec/models/earnings_estimates_info_spec.rb +0 -58
  264. data/spec/models/earnings_estimates_spec.rb +0 -46
  265. data/spec/models/ebit_estimates_info_spec.rb +0 -58
  266. data/spec/models/ebit_estimates_spec.rb +0 -46
  267. data/spec/models/ebitda_estimates_info_spec.rb +0 -58
  268. data/spec/models/ebitda_estimates_spec.rb +0 -46
  269. data/spec/models/economic_calendar_spec.rb +0 -34
  270. data/spec/models/economic_code_spec.rb +0 -52
  271. data/spec/models/economic_data_info_spec.rb +0 -40
  272. data/spec/models/economic_data_spec.rb +0 -40
  273. data/spec/models/economic_event_spec.rb +0 -76
  274. data/spec/models/estimate_spec.rb +0 -58
  275. data/spec/models/etf_country_exposure_data_spec.rb +0 -40
  276. data/spec/models/etf_holdings_data_spec.rb +0 -70
  277. data/spec/models/etf_profile_data_spec.rb +0 -136
  278. data/spec/models/etf_sector_exposure_data_spec.rb +0 -40
  279. data/spec/models/etfs_country_exposure_spec.rb +0 -40
  280. data/spec/models/etfs_holdings_spec.rb +0 -52
  281. data/spec/models/etfs_profile_spec.rb +0 -40
  282. data/spec/models/etfs_sector_exposure_spec.rb +0 -40
  283. data/spec/models/excerpt_response_spec.rb +0 -52
  284. data/spec/models/fda_comittee_meeting_spec.rb +0 -52
  285. data/spec/models/filing_response_spec.rb +0 -106
  286. data/spec/models/filing_sentiment_spec.rb +0 -82
  287. data/spec/models/filing_spec.rb +0 -76
  288. data/spec/models/financial_statements_spec.rb +0 -40
  289. data/spec/models/financials_as_reported_spec.rb +0 -46
  290. data/spec/models/forex_candles_spec.rb +0 -70
  291. data/spec/models/forex_symbol_spec.rb +0 -46
  292. data/spec/models/forexrates_spec.rb +0 -40
  293. data/spec/models/fund_ownership_info_spec.rb +0 -58
  294. data/spec/models/fund_ownership_spec.rb +0 -40
  295. data/spec/models/historical_nbbo_spec.rb +0 -100
  296. data/spec/models/in_filing_response_spec.rb +0 -112
  297. data/spec/models/in_filing_search_body_spec.rb +0 -40
  298. data/spec/models/index_historical_constituent_spec.rb +0 -46
  299. data/spec/models/indicator_spec.rb +0 -46
  300. data/spec/models/indices_constituents_spec.rb +0 -40
  301. data/spec/models/indices_historical_constituents_spec.rb +0 -40
  302. data/spec/models/insider_sentiments_data_spec.rb +0 -58
  303. data/spec/models/insider_sentiments_spec.rb +0 -40
  304. data/spec/models/insider_transactions_spec.rb +0 -40
  305. data/spec/models/institutional_ownership_group_spec.rb +0 -40
  306. data/spec/models/institutional_ownership_info_spec.rb +0 -88
  307. data/spec/models/institutional_ownership_spec.rb +0 -46
  308. data/spec/models/institutional_portfolio_group_spec.rb +0 -46
  309. data/spec/models/institutional_portfolio_info_spec.rb +0 -94
  310. data/spec/models/institutional_portfolio_spec.rb +0 -46
  311. data/spec/models/institutional_profile_info_spec.rb +0 -64
  312. data/spec/models/institutional_profile_spec.rb +0 -40
  313. data/spec/models/international_filing_spec.rb +0 -82
  314. data/spec/models/investment_theme_portfolio_spec.rb +0 -34
  315. data/spec/models/investment_themes_spec.rb +0 -40
  316. data/spec/models/ipo_calendar_spec.rb +0 -34
  317. data/spec/models/ipo_event_spec.rb +0 -76
  318. data/spec/models/isin_change_info_spec.rb +0 -46
  319. data/spec/models/isin_change_spec.rb +0 -46
  320. data/spec/models/key_customers_suppliers_spec.rb +0 -52
  321. data/spec/models/last_bid_ask_spec.rb +0 -58
  322. data/spec/models/lobbying_data_spec.rb +0 -118
  323. data/spec/models/lobbying_result_spec.rb +0 -40
  324. data/spec/models/market_news_spec.rb +0 -82
  325. data/spec/models/mutual_fund_country_exposure_data_spec.rb +0 -40
  326. data/spec/models/mutual_fund_country_exposure_spec.rb +0 -40
  327. data/spec/models/mutual_fund_eet_pai_spec.rb +0 -40
  328. data/spec/models/mutual_fund_eet_spec.rb +0 -40
  329. data/spec/models/mutual_fund_holdings_data_spec.rb +0 -70
  330. data/spec/models/mutual_fund_holdings_spec.rb +0 -52
  331. data/spec/models/mutual_fund_profile_data_spec.rb +0 -154
  332. data/spec/models/mutual_fund_profile_spec.rb +0 -40
  333. data/spec/models/mutual_fund_sector_exposure_data_spec.rb +0 -40
  334. data/spec/models/mutual_fund_sector_exposure_spec.rb +0 -40
  335. data/spec/models/news_sentiment_spec.rb +0 -64
  336. data/spec/models/ownership_info_spec.rb +0 -52
  337. data/spec/models/ownership_spec.rb +0 -40
  338. data/spec/models/pattern_recognition_spec.rb +0 -34
  339. data/spec/models/press_release_spec.rb +0 -40
  340. data/spec/models/price_metrics_spec.rb +0 -40
  341. data/spec/models/price_target_spec.rb +0 -64
  342. data/spec/models/quote_spec.rb +0 -70
  343. data/spec/models/recommendation_trend_spec.rb +0 -70
  344. data/spec/models/reddit_sentiment_content_spec.rb +0 -70
  345. data/spec/models/report_spec.rb +0 -94
  346. data/spec/models/revenue_breakdown_spec.rb +0 -46
  347. data/spec/models/revenue_estimates_info_spec.rb +0 -58
  348. data/spec/models/revenue_estimates_spec.rb +0 -46
  349. data/spec/models/search_body_spec.rb +0 -160
  350. data/spec/models/search_filter_spec.rb +0 -40
  351. data/spec/models/search_response_spec.rb +0 -52
  352. data/spec/models/sec_sentiment_analysis_spec.rb +0 -52
  353. data/spec/models/sector_metric_data_spec.rb +0 -40
  354. data/spec/models/sector_metric_spec.rb +0 -40
  355. data/spec/models/sentiment_spec.rb +0 -40
  356. data/spec/models/similarity_index_info_spec.rb +0 -100
  357. data/spec/models/similarity_index_spec.rb +0 -46
  358. data/spec/models/social_sentiment_spec.rb +0 -46
  359. data/spec/models/split_spec.rb +0 -52
  360. data/spec/models/stock_candles_spec.rb +0 -70
  361. data/spec/models/stock_symbol_spec.rb +0 -70
  362. data/spec/models/stock_transcripts_spec.rb +0 -58
  363. data/spec/models/supply_chain_relationships_spec.rb +0 -40
  364. data/spec/models/support_resistance_spec.rb +0 -34
  365. data/spec/models/symbol_change_info_spec.rb +0 -46
  366. data/spec/models/symbol_change_spec.rb +0 -46
  367. data/spec/models/symbol_lookup_info_spec.rb +0 -52
  368. data/spec/models/symbol_lookup_spec.rb +0 -40
  369. data/spec/models/technical_analysis_spec.rb +0 -40
  370. data/spec/models/tick_data_spec.rb +0 -82
  371. data/spec/models/transactions_spec.rb +0 -70
  372. data/spec/models/transcript_content_spec.rb +0 -46
  373. data/spec/models/transcript_participant_spec.rb +0 -46
  374. data/spec/models/trend_spec.rb +0 -40
  375. data/spec/models/twitter_sentiment_content_spec.rb +0 -70
  376. data/spec/models/upgrade_downgrade_spec.rb +0 -64
  377. data/spec/models/usa_spending_result_spec.rb +0 -40
  378. data/spec/models/usa_spending_spec.rb +0 -148
  379. data/spec/models/uspto_patent_result_spec.rb +0 -40
  380. data/spec/models/uspto_patent_spec.rb +0 -82
  381. data/spec/models/visa_application_result_spec.rb +0 -40
  382. data/spec/models/visa_application_spec.rb +0 -166
  383. data/spec/spec_helper.rb +0 -111
data/lib/finnhub_ruby.rb CHANGED
@@ -1,185 +1,15 @@
1
- =begin
2
- #Finnhub API
3
-
4
- #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
-
6
- The version of the OpenAPI document: 1.0.0
7
-
8
- Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 5.2.1
10
-
11
- =end
12
-
13
- # Common files
14
- require 'finnhub_ruby/api_client'
15
- require 'finnhub_ruby/api_error'
16
- require 'finnhub_ruby/version'
17
- require 'finnhub_ruby/configuration'
18
-
19
- # Models
20
- require 'finnhub_ruby/models/aggregate_indicators'
21
- require 'finnhub_ruby/models/basic_financials'
22
- require 'finnhub_ruby/models/bond_candles'
23
- require 'finnhub_ruby/models/bond_profile'
24
- require 'finnhub_ruby/models/bond_tick_data'
25
- require 'finnhub_ruby/models/bond_yield_curve'
26
- require 'finnhub_ruby/models/bond_yield_curve_info'
27
- require 'finnhub_ruby/models/breakdown_item'
28
- require 'finnhub_ruby/models/company'
29
- require 'finnhub_ruby/models/company_esg'
30
- require 'finnhub_ruby/models/company_earnings_quality_score'
31
- require 'finnhub_ruby/models/company_earnings_quality_score_data'
32
- require 'finnhub_ruby/models/company_executive'
33
- require 'finnhub_ruby/models/company_news'
34
- require 'finnhub_ruby/models/company_news_statistics'
35
- require 'finnhub_ruby/models/company_profile'
36
- require 'finnhub_ruby/models/company_profile2'
37
- require 'finnhub_ruby/models/congressional_trading'
38
- require 'finnhub_ruby/models/congressional_transaction'
39
- require 'finnhub_ruby/models/country_metadata'
40
- require 'finnhub_ruby/models/covid_info'
41
- require 'finnhub_ruby/models/crypto_candles'
42
- require 'finnhub_ruby/models/crypto_profile'
43
- require 'finnhub_ruby/models/crypto_symbol'
44
- require 'finnhub_ruby/models/development'
45
- require 'finnhub_ruby/models/dividends'
46
- require 'finnhub_ruby/models/dividends2'
47
- require 'finnhub_ruby/models/dividends2_info'
48
- require 'finnhub_ruby/models/document_response'
49
- require 'finnhub_ruby/models/etf_country_exposure_data'
50
- require 'finnhub_ruby/models/etf_holdings_data'
51
- require 'finnhub_ruby/models/etf_profile_data'
52
- require 'finnhub_ruby/models/etf_sector_exposure_data'
53
- require 'finnhub_ruby/models/etfs_country_exposure'
54
- require 'finnhub_ruby/models/etfs_holdings'
55
- require 'finnhub_ruby/models/etfs_profile'
56
- require 'finnhub_ruby/models/etfs_sector_exposure'
57
- require 'finnhub_ruby/models/earning_release'
58
- require 'finnhub_ruby/models/earning_result'
59
- require 'finnhub_ruby/models/earnings_calendar'
60
- require 'finnhub_ruby/models/earnings_call_transcripts'
61
- require 'finnhub_ruby/models/earnings_call_transcripts_list'
62
- require 'finnhub_ruby/models/earnings_estimates'
63
- require 'finnhub_ruby/models/earnings_estimates_info'
64
- require 'finnhub_ruby/models/ebit_estimates'
65
- require 'finnhub_ruby/models/ebit_estimates_info'
66
- require 'finnhub_ruby/models/ebitda_estimates'
67
- require 'finnhub_ruby/models/ebitda_estimates_info'
68
- require 'finnhub_ruby/models/economic_calendar'
69
- require 'finnhub_ruby/models/economic_code'
70
- require 'finnhub_ruby/models/economic_data'
71
- require 'finnhub_ruby/models/economic_data_info'
72
- require 'finnhub_ruby/models/economic_event'
73
- require 'finnhub_ruby/models/excerpt_response'
74
- require 'finnhub_ruby/models/fda_comittee_meeting'
75
- require 'finnhub_ruby/models/filing'
76
- require 'finnhub_ruby/models/filing_response'
77
- require 'finnhub_ruby/models/filing_sentiment'
78
- require 'finnhub_ruby/models/financial_statements'
79
- require 'finnhub_ruby/models/financials_as_reported'
80
- require 'finnhub_ruby/models/forex_candles'
81
- require 'finnhub_ruby/models/forex_symbol'
82
- require 'finnhub_ruby/models/forexrates'
83
- require 'finnhub_ruby/models/fund_ownership'
84
- require 'finnhub_ruby/models/fund_ownership_info'
85
- require 'finnhub_ruby/models/historical_nbbo'
86
- require 'finnhub_ruby/models/ipo_calendar'
87
- require 'finnhub_ruby/models/ipo_event'
88
- require 'finnhub_ruby/models/in_filing_response'
89
- require 'finnhub_ruby/models/in_filing_search_body'
90
- require 'finnhub_ruby/models/index_historical_constituent'
91
- require 'finnhub_ruby/models/indicator'
92
- require 'finnhub_ruby/models/indices_constituents'
93
- require 'finnhub_ruby/models/indices_historical_constituents'
94
- require 'finnhub_ruby/models/insider_sentiments'
95
- require 'finnhub_ruby/models/insider_sentiments_data'
96
- require 'finnhub_ruby/models/insider_transactions'
97
- require 'finnhub_ruby/models/institutional_ownership'
98
- require 'finnhub_ruby/models/institutional_ownership_group'
99
- require 'finnhub_ruby/models/institutional_ownership_info'
100
- require 'finnhub_ruby/models/institutional_portfolio'
101
- require 'finnhub_ruby/models/institutional_portfolio_group'
102
- require 'finnhub_ruby/models/institutional_portfolio_info'
103
- require 'finnhub_ruby/models/institutional_profile'
104
- require 'finnhub_ruby/models/institutional_profile_info'
105
- require 'finnhub_ruby/models/international_filing'
106
- require 'finnhub_ruby/models/investment_theme_portfolio'
107
- require 'finnhub_ruby/models/investment_themes'
108
- require 'finnhub_ruby/models/isin_change'
109
- require 'finnhub_ruby/models/isin_change_info'
110
- require 'finnhub_ruby/models/key_customers_suppliers'
111
- require 'finnhub_ruby/models/last_bid_ask'
112
- require 'finnhub_ruby/models/lobbying_data'
113
- require 'finnhub_ruby/models/lobbying_result'
114
- require 'finnhub_ruby/models/market_news'
115
- require 'finnhub_ruby/models/mutual_fund_country_exposure'
116
- require 'finnhub_ruby/models/mutual_fund_country_exposure_data'
117
- require 'finnhub_ruby/models/mutual_fund_eet'
118
- require 'finnhub_ruby/models/mutual_fund_eet_pai'
119
- require 'finnhub_ruby/models/mutual_fund_holdings'
120
- require 'finnhub_ruby/models/mutual_fund_holdings_data'
121
- require 'finnhub_ruby/models/mutual_fund_profile'
122
- require 'finnhub_ruby/models/mutual_fund_profile_data'
123
- require 'finnhub_ruby/models/mutual_fund_sector_exposure'
124
- require 'finnhub_ruby/models/mutual_fund_sector_exposure_data'
125
- require 'finnhub_ruby/models/news_sentiment'
126
- require 'finnhub_ruby/models/ownership'
127
- require 'finnhub_ruby/models/ownership_info'
128
- require 'finnhub_ruby/models/pattern_recognition'
129
- require 'finnhub_ruby/models/press_release'
130
- require 'finnhub_ruby/models/price_metrics'
131
- require 'finnhub_ruby/models/price_target'
132
- require 'finnhub_ruby/models/quote'
133
- require 'finnhub_ruby/models/recommendation_trend'
134
- require 'finnhub_ruby/models/reddit_sentiment_content'
135
- require 'finnhub_ruby/models/report'
136
- require 'finnhub_ruby/models/revenue_breakdown'
137
- require 'finnhub_ruby/models/revenue_estimates'
138
- require 'finnhub_ruby/models/revenue_estimates_info'
139
- require 'finnhub_ruby/models/sec_sentiment_analysis'
140
- require 'finnhub_ruby/models/search_body'
141
- require 'finnhub_ruby/models/search_filter'
142
- require 'finnhub_ruby/models/search_response'
143
- require 'finnhub_ruby/models/sector_metric'
144
- require 'finnhub_ruby/models/sector_metric_data'
145
- require 'finnhub_ruby/models/sentiment'
146
- require 'finnhub_ruby/models/similarity_index'
147
- require 'finnhub_ruby/models/similarity_index_info'
148
- require 'finnhub_ruby/models/social_sentiment'
149
- require 'finnhub_ruby/models/split'
150
- require 'finnhub_ruby/models/stock_candles'
151
- require 'finnhub_ruby/models/stock_symbol'
152
- require 'finnhub_ruby/models/stock_transcripts'
153
- require 'finnhub_ruby/models/supply_chain_relationships'
154
- require 'finnhub_ruby/models/support_resistance'
155
- require 'finnhub_ruby/models/symbol_change'
156
- require 'finnhub_ruby/models/symbol_change_info'
157
- require 'finnhub_ruby/models/symbol_lookup'
158
- require 'finnhub_ruby/models/symbol_lookup_info'
159
- require 'finnhub_ruby/models/technical_analysis'
160
- require 'finnhub_ruby/models/tick_data'
161
- require 'finnhub_ruby/models/transactions'
162
- require 'finnhub_ruby/models/transcript_content'
163
- require 'finnhub_ruby/models/transcript_participant'
164
- require 'finnhub_ruby/models/trend'
165
- require 'finnhub_ruby/models/twitter_sentiment_content'
166
- require 'finnhub_ruby/models/upgrade_downgrade'
167
- require 'finnhub_ruby/models/usa_spending'
168
- require 'finnhub_ruby/models/usa_spending_result'
169
- require 'finnhub_ruby/models/uspto_patent'
170
- require 'finnhub_ruby/models/uspto_patent_result'
171
- require 'finnhub_ruby/models/visa_application'
172
- require 'finnhub_ruby/models/visa_application_result'
173
-
174
- # APIs
175
- require 'finnhub_ruby/api/default_api'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'finnhub_ruby/version'
4
+ require 'net/http'
5
+ require 'uri'
6
+ require 'json'
176
7
 
177
8
  module FinnhubRuby
178
9
  class << self
179
10
  # Customize default settings for the SDK using block.
180
11
  # FinnhubRuby.configure do |config|
181
- # config.username = "xxx"
182
- # config.password = "xxx"
12
+ # config.api_key['api_key'] = "YOUR API KEY"
183
13
  # end
184
14
  # If no block given, return the default Configuration object.
185
15
  def configure
@@ -190,4 +20,515 @@ module FinnhubRuby
190
20
  end
191
21
  end
192
22
  end
193
- end
23
+
24
+ class FinnhubAPIException < StandardError; end
25
+ class FinnhubRequestException < StandardError; end
26
+
27
+ class Configuration
28
+ attr_accessor :api_key
29
+
30
+ def initialize
31
+ @api_key = {}
32
+ end
33
+
34
+ def self.default
35
+ @default ||= Configuration.new
36
+ end
37
+ end
38
+
39
+ class DefaultApi
40
+ API_URL = 'https://api.finnhub.io/api/v1'
41
+ DEFAULT_TIMEOUT = 10
42
+
43
+ def initialize(api_client = nil)
44
+ # api_client is unused, but kept for compatibility with openapi-generator pattern
45
+ @config = Configuration.default
46
+ end
47
+
48
+ def get(path, params = {})
49
+ # Ensure exactly one slash between base and path
50
+ base = API_URL.chomp('/')
51
+ path = path.start_with?('/') ? path : "/#{path}"
52
+ url = "#{base}#{path}"
53
+ uri = URI.parse(url)
54
+ params = params.dup
55
+ params['token'] = @config.api_key['api_key']
56
+ uri.query = URI.encode_www_form(params)
57
+ puts(uri)
58
+
59
+ # Some endpoints redirect to another endpoint, so we need to handle that
60
+ limit = 2
61
+ res = nil
62
+
63
+ loop do
64
+ raise FinnhubRequestException, 'Too many redirects' if limit.zero?
65
+
66
+ req = Net::HTTP::Get.new(uri)
67
+ req['Accept'] = 'application/json'
68
+ req['User-Agent'] = "finnhub/ruby/#{VERSION}"
69
+
70
+ http = Net::HTTP.new(uri.host, uri.port)
71
+ http.use_ssl = (uri.scheme == 'https')
72
+ http.read_timeout = DEFAULT_TIMEOUT
73
+ http.open_timeout = DEFAULT_TIMEOUT
74
+
75
+ res = http.request(req)
76
+
77
+ break unless res.is_a?(Net::HTTPRedirection)
78
+
79
+ uri = URI(res['location'])
80
+ limit -= 1
81
+ end
82
+
83
+ handle_response(res)
84
+ end
85
+
86
+ def quote(symbol)
87
+ get('/quote', symbol: symbol)
88
+ end
89
+
90
+ def company_profile(params = {})
91
+ get('/stock/profile', params)
92
+ end
93
+
94
+ def company_profile2(params = {})
95
+ get('/stock/profile2', params)
96
+ end
97
+
98
+ def aggregate_indicator(symbol, resolution)
99
+ get('/scan/technical-indicator', { symbol: symbol, resolution: resolution })
100
+ end
101
+
102
+ def crypto_exchanges
103
+ get('/crypto/exchange')
104
+ end
105
+
106
+ def forex_exchanges
107
+ get('/forex/exchange')
108
+ end
109
+
110
+ def press_releases(symbol, from: nil, to: nil)
111
+ get('/press-releases', { symbol: symbol, from: from, to: to }.compact)
112
+ end
113
+
114
+ def company_executive(symbol)
115
+ get('/stock/executive', { symbol: symbol })
116
+ end
117
+
118
+ def stock_dividends(symbol, from: nil, to: nil)
119
+ get('/stock/dividend', { symbol: symbol, from: from, to: to }.compact)
120
+ end
121
+
122
+ def stock_basic_dividends(symbol)
123
+ get('/stock/dividend2', { symbol: symbol })
124
+ end
125
+
126
+ def stock_symbols(exchange, mic: nil, security_type: nil, currency: nil)
127
+ get('/stock/symbol', { exchange: exchange, mic: mic, securityType: security_type, currency: currency }.compact)
128
+ end
129
+
130
+ def recommendation_trends(symbol)
131
+ get('/stock/recommendation', { symbol: symbol })
132
+ end
133
+
134
+ def price_target(symbol)
135
+ get('/stock/price-target', { symbol: symbol })
136
+ end
137
+
138
+ def upgrade_downgrade(symbol: nil, from: nil, to: nil)
139
+ get('/stock/upgrade-downgrade', { symbol: symbol, from: from, to: to }.compact)
140
+ end
141
+
142
+ def option_chain(params = {})
143
+ get('/stock/option-chain', params)
144
+ end
145
+
146
+ def company_peers(symbol)
147
+ get('/stock/peers', { symbol: symbol })
148
+ end
149
+
150
+ def company_basic_financials(symbol, metric)
151
+ get('/stock/metric', { symbol: symbol, metric: metric })
152
+ end
153
+
154
+ def financials(symbol, statement, freq)
155
+ get('/stock/financials', { symbol: symbol, statement: statement, freq: freq })
156
+ end
157
+
158
+ def financials_reported(params = {})
159
+ get('/stock/financials-reported', params)
160
+ end
161
+
162
+ def fund_ownership(symbol, limit: nil)
163
+ get('/stock/fund-ownership', { symbol: symbol, limit: limit }.compact)
164
+ end
165
+
166
+ def company_earnings(symbol, limit: nil)
167
+ get('/stock/earnings', { symbol: symbol, limit: limit }.compact)
168
+ end
169
+
170
+ def company_revenue_estimates(symbol, freq: nil)
171
+ get('/stock/revenue-estimate', { symbol: symbol, freq: freq }.compact)
172
+ end
173
+
174
+ def company_ebitda_estimates(symbol, freq: nil)
175
+ get('/stock/ebitda-estimate', { symbol: symbol, freq: freq }.compact)
176
+ end
177
+
178
+ def company_ebit_estimates(symbol, freq: nil)
179
+ get('/stock/ebit-estimate', { symbol: symbol, freq: freq }.compact)
180
+ end
181
+
182
+ def company_eps_estimates(symbol, freq: nil)
183
+ get('/stock/eps-estimate', { symbol: symbol, freq: freq }.compact)
184
+ end
185
+
186
+ def exchange
187
+ get('/stock/exchange')
188
+ end
189
+
190
+ def filings(symbol: '', cik: '', access_number: '', form: '', from: '', to: '')
191
+ get('/stock/filings', { symbol: symbol, cik: cik, accessNumber: access_number, form: form, from: from, to: to }.compact)
192
+ end
193
+
194
+ def stock_symbol(params = {})
195
+ get('/stock/symbol', params)
196
+ end
197
+
198
+ def transcripts(id)
199
+ get('/stock/transcripts', { id: id })
200
+ end
201
+
202
+ def transcripts_list(symbol)
203
+ get('/stock/transcripts/list', { symbol: symbol })
204
+ end
205
+
206
+ # def sim_index(params = {})
207
+ # get('/stock/similarity-index', params)
208
+ # end
209
+
210
+ def stock_candles(symbol, resolution, from, to, **kwargs)
211
+ get('/stock/candle', { symbol: symbol, resolution: resolution, from: from, to: to }.merge(kwargs))
212
+ end
213
+
214
+ def stock_tick(symbol, date, limit, skip, format: 'json', **kwargs)
215
+ get('/stock/tick', { symbol: symbol, date: date, limit: limit, skip: skip, format: format }.merge(kwargs))
216
+ end
217
+
218
+ def stock_nbbo(symbol, date, limit, skip, format: 'json', **kwargs)
219
+ get('/stock/bbo', { symbol: symbol, date: date, limit: limit, skip: skip, format: format }.merge(kwargs))
220
+ end
221
+
222
+ def forex_rates(params = {})
223
+ get('/forex/rates', params)
224
+ end
225
+
226
+ def forex_symbols(exchange)
227
+ get('/forex/symbol', { exchange: exchange })
228
+ end
229
+
230
+ def forex_candles(symbol, resolution, from, to, format: 'json')
231
+ get('/forex/candle', { symbol: symbol, resolution: resolution, from: from, to: to, format: format })
232
+ end
233
+
234
+ def crypto_symbols(exchange)
235
+ get('/crypto/symbol', { exchange: exchange })
236
+ end
237
+
238
+ def crypto_candles(symbol, resolution, from, to, format: 'json')
239
+ get('/crypto/candle', { symbol: symbol, resolution: resolution, from: from, to: to, format: format })
240
+ end
241
+
242
+ def pattern_recognition(symbol, resolution)
243
+ get('/scan/pattern', { symbol: symbol, resolution: resolution })
244
+ end
245
+
246
+ def support_resistance(symbol, resolution)
247
+ get('/scan/support-resistance', { symbol: symbol, resolution: resolution })
248
+ end
249
+
250
+ def technical_indicator(symbol, resolution, from, to, indicator, indicator_fields: {})
251
+ get('/indicator', { symbol: symbol, resolution: resolution, from: from, to: to, indicator: indicator }.merge(indicator_fields))
252
+ end
253
+
254
+ def stock_splits(symbol, from, to)
255
+ get('/stock/split', { symbol: symbol, from: from, to: to })
256
+ end
257
+
258
+ def general_news(category, min_id: 0)
259
+ get('/news', { category: category, minId: min_id })
260
+ end
261
+
262
+ def company_news(symbol, from, to)
263
+ get('/company-news', { symbol: symbol, from: from, to: to })
264
+ end
265
+
266
+ def news_sentiment(symbol)
267
+ get('/news-sentiment', { symbol: symbol })
268
+ end
269
+
270
+ def ownership(symbol, limit: nil)
271
+ get('/stock/ownership', { symbol: symbol, limit: limit }.compact)
272
+ end
273
+
274
+ def country
275
+ get('/country')
276
+ end
277
+
278
+ def economic_code
279
+ get('/economic/code')
280
+ end
281
+
282
+ def economic_data(code)
283
+ get('/economic', { code: code })
284
+ end
285
+
286
+ def economic_calendar(from: nil, to: nil)
287
+ get('/calendar/economic', { from: from, to: to }.compact)
288
+ end
289
+
290
+ def earnings_calendar(from:, to:, symbol: '', international: false)
291
+ get('/calendar/earnings', { from: from, to: to, symbol: symbol, international: international })
292
+ end
293
+
294
+ def ipo_calendar(from, to)
295
+ get('/calendar/ipo', { from: from, to: to })
296
+ end
297
+
298
+ def indices_const(params = {})
299
+ get('/index/constituents', params)
300
+ end
301
+
302
+ def indices_hist_const(params = {})
303
+ get('/index/historical-constituents', params)
304
+ end
305
+
306
+ def etfs_profile(symbol: nil, isin: nil)
307
+ get('/etf/profile', { symbol: symbol, isin: isin }.compact)
308
+ end
309
+
310
+ def etfs_holdings(symbol: nil, isin: nil, skip: nil, date: nil)
311
+ get('/etf/holdings', { symbol: symbol, isin: isin, skip: skip, date: date }.compact)
312
+ end
313
+
314
+ def etfs_sector_exp(symbol)
315
+ get('/etf/sector', { symbol: symbol })
316
+ end
317
+
318
+ def etfs_country_exp(symbol)
319
+ get('/etf/country', { symbol: symbol })
320
+ end
321
+
322
+ def international_filings(symbol: '', country: '')
323
+ get('/stock/international-filings', { symbol: symbol, country: country }.compact)
324
+ end
325
+
326
+ def sentiment_analysis(access_number)
327
+ get('/stock/filings-sentiment', { accessNumber: access_number })
328
+ end
329
+
330
+ def similarity_index(symbol: '', cik: '', freq: 'annual')
331
+ get('/stock/similarity-index', { symbol: symbol, cik: cik, freq: freq }.compact)
332
+ end
333
+
334
+ def last_bid_ask(symbol)
335
+ get('/stock/bidask', { symbol: symbol })
336
+ end
337
+
338
+ def fda_calendar
339
+ get('/fda-advisory-committee-calendar')
340
+ end
341
+
342
+ def symbol_search(query)
343
+ get('/search', { q: query })
344
+ end
345
+
346
+ def stock_insider_transactions(symbol, from: nil, to: nil)
347
+ get('/stock/insider-transactions', { symbol: symbol, from: from, to: to }.compact)
348
+ end
349
+
350
+ def mutual_fund_profile(symbol: nil, isin: nil)
351
+ get('/mutual-fund/profile', { symbol: symbol, isin: isin }.compact)
352
+ end
353
+
354
+ def mutual_fund_holdings(symbol: nil, isin: nil, skip: nil)
355
+ get('/mutual-fund/holdings', { symbol: symbol, isin: isin, skip: skip }.compact)
356
+ end
357
+
358
+ def mutual_fund_sector_exp(symbol)
359
+ get('/mutual-fund/sector', { symbol: symbol })
360
+ end
361
+
362
+ def mutual_fund_country_exp(symbol)
363
+ get('/mutual-fund/country', { symbol: symbol })
364
+ end
365
+
366
+ def mutual_fund_eet(isin)
367
+ get('/mutual-fund/eet', { isin: isin })
368
+ end
369
+
370
+ def mutual_fund_eet_pai(isin)
371
+ get('/mutual-fund/eet-pai', { isin: isin })
372
+ end
373
+
374
+ def stock_revenue_breakdown(symbol, cik: '')
375
+ get('/stock/revenue-breakdown', { symbol: symbol, cik: cik }.compact)
376
+ end
377
+
378
+ def stock_social_sentiment(symbol, from: nil, to: nil)
379
+ get('/stock/social-sentiment', { symbol: symbol, from: from, to: to }.compact)
380
+ end
381
+
382
+ def stock_investment_theme(theme)
383
+ get('/stock/investment-theme', { theme: theme })
384
+ end
385
+
386
+ def stock_supply_chain(symbol)
387
+ get('/stock/supply-chain', { symbol: symbol })
388
+ end
389
+
390
+ def company_esg_score(symbol)
391
+ get('/stock/esg', { symbol: symbol })
392
+ end
393
+
394
+ def company_historical_esg_score(symbol)
395
+ get('/stock/historical-esg', { symbol: symbol })
396
+ end
397
+
398
+ def historical_market_cap(symbol, from: nil, to: nil)
399
+ get('/stock/historical-market-cap', { symbol: symbol, from: from, to: to }.compact)
400
+ end
401
+
402
+ def company_earnings_quality_score(symbol, freq)
403
+ get('/stock/earnings-quality-score', { symbol: symbol, freq: freq })
404
+ end
405
+
406
+ def crypto_profile(symbol)
407
+ get('/crypto/profile', { symbol: symbol })
408
+ end
409
+
410
+ def stock_uspto_patent(symbol, from: nil, to: nil)
411
+ get('/stock/uspto-patent', { symbol: symbol, from: from, to: to }.compact)
412
+ end
413
+
414
+ def stock_visa_application(symbol, from: nil, to: nil)
415
+ get('/stock/visa-application', { symbol: symbol, from: from, to: to }.compact)
416
+ end
417
+
418
+ def stock_insider_sentiment(symbol, from, to)
419
+ get('/stock/insider-sentiment', { symbol: symbol, from: from, to: to })
420
+ end
421
+
422
+ def stock_lobbying(symbol, from, to)
423
+ get('/stock/lobbying', { symbol: symbol, from: from, to: to })
424
+ end
425
+
426
+ def bond_profile(params = {})
427
+ get('/bond/profile', params)
428
+ end
429
+
430
+ def bond_price(isin, from, to)
431
+ get('/bond/price', { isin: isin, from: from, to: to })
432
+ end
433
+
434
+ def stock_usa_spending(symbol, from, to)
435
+ get('/stock/usa-spending', { symbol: symbol, from: from, to: to })
436
+ end
437
+
438
+ def sector_metric(region)
439
+ get('/sector/metrics', { region: region })
440
+ end
441
+
442
+ def price_metrics(symbol, date: '')
443
+ get('/stock/price-metric', { symbol: symbol, date: date })
444
+ end
445
+
446
+ def symbol_change(from, to)
447
+ get('/ca/symbol-change', { from: from, to: to })
448
+ end
449
+
450
+ def isin_change(from, to)
451
+ get('/ca/isin-change', { from: from, to: to })
452
+ end
453
+
454
+ def institutional_profile(cik: '')
455
+ get('/institutional/profile', { cik: cik }.compact)
456
+ end
457
+
458
+ def institutional_portfolio(cik, from, to)
459
+ get('/institutional/portfolio', { cik: cik, from: from, to: to })
460
+ end
461
+
462
+ def institutional_ownership(symbol, cusip, from, to)
463
+ get('/institutional/ownership', { symbol: symbol, cusip: cusip, from: from, to: to })
464
+ end
465
+
466
+ def congressional_trading(symbol, from, to)
467
+ get('/stock/congressional-trading', { symbol: symbol, from: from, to: to })
468
+ end
469
+
470
+ def bond_tick(isin, date, limit, skip, exchange: 'trace', format: 'json', **kwargs)
471
+ get('/bond/tick', { isin: isin, date: date, limit: limit, skip: skip, exchange: exchange, format: format }.merge(kwargs))
472
+ end
473
+
474
+ def bond_yield_curve(code)
475
+ get('/bond/yield-curve', { code: code })
476
+ end
477
+
478
+ def market_status(exchange)
479
+ get('/stock/market-status', { exchange: exchange })
480
+ end
481
+
482
+ def market_holiday(exchange)
483
+ get('/stock/market-holiday', { exchange: exchange })
484
+ end
485
+
486
+ def historical_employee_count(symbol, from, to)
487
+ get('/stock/historical-employee-count', { symbol: symbol, from: from, to: to })
488
+ end
489
+
490
+ def airline_price_index(airline, from, to)
491
+ get('/airline/price-index', { airline: airline, from: from, to: to })
492
+ end
493
+
494
+ def earnings_call_live(from, to, symbol: '')
495
+ get('/stock/earnings-call-live', { symbol: symbol, from: from, to: to })
496
+ end
497
+
498
+ def stock_presentation(symbol)
499
+ get('/stock/presentation', { symbol: symbol })
500
+ end
501
+
502
+ def stock_revenue_breakdown2(symbol)
503
+ get('/stock/revenue-breakdown2', { symbol: symbol })
504
+ end
505
+
506
+ def covid19
507
+ get('/covid19/us')
508
+ end
509
+
510
+ private
511
+
512
+ def handle_response(res)
513
+ case res
514
+ when Net::HTTPSuccess
515
+ content_type = res['Content-Type'] || ''
516
+ if content_type.include?('application/json')
517
+ JSON.parse(res.body)
518
+ elsif content_type.include?('text/csv') || content_type.include?('text/plain')
519
+ res.body
520
+ else
521
+ raise FinnhubRequestException, "Invalid Response: #{res.body}"
522
+ end
523
+ else
524
+ begin
525
+ json = JSON.parse(res.body)
526
+ msg = json['error'] || res.body
527
+ rescue JSON::ParserError
528
+ msg = res.body
529
+ end
530
+ raise FinnhubAPIException, "FinnhubAPIException(status_code: #{res.code}): #{msg}"
531
+ end
532
+ end
533
+ end
534
+ end