ForexFactory
ForexFactory API Client for Elixir.
Installation
Add forex_factory to your list of dependencies in mix.exs:
def deps do
[
{:forex_factory, "~> 0.1.0"}
]
endUsage
Get data by type and given currency
As simple as this (thanks to little meta-programming magic).
iex(1)> ForexFactory.Events.Inflation.CPI.data(:USD, limit: 1)
{:ok,
%{
"data" => %{
"events" => [
%{
"actual" => 3.2,
"actual_formatted" => "3.2%",
"date" => "Mar 12, 2024",
"dateline" => 1710246600,
"forecast" => 3.1,
"forecast_formatted" => "3.1%",
"id" => 136044,
"is_active" => false,
"is_most_recent" => true,
"revision" => nil,
"revision_formatted" => nil
}
],
"future_timestamps" => [1712005200],
"past_timestamps" => [1707831000]
},
"meta" => %{
"decimals" => 1,
"ebase_event_id" => 884,
"interval_name" => "MN1",
"is_more" => true,
"zero_line" => 0
}
}}Get all events for a type
iex(2)> ForexFactory.Events.Inflation.CORE_CPI |> ForexFactory.events()
[
%ForexFactory.Event{
id: "136038",
type: ForexFactory.Events.Inflation.CORE_CPI,
currency: :USD,
frequency: :MoM
},
%ForexFactory.Event{
id: "139672",
type: ForexFactory.Events.Inflation.CORE_CPI,
currency: :JPY,
frequency: :YoY
},
%ForexFactory.Event{
id: "138953",
type: ForexFactory.Events.Inflation.CORE_CPI,
currency: :EUR,
frequency: :YoY
}
]Get a specific event by currency
iex(11)> ForexFactory.Events.Inflation.CORE_CPI |> ForexFactory.event(:USD)
{:ok,
%ForexFactory.Event{
id: "136038",
type: ForexFactory.Events.Inflation.CORE_CPI,
currency: :USD,
frequency: :MoM
}}or using bang! function
iex(2)> ForexFactory.Events.Inflation.CORE_CPI |> ForexFactory.event!(:USD)
%ForexFactory.Event{
id: "136038",
type: ForexFactory.Events.Inflation.CORE_CPI,
currency: :USD,
frequency: :MoM
}Get data for a specific event
iex(5)> ForexFactory.Events.Inflation.CPI |> ForexFactory.event!(:USD) |> ForexFactory.data(limit: 1)
{:ok,
%{
"data" => %{
"events" => [
%{
"actual" => 3.2,
"actual_formatted" => "3.2%",
"date" => "Mar 12, 2024",
"dateline" => 1710246600,
"forecast" => 3.1,
"forecast_formatted" => "3.1%",
"id" => 136044,
"is_active" => false,
"is_most_recent" => true,
"revision" => nil,
"revision_formatted" => nil
}
],
"future_timestamps" => [1712005200],
"past_timestamps" => [1707831000]
},
"meta" => %{
"decimals" => 1,
"ebase_event_id" => 884,
"interval_name" => "MN1",
"is_more" => true,
"zero_line" => 0
}
}}