finnhub_ruby 1.1.18 → 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 (372) 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/BondTickData.md +6 -0
  10. data/docs/BondYieldCurve.md +20 -0
  11. data/docs/BondYieldCurveInfo.md +20 -0
  12. data/docs/CompanyESG2.md +28 -0
  13. data/docs/CompanyProfile.md +11 -1
  14. data/docs/CongressionalTrading.md +20 -0
  15. data/docs/CongressionalTransaction.md +36 -0
  16. data/docs/CountryMetadata.md +9 -1
  17. data/docs/DefaultApi.md +830 -66
  18. data/docs/Dividends.md +3 -1
  19. data/docs/DocumentResponse.md +28 -0
  20. data/docs/ETFHoldingsData.md +3 -1
  21. data/docs/ETFProfileData.md +2 -0
  22. data/docs/EarningResult.md +5 -1
  23. data/docs/EarningsEstimatesInfo.md +5 -1
  24. data/docs/EbitEstimatesInfo.md +5 -1
  25. data/docs/EbitdaEstimatesInfo.md +5 -1
  26. data/docs/EmployeeCount.md +20 -0
  27. data/docs/ExcerptResponse.md +24 -0
  28. data/docs/FilingResponse.md +42 -0
  29. data/docs/HistoricalCompanyESG.md +20 -0
  30. data/docs/HistoricalEmployeeCount.md +20 -0
  31. data/docs/HistoricalMarketCapData.md +22 -0
  32. data/docs/InFilingResponse.md +44 -0
  33. data/docs/InFilingSearchBody.md +20 -0
  34. data/docs/IndicesConstituents.md +3 -1
  35. data/docs/IndicesConstituentsBreakdown.md +28 -0
  36. data/docs/MarketCapData.md +20 -0
  37. data/docs/MarketHoliday.md +22 -0
  38. data/docs/MarketHolidayData.md +22 -0
  39. data/docs/MarketStatus.md +28 -0
  40. data/docs/MutualFundEet.md +20 -0
  41. data/docs/MutualFundEetPai.md +20 -0
  42. data/docs/MutualFundHoldingsData.md +3 -1
  43. data/docs/MutualFundProfileData.md +2 -0
  44. data/docs/PriceMetrics.md +2 -0
  45. data/docs/PriceTarget.md +2 -0
  46. data/docs/RevenueEstimatesInfo.md +5 -1
  47. data/docs/SearchBody.md +60 -0
  48. data/docs/SearchFilter.md +20 -0
  49. data/docs/SearchResponse.md +24 -0
  50. data/docs/SentimentContent.md +30 -0
  51. data/docs/SocialSentiment.md +2 -4
  52. data/finnhub_ruby.gemspec +9 -9
  53. data/git_push.sh +0 -0
  54. data/lib/finnhub_ruby/version.rb +2 -14
  55. data/lib/finnhub_ruby.rb +519 -164
  56. metadata +44 -479
  57. data/finnhub_ruby-1.1.10.gem +0 -0
  58. data/finnhub_ruby-1.1.11.gem +0 -0
  59. data/finnhub_ruby-1.1.12.gem +0 -0
  60. data/finnhub_ruby-1.1.13.gem +0 -0
  61. data/finnhub_ruby-1.1.14.gem +0 -0
  62. data/finnhub_ruby-1.1.15.gem +0 -0
  63. data/finnhub_ruby-1.1.16.gem +0 -0
  64. data/finnhub_ruby-1.1.17.gem +0 -0
  65. data/finnhub_ruby-1.1.7.gem +0 -0
  66. data/finnhub_ruby-1.1.8.gem +0 -0
  67. data/finnhub_ruby-1.1.9.gem +0 -0
  68. data/lib/finnhub_ruby/api/default_api.rb +0 -6160
  69. data/lib/finnhub_ruby/api_client.rb +0 -391
  70. data/lib/finnhub_ruby/api_error.rb +0 -57
  71. data/lib/finnhub_ruby/configuration.rb +0 -277
  72. data/lib/finnhub_ruby/models/aggregate_indicators.rb +0 -227
  73. data/lib/finnhub_ruby/models/basic_financials.rb +0 -247
  74. data/lib/finnhub_ruby/models/bond_candles.rb +0 -243
  75. data/lib/finnhub_ruby/models/bond_profile.rb +0 -419
  76. data/lib/finnhub_ruby/models/bond_tick_data.rb +0 -311
  77. data/lib/finnhub_ruby/models/breakdown_item.rb +0 -228
  78. data/lib/finnhub_ruby/models/company.rb +0 -279
  79. data/lib/finnhub_ruby/models/company_earnings_quality_score.rb +0 -241
  80. data/lib/finnhub_ruby/models/company_earnings_quality_score_data.rb +0 -279
  81. data/lib/finnhub_ruby/models/company_esg.rb +0 -268
  82. data/lib/finnhub_ruby/models/company_executive.rb +0 -231
  83. data/lib/finnhub_ruby/models/company_news.rb +0 -299
  84. data/lib/finnhub_ruby/models/company_news_statistics.rb +0 -239
  85. data/lib/finnhub_ruby/models/company_profile.rb +0 -489
  86. data/lib/finnhub_ruby/models/company_profile2.rb +0 -329
  87. data/lib/finnhub_ruby/models/country_metadata.rb +0 -289
  88. data/lib/finnhub_ruby/models/covid_info.rb +0 -249
  89. data/lib/finnhub_ruby/models/crypto_candles.rb +0 -291
  90. data/lib/finnhub_ruby/models/crypto_profile.rb +0 -319
  91. data/lib/finnhub_ruby/models/crypto_symbol.rb +0 -239
  92. data/lib/finnhub_ruby/models/development.rb +0 -259
  93. data/lib/finnhub_ruby/models/dividends.rb +0 -289
  94. data/lib/finnhub_ruby/models/dividends2.rb +0 -231
  95. data/lib/finnhub_ruby/models/dividends2_basic.rb +0 -231
  96. data/lib/finnhub_ruby/models/dividends2_info.rb +0 -229
  97. data/lib/finnhub_ruby/models/earning_estimate.rb +0 -259
  98. data/lib/finnhub_ruby/models/earning_release.rb +0 -299
  99. data/lib/finnhub_ruby/models/earning_result.rb +0 -269
  100. data/lib/finnhub_ruby/models/earnings_calendar.rb +0 -221
  101. data/lib/finnhub_ruby/models/earnings_call_transcripts.rb +0 -303
  102. data/lib/finnhub_ruby/models/earnings_call_transcripts_list.rb +0 -231
  103. data/lib/finnhub_ruby/models/earnings_estimates.rb +0 -241
  104. data/lib/finnhub_ruby/models/earnings_estimates_info.rb +0 -259
  105. data/lib/finnhub_ruby/models/ebit_estimates.rb +0 -241
  106. data/lib/finnhub_ruby/models/ebit_estimates_info.rb +0 -259
  107. data/lib/finnhub_ruby/models/ebitda_estimates.rb +0 -241
  108. data/lib/finnhub_ruby/models/ebitda_estimates_info.rb +0 -259
  109. data/lib/finnhub_ruby/models/economic_calendar.rb +0 -221
  110. data/lib/finnhub_ruby/models/economic_code.rb +0 -249
  111. data/lib/finnhub_ruby/models/economic_data.rb +0 -231
  112. data/lib/finnhub_ruby/models/economic_data_info.rb +0 -229
  113. data/lib/finnhub_ruby/models/economic_event.rb +0 -289
  114. data/lib/finnhub_ruby/models/estimate.rb +0 -259
  115. data/lib/finnhub_ruby/models/et_fs_country_exposure.rb +0 -219
  116. data/lib/finnhub_ruby/models/et_fs_holdings.rb +0 -219
  117. data/lib/finnhub_ruby/models/et_fs_industry_exposure.rb +0 -219
  118. data/lib/finnhub_ruby/models/et_fs_profile.rb +0 -216
  119. data/lib/finnhub_ruby/models/etf_country_exposure_data.rb +0 -229
  120. data/lib/finnhub_ruby/models/etf_holdings_data.rb +0 -279
  121. data/lib/finnhub_ruby/models/etf_profile_data.rb +0 -419
  122. data/lib/finnhub_ruby/models/etf_sector_exposure_data.rb +0 -229
  123. data/lib/finnhub_ruby/models/etfs_country_exposure.rb +0 -231
  124. data/lib/finnhub_ruby/models/etfs_holdings.rb +0 -251
  125. data/lib/finnhub_ruby/models/etfs_profile.rb +0 -228
  126. data/lib/finnhub_ruby/models/etfs_sector_exposure.rb +0 -231
  127. data/lib/finnhub_ruby/models/fda_comittee_meeting.rb +0 -249
  128. data/lib/finnhub_ruby/models/filing.rb +0 -289
  129. data/lib/finnhub_ruby/models/filing_sentiment.rb +0 -299
  130. data/lib/finnhub_ruby/models/financial_statements.rb +0 -231
  131. data/lib/finnhub_ruby/models/financials_as_reported.rb +0 -241
  132. data/lib/finnhub_ruby/models/forex_candles.rb +0 -291
  133. data/lib/finnhub_ruby/models/forex_symbol.rb +0 -239
  134. data/lib/finnhub_ruby/models/forexrates.rb +0 -228
  135. data/lib/finnhub_ruby/models/fund_ownership.rb +0 -231
  136. data/lib/finnhub_ruby/models/fund_ownership_info.rb +0 -259
  137. data/lib/finnhub_ruby/models/historical_nbbo.rb +0 -345
  138. data/lib/finnhub_ruby/models/index_historical_constituent.rb +0 -239
  139. data/lib/finnhub_ruby/models/indicator.rb +0 -239
  140. data/lib/finnhub_ruby/models/indices_constituents.rb +0 -231
  141. data/lib/finnhub_ruby/models/indices_historical_constituents.rb +0 -231
  142. data/lib/finnhub_ruby/models/insider_sentiments.rb +0 -231
  143. data/lib/finnhub_ruby/models/insider_sentiments_data.rb +0 -259
  144. data/lib/finnhub_ruby/models/insider_transactions.rb +0 -231
  145. data/lib/finnhub_ruby/models/institutional_ownership.rb +0 -241
  146. data/lib/finnhub_ruby/models/institutional_ownership_group.rb +0 -231
  147. data/lib/finnhub_ruby/models/institutional_ownership_info.rb +0 -309
  148. data/lib/finnhub_ruby/models/institutional_portfolio.rb +0 -241
  149. data/lib/finnhub_ruby/models/institutional_portfolio_group.rb +0 -241
  150. data/lib/finnhub_ruby/models/institutional_portfolio_info.rb +0 -319
  151. data/lib/finnhub_ruby/models/institutional_profile.rb +0 -231
  152. data/lib/finnhub_ruby/models/institutional_profile_info.rb +0 -269
  153. data/lib/finnhub_ruby/models/international_filing.rb +0 -299
  154. data/lib/finnhub_ruby/models/investment_theme_portfolio.rb +0 -219
  155. data/lib/finnhub_ruby/models/investment_themes.rb +0 -231
  156. data/lib/finnhub_ruby/models/investment_themes_thematic_investing.rb +0 -231
  157. data/lib/finnhub_ruby/models/investor.rb +0 -249
  158. data/lib/finnhub_ruby/models/investors_ownership.rb +0 -219
  159. data/lib/finnhub_ruby/models/ipo_calendar.rb +0 -221
  160. data/lib/finnhub_ruby/models/ipo_event.rb +0 -289
  161. data/lib/finnhub_ruby/models/isin_change.rb +0 -241
  162. data/lib/finnhub_ruby/models/isin_change_info.rb +0 -239
  163. data/lib/finnhub_ruby/models/key_customers_suppliers.rb +0 -329
  164. data/lib/finnhub_ruby/models/last_bid_ask.rb +0 -259
  165. data/lib/finnhub_ruby/models/lobbying_data.rb +0 -359
  166. data/lib/finnhub_ruby/models/lobbying_result.rb +0 -231
  167. data/lib/finnhub_ruby/models/major_developments.rb +0 -219
  168. data/lib/finnhub_ruby/models/major_press_releases.rb +0 -231
  169. data/lib/finnhub_ruby/models/market_news.rb +0 -299
  170. data/lib/finnhub_ruby/models/mutual_fund_country_exposure.rb +0 -231
  171. data/lib/finnhub_ruby/models/mutual_fund_country_exposure_data.rb +0 -229
  172. data/lib/finnhub_ruby/models/mutual_fund_holdings.rb +0 -251
  173. data/lib/finnhub_ruby/models/mutual_fund_holdings_data.rb +0 -279
  174. data/lib/finnhub_ruby/models/mutual_fund_profile.rb +0 -228
  175. data/lib/finnhub_ruby/models/mutual_fund_profile_data.rb +0 -479
  176. data/lib/finnhub_ruby/models/mutual_fund_sector_exposure.rb +0 -231
  177. data/lib/finnhub_ruby/models/mutual_fund_sector_exposure_data.rb +0 -229
  178. data/lib/finnhub_ruby/models/mutual_funds_country_exposure.rb +0 -231
  179. data/lib/finnhub_ruby/models/mutual_funds_holdings.rb +0 -251
  180. data/lib/finnhub_ruby/models/mutual_funds_profile.rb +0 -228
  181. data/lib/finnhub_ruby/models/news.rb +0 -299
  182. data/lib/finnhub_ruby/models/news_sentiment.rb +0 -267
  183. data/lib/finnhub_ruby/models/ownership.rb +0 -231
  184. data/lib/finnhub_ruby/models/ownership_info.rb +0 -249
  185. data/lib/finnhub_ruby/models/pattern_recognition.rb +0 -221
  186. data/lib/finnhub_ruby/models/press_release.rb +0 -231
  187. data/lib/finnhub_ruby/models/price_metrics.rb +0 -228
  188. data/lib/finnhub_ruby/models/price_target.rb +0 -269
  189. data/lib/finnhub_ruby/models/quote.rb +0 -279
  190. data/lib/finnhub_ruby/models/recommendation_trend.rb +0 -279
  191. data/lib/finnhub_ruby/models/reddit_sentiment_content.rb +0 -279
  192. data/lib/finnhub_ruby/models/report.rb +0 -318
  193. data/lib/finnhub_ruby/models/revenue_breakdown.rb +0 -241
  194. data/lib/finnhub_ruby/models/revenue_estimates.rb +0 -241
  195. data/lib/finnhub_ruby/models/revenue_estimates_info.rb +0 -259
  196. data/lib/finnhub_ruby/models/sec_sentiment_analysis.rb +0 -248
  197. data/lib/finnhub_ruby/models/sector_metric.rb +0 -231
  198. data/lib/finnhub_ruby/models/sector_metric_data.rb +0 -229
  199. data/lib/finnhub_ruby/models/sentiment.rb +0 -229
  200. data/lib/finnhub_ruby/models/similarity_index.rb +0 -241
  201. data/lib/finnhub_ruby/models/similarity_index_info.rb +0 -329
  202. data/lib/finnhub_ruby/models/social_sentiment.rb +0 -243
  203. data/lib/finnhub_ruby/models/split.rb +0 -249
  204. data/lib/finnhub_ruby/models/stock.rb +0 -249
  205. data/lib/finnhub_ruby/models/stock_candles.rb +0 -291
  206. data/lib/finnhub_ruby/models/stock_symbol.rb +0 -309
  207. data/lib/finnhub_ruby/models/stock_transcripts.rb +0 -259
  208. data/lib/finnhub_ruby/models/supply_chain_relationships.rb +0 -231
  209. data/lib/finnhub_ruby/models/support_resistance.rb +0 -221
  210. data/lib/finnhub_ruby/models/symbol_change.rb +0 -241
  211. data/lib/finnhub_ruby/models/symbol_change_info.rb +0 -239
  212. data/lib/finnhub_ruby/models/symbol_lookup.rb +0 -231
  213. data/lib/finnhub_ruby/models/symbol_lookup_info.rb +0 -249
  214. data/lib/finnhub_ruby/models/technical_analysis.rb +0 -228
  215. data/lib/finnhub_ruby/models/tick_data.rb +0 -309
  216. data/lib/finnhub_ruby/models/transactions.rb +0 -289
  217. data/lib/finnhub_ruby/models/transcript_content.rb +0 -241
  218. data/lib/finnhub_ruby/models/transcript_participant.rb +0 -239
  219. data/lib/finnhub_ruby/models/trend.rb +0 -229
  220. data/lib/finnhub_ruby/models/twitter_sentiment_content.rb +0 -279
  221. data/lib/finnhub_ruby/models/upgrade_downgrade.rb +0 -269
  222. data/lib/finnhub_ruby/models/usa_spending.rb +0 -409
  223. data/lib/finnhub_ruby/models/usa_spending_result.rb +0 -231
  224. data/lib/finnhub_ruby/models/uspto_patent.rb +0 -301
  225. data/lib/finnhub_ruby/models/uspto_patent_result.rb +0 -231
  226. data/lib/finnhub_ruby/models/visa_application.rb +0 -439
  227. data/lib/finnhub_ruby/models/visa_application_result.rb +0 -231
  228. data/spec/api/default_api_spec.rb +0 -724
  229. data/spec/api_client_spec.rb +0 -226
  230. data/spec/configuration_spec.rb +0 -42
  231. data/spec/models/aggregate_indicators_spec.rb +0 -40
  232. data/spec/models/basic_financials_spec.rb +0 -52
  233. data/spec/models/bond_candles_spec.rb +0 -46
  234. data/spec/models/bond_profile_spec.rb +0 -154
  235. data/spec/models/bond_tick_data_spec.rb +0 -82
  236. data/spec/models/breakdown_item_spec.rb +0 -40
  237. data/spec/models/company_earnings_quality_score_data_spec.rb +0 -70
  238. data/spec/models/company_earnings_quality_score_spec.rb +0 -46
  239. data/spec/models/company_esg_spec.rb +0 -64
  240. data/spec/models/company_executive_spec.rb +0 -40
  241. data/spec/models/company_news_spec.rb +0 -82
  242. data/spec/models/company_news_statistics_spec.rb +0 -46
  243. data/spec/models/company_profile2_spec.rb +0 -100
  244. data/spec/models/company_profile_spec.rb +0 -196
  245. data/spec/models/company_spec.rb +0 -70
  246. data/spec/models/country_metadata_spec.rb +0 -64
  247. data/spec/models/covid_info_spec.rb +0 -52
  248. data/spec/models/crypto_candles_spec.rb +0 -70
  249. data/spec/models/crypto_profile_spec.rb +0 -94
  250. data/spec/models/crypto_symbol_spec.rb +0 -46
  251. data/spec/models/development_spec.rb +0 -58
  252. data/spec/models/dividends2_info_spec.rb +0 -40
  253. data/spec/models/dividends2_spec.rb +0 -40
  254. data/spec/models/dividends_spec.rb +0 -76
  255. data/spec/models/earning_estimate_spec.rb +0 -58
  256. data/spec/models/earning_release_spec.rb +0 -82
  257. data/spec/models/earning_result_spec.rb +0 -64
  258. data/spec/models/earnings_calendar_spec.rb +0 -34
  259. data/spec/models/earnings_call_transcripts_list_spec.rb +0 -40
  260. data/spec/models/earnings_call_transcripts_spec.rb +0 -82
  261. data/spec/models/earnings_estimates_info_spec.rb +0 -58
  262. data/spec/models/earnings_estimates_spec.rb +0 -46
  263. data/spec/models/ebit_estimates_info_spec.rb +0 -58
  264. data/spec/models/ebit_estimates_spec.rb +0 -46
  265. data/spec/models/ebitda_estimates_info_spec.rb +0 -58
  266. data/spec/models/ebitda_estimates_spec.rb +0 -46
  267. data/spec/models/economic_calendar_spec.rb +0 -34
  268. data/spec/models/economic_code_spec.rb +0 -52
  269. data/spec/models/economic_data_info_spec.rb +0 -40
  270. data/spec/models/economic_data_spec.rb +0 -40
  271. data/spec/models/economic_event_spec.rb +0 -76
  272. data/spec/models/estimate_spec.rb +0 -58
  273. data/spec/models/etf_country_exposure_data_spec.rb +0 -40
  274. data/spec/models/etf_holdings_data_spec.rb +0 -70
  275. data/spec/models/etf_profile_data_spec.rb +0 -136
  276. data/spec/models/etf_sector_exposure_data_spec.rb +0 -40
  277. data/spec/models/etfs_country_exposure_spec.rb +0 -40
  278. data/spec/models/etfs_holdings_spec.rb +0 -52
  279. data/spec/models/etfs_profile_spec.rb +0 -40
  280. data/spec/models/etfs_sector_exposure_spec.rb +0 -40
  281. data/spec/models/fda_comittee_meeting_spec.rb +0 -52
  282. data/spec/models/filing_sentiment_spec.rb +0 -82
  283. data/spec/models/filing_spec.rb +0 -76
  284. data/spec/models/financial_statements_spec.rb +0 -40
  285. data/spec/models/financials_as_reported_spec.rb +0 -46
  286. data/spec/models/forex_candles_spec.rb +0 -70
  287. data/spec/models/forex_symbol_spec.rb +0 -46
  288. data/spec/models/forexrates_spec.rb +0 -40
  289. data/spec/models/fund_ownership_info_spec.rb +0 -58
  290. data/spec/models/fund_ownership_spec.rb +0 -40
  291. data/spec/models/historical_nbbo_spec.rb +0 -100
  292. data/spec/models/index_historical_constituent_spec.rb +0 -46
  293. data/spec/models/indicator_spec.rb +0 -46
  294. data/spec/models/indices_constituents_spec.rb +0 -40
  295. data/spec/models/indices_historical_constituents_spec.rb +0 -40
  296. data/spec/models/insider_sentiments_data_spec.rb +0 -58
  297. data/spec/models/insider_sentiments_spec.rb +0 -40
  298. data/spec/models/insider_transactions_spec.rb +0 -40
  299. data/spec/models/institutional_ownership_group_spec.rb +0 -40
  300. data/spec/models/institutional_ownership_info_spec.rb +0 -88
  301. data/spec/models/institutional_ownership_spec.rb +0 -46
  302. data/spec/models/institutional_portfolio_group_spec.rb +0 -46
  303. data/spec/models/institutional_portfolio_info_spec.rb +0 -94
  304. data/spec/models/institutional_portfolio_spec.rb +0 -46
  305. data/spec/models/institutional_profile_info_spec.rb +0 -64
  306. data/spec/models/institutional_profile_spec.rb +0 -40
  307. data/spec/models/international_filing_spec.rb +0 -82
  308. data/spec/models/investment_theme_portfolio_spec.rb +0 -34
  309. data/spec/models/investment_themes_spec.rb +0 -40
  310. data/spec/models/ipo_calendar_spec.rb +0 -34
  311. data/spec/models/ipo_event_spec.rb +0 -76
  312. data/spec/models/isin_change_info_spec.rb +0 -46
  313. data/spec/models/isin_change_spec.rb +0 -46
  314. data/spec/models/key_customers_suppliers_spec.rb +0 -52
  315. data/spec/models/last_bid_ask_spec.rb +0 -58
  316. data/spec/models/lobbying_data_spec.rb +0 -118
  317. data/spec/models/lobbying_result_spec.rb +0 -40
  318. data/spec/models/market_news_spec.rb +0 -82
  319. data/spec/models/mutual_fund_country_exposure_data_spec.rb +0 -40
  320. data/spec/models/mutual_fund_country_exposure_spec.rb +0 -40
  321. data/spec/models/mutual_fund_holdings_data_spec.rb +0 -70
  322. data/spec/models/mutual_fund_holdings_spec.rb +0 -52
  323. data/spec/models/mutual_fund_profile_data_spec.rb +0 -154
  324. data/spec/models/mutual_fund_profile_spec.rb +0 -40
  325. data/spec/models/mutual_fund_sector_exposure_data_spec.rb +0 -40
  326. data/spec/models/mutual_fund_sector_exposure_spec.rb +0 -40
  327. data/spec/models/news_sentiment_spec.rb +0 -64
  328. data/spec/models/ownership_info_spec.rb +0 -52
  329. data/spec/models/ownership_spec.rb +0 -40
  330. data/spec/models/pattern_recognition_spec.rb +0 -34
  331. data/spec/models/press_release_spec.rb +0 -40
  332. data/spec/models/price_metrics_spec.rb +0 -40
  333. data/spec/models/price_target_spec.rb +0 -64
  334. data/spec/models/quote_spec.rb +0 -70
  335. data/spec/models/recommendation_trend_spec.rb +0 -70
  336. data/spec/models/reddit_sentiment_content_spec.rb +0 -70
  337. data/spec/models/report_spec.rb +0 -94
  338. data/spec/models/revenue_breakdown_spec.rb +0 -46
  339. data/spec/models/revenue_estimates_info_spec.rb +0 -58
  340. data/spec/models/revenue_estimates_spec.rb +0 -46
  341. data/spec/models/sec_sentiment_analysis_spec.rb +0 -52
  342. data/spec/models/sector_metric_data_spec.rb +0 -40
  343. data/spec/models/sector_metric_spec.rb +0 -40
  344. data/spec/models/sentiment_spec.rb +0 -40
  345. data/spec/models/similarity_index_info_spec.rb +0 -100
  346. data/spec/models/similarity_index_spec.rb +0 -46
  347. data/spec/models/social_sentiment_spec.rb +0 -46
  348. data/spec/models/split_spec.rb +0 -52
  349. data/spec/models/stock_candles_spec.rb +0 -70
  350. data/spec/models/stock_symbol_spec.rb +0 -70
  351. data/spec/models/stock_transcripts_spec.rb +0 -58
  352. data/spec/models/supply_chain_relationships_spec.rb +0 -40
  353. data/spec/models/support_resistance_spec.rb +0 -34
  354. data/spec/models/symbol_change_info_spec.rb +0 -46
  355. data/spec/models/symbol_change_spec.rb +0 -46
  356. data/spec/models/symbol_lookup_info_spec.rb +0 -52
  357. data/spec/models/symbol_lookup_spec.rb +0 -40
  358. data/spec/models/technical_analysis_spec.rb +0 -40
  359. data/spec/models/tick_data_spec.rb +0 -82
  360. data/spec/models/transactions_spec.rb +0 -70
  361. data/spec/models/transcript_content_spec.rb +0 -46
  362. data/spec/models/transcript_participant_spec.rb +0 -46
  363. data/spec/models/trend_spec.rb +0 -40
  364. data/spec/models/twitter_sentiment_content_spec.rb +0 -70
  365. data/spec/models/upgrade_downgrade_spec.rb +0 -64
  366. data/spec/models/usa_spending_result_spec.rb +0 -40
  367. data/spec/models/usa_spending_spec.rb +0 -148
  368. data/spec/models/uspto_patent_result_spec.rb +0 -40
  369. data/spec/models/uspto_patent_spec.rb +0 -82
  370. data/spec/models/visa_application_result_spec.rb +0 -40
  371. data/spec/models/visa_application_spec.rb +0 -166
  372. data/spec/spec_helper.rb +0 -111
