defmodule ExFinancialModelingPrep.Api.StockLookUpTool do
@moduledoc """
[Stock Look Up Tool API](https://site.financialmodelingprep.com/developer/docs/#Stock-News)
"""
alias ExFinancialModelingPrep.Api.Client
alias ExFinancialModelingPrep.Struct.Search
@spec search(String.t(), [tuple()]) :: {:ok, [Search.t()]} | {:error, HTTPoison.Error.t()}
def search(ticker_or_company, opts \\ []) do
Enum.into(opts ++ [query: ticker_or_company], %{})
|> URI.encode_query()
|> (&Client.get("api/v3/search?" <> &1)).()
|> case do
{:ok, %{status_code: 200, body: companies}} ->
Enum.map(companies, fn company ->
%Search{
currency: company["currency"],
exchange_short_name: company["exchangeShortName"],
name: company["name"],
stock_exchange: company["stockExchange"],
symbol: company["symbol"]
}
end)
{:error, error} ->
{:error, error}
end
end
end