data/lib/finnhub_ruby.rb CHANGED
@@ -1,171 +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/breakdown_item'
26
- require 'finnhub_ruby/models/company'
27
- require 'finnhub_ruby/models/company_esg'
28
- require 'finnhub_ruby/models/company_earnings_quality_score'
29
- require 'finnhub_ruby/models/company_earnings_quality_score_data'
30
- require 'finnhub_ruby/models/company_executive'
31
- require 'finnhub_ruby/models/company_news'
32
- require 'finnhub_ruby/models/company_news_statistics'
33
- require 'finnhub_ruby/models/company_profile'
34
- require 'finnhub_ruby/models/company_profile2'
35
- require 'finnhub_ruby/models/country_metadata'
36
- require 'finnhub_ruby/models/covid_info'
37
- require 'finnhub_ruby/models/crypto_candles'
38
- require 'finnhub_ruby/models/crypto_profile'
39
- require 'finnhub_ruby/models/crypto_symbol'
40
- require 'finnhub_ruby/models/development'
41
- require 'finnhub_ruby/models/dividends'
42
- require 'finnhub_ruby/models/dividends2'
43
- require 'finnhub_ruby/models/dividends2_info'
44
- require 'finnhub_ruby/models/etf_country_exposure_data'
45
- require 'finnhub_ruby/models/etf_holdings_data'
46
- require 'finnhub_ruby/models/etf_profile_data'
47
- require 'finnhub_ruby/models/etf_sector_exposure_data'
48
- require 'finnhub_ruby/models/etfs_country_exposure'
49
- require 'finnhub_ruby/models/etfs_holdings'
50
- require 'finnhub_ruby/models/etfs_profile'
51
- require 'finnhub_ruby/models/etfs_sector_exposure'
52
- require 'finnhub_ruby/models/earning_release'
53
- require 'finnhub_ruby/models/earning_result'
54
- require 'finnhub_ruby/models/earnings_calendar'
55
- require 'finnhub_ruby/models/earnings_call_transcripts'
56
- require 'finnhub_ruby/models/earnings_call_transcripts_list'
57
- require 'finnhub_ruby/models/earnings_estimates'
58
- require 'finnhub_ruby/models/earnings_estimates_info'
59
- require 'finnhub_ruby/models/ebit_estimates'
60
- require 'finnhub_ruby/models/ebit_estimates_info'
61
- require 'finnhub_ruby/models/ebitda_estimates'
62
- require 'finnhub_ruby/models/ebitda_estimates_info'
63
- require 'finnhub_ruby/models/economic_calendar'
64
- require 'finnhub_ruby/models/economic_code'
65
- require 'finnhub_ruby/models/economic_data'
66
- require 'finnhub_ruby/models/economic_data_info'
67
- require 'finnhub_ruby/models/economic_event'
68
- require 'finnhub_ruby/models/fda_comittee_meeting'
69
- require 'finnhub_ruby/models/filing'
70
- require 'finnhub_ruby/models/filing_sentiment'
71
- require 'finnhub_ruby/models/financial_statements'
72
- require 'finnhub_ruby/models/financials_as_reported'
73
- require 'finnhub_ruby/models/forex_candles'
74
- require 'finnhub_ruby/models/forex_symbol'
75
- require 'finnhub_ruby/models/forexrates'
76
- require 'finnhub_ruby/models/fund_ownership'
77
- require 'finnhub_ruby/models/fund_ownership_info'
78
- require 'finnhub_ruby/models/historical_nbbo'
79
- require 'finnhub_ruby/models/ipo_calendar'
80
- require 'finnhub_ruby/models/ipo_event'
81
- require 'finnhub_ruby/models/index_historical_constituent'
82
- require 'finnhub_ruby/models/indicator'
83
- require 'finnhub_ruby/models/indices_constituents'
84
- require 'finnhub_ruby/models/indices_historical_constituents'
85
- require 'finnhub_ruby/models/insider_sentiments'
86
- require 'finnhub_ruby/models/insider_sentiments_data'
87
- require 'finnhub_ruby/models/insider_transactions'
88
- require 'finnhub_ruby/models/institutional_ownership'
89
- require 'finnhub_ruby/models/institutional_ownership_group'
90
- require 'finnhub_ruby/models/institutional_ownership_info'
91
- require 'finnhub_ruby/models/institutional_portfolio'
92
- require 'finnhub_ruby/models/institutional_portfolio_group'
93
- require 'finnhub_ruby/models/institutional_portfolio_info'
94
- require 'finnhub_ruby/models/institutional_profile'
95
- require 'finnhub_ruby/models/institutional_profile_info'
96
- require 'finnhub_ruby/models/international_filing'
97
- require 'finnhub_ruby/models/investment_theme_portfolio'
98
- require 'finnhub_ruby/models/investment_themes'
99
- require 'finnhub_ruby/models/isin_change'
100
- require 'finnhub_ruby/models/isin_change_info'
101
- require 'finnhub_ruby/models/key_customers_suppliers'
102
- require 'finnhub_ruby/models/last_bid_ask'
103
- require 'finnhub_ruby/models/lobbying_data'
104
- require 'finnhub_ruby/models/lobbying_result'
105
- require 'finnhub_ruby/models/market_news'
106
- require 'finnhub_ruby/models/mutual_fund_country_exposure'
107
- require 'finnhub_ruby/models/mutual_fund_country_exposure_data'
108
- require 'finnhub_ruby/models/mutual_fund_holdings'
109
- require 'finnhub_ruby/models/mutual_fund_holdings_data'
110
- require 'finnhub_ruby/models/mutual_fund_profile'
111
- require 'finnhub_ruby/models/mutual_fund_profile_data'
112
- require 'finnhub_ruby/models/mutual_fund_sector_exposure'
113
- require 'finnhub_ruby/models/mutual_fund_sector_exposure_data'
114
- require 'finnhub_ruby/models/news_sentiment'
115
- require 'finnhub_ruby/models/ownership'
116
- require 'finnhub_ruby/models/ownership_info'
117
- require 'finnhub_ruby/models/pattern_recognition'
118
- require 'finnhub_ruby/models/press_release'
119
- require 'finnhub_ruby/models/price_metrics'
120
- require 'finnhub_ruby/models/price_target'
121
- require 'finnhub_ruby/models/quote'
122
- require 'finnhub_ruby/models/recommendation_trend'
123
- require 'finnhub_ruby/models/reddit_sentiment_content'
124
- require 'finnhub_ruby/models/report'
125
- require 'finnhub_ruby/models/revenue_breakdown'
126
- require 'finnhub_ruby/models/revenue_estimates'
127
- require 'finnhub_ruby/models/revenue_estimates_info'
128
- require 'finnhub_ruby/models/sec_sentiment_analysis'
129
- require 'finnhub_ruby/models/sector_metric'
130
- require 'finnhub_ruby/models/sector_metric_data'
131
- require 'finnhub_ruby/models/sentiment'
132
- require 'finnhub_ruby/models/similarity_index'
133
- require 'finnhub_ruby/models/similarity_index_info'
134
- require 'finnhub_ruby/models/social_sentiment'
135
- require 'finnhub_ruby/models/split'
136
- require 'finnhub_ruby/models/stock_candles'
137
- require 'finnhub_ruby/models/stock_symbol'
138
- require 'finnhub_ruby/models/stock_transcripts'
139
- require 'finnhub_ruby/models/supply_chain_relationships'
140
- require 'finnhub_ruby/models/support_resistance'
141
- require 'finnhub_ruby/models/symbol_change'
142
- require 'finnhub_ruby/models/symbol_change_info'
143
- require 'finnhub_ruby/models/symbol_lookup'
144
- require 'finnhub_ruby/models/symbol_lookup_info'
145
- require 'finnhub_ruby/models/technical_analysis'
146
- require 'finnhub_ruby/models/tick_data'
147
- require 'finnhub_ruby/models/transactions'
148
- require 'finnhub_ruby/models/transcript_content'
149
- require 'finnhub_ruby/models/transcript_participant'
150
- require 'finnhub_ruby/models/trend'
151
- require 'finnhub_ruby/models/twitter_sentiment_content'
152
- require 'finnhub_ruby/models/upgrade_downgrade'
153
- require 'finnhub_ruby/models/usa_spending'
154
- require 'finnhub_ruby/models/usa_spending_result'
155
- require 'finnhub_ruby/models/uspto_patent'
156
- require 'finnhub_ruby/models/uspto_patent_result'
157
- require 'finnhub_ruby/models/visa_application'
158
- require 'finnhub_ruby/models/visa_application_result'
159
-
160
- # APIs
161
- 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'
162
7
 
163
8
  module FinnhubRuby
164
9
  class << self
165
10
  # Customize default settings for the SDK using block.
166
11
  # FinnhubRuby.configure do |config|
167
- # config.username = "xxx"
168
- # config.password = "xxx"
12
+ # config.api_key['api_key'] = "YOUR API KEY"
169
13
  # end
170
14
  # If no block given, return the default Configuration object.
171
15
  def configure
@@ -176,4 +20,515 @@ module FinnhubRuby
176
20
  end
177
21
  end
178
22
  end
179
- 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