Here’s the code:
def get_trading_activity do
case HTTPoison.get("https://api.wavesplatform.com/v0/pairs") do
{:ok, _} ->
results = HTTPoison.get!("https://api.wavesplatform.com/v0/pairs")
%{data: items} = Poison.decode!(results.body, keys: :atoms)
market_snapshot = Enum.map(items, fn item ->
%{
asset: item.amountAsset,
priced_in: item.priceAsset,
last: get_in(item, [:data, :lastPrice]),
volume: get_in(item, [:data, :volumeWaves])
}
end)
#IO.inspect(market_snapshot, limit: :infinity)
#Exclude all pairs with volumeWAVES < 500
volume_greater_than_500 = Enum.filter(market_snapshot, fn map -> map.volume >= 500 end)
#IO.inspect(volume_greater_than_500, limit: :infinity)
total_pairs = Enum.count(volume_greater_than_500, &(&1.asset))
opportunities = [total_pairs: total_pairs] ++ volume_greater_than_500
{:error, %Elixir.HTTPoison.Error{reason: reason}} ->
IO.inspect reason
end
Here’s how the error came up:
$ iex -S mix compile
Erlang/OTP 21 [erts-10.2.4] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Compiling 1 file (.ex)
warning: variable "opportunities" is unused (if the variable is not meant to be used, prefix it with an underscore)
lib/pump.ex:36
warning: unused alias Asset_Pairs
lib/pump.ex:3
warning: unused alias Repo
lib/pump.ex:3
Interactive Elixir (1.8.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> Pump.get_trading_activity
** (ArgumentError) argument error
(stdlib) :ets.lookup_element(:hackney_config, :mod_metrics, 2)
/home/maxximiliann/arbit/deps/hackney/src/hackney_metrics.erl:27: :hackney_metrics.get_engine/0
/home/maxximiliann/arbit/deps/hackney/src/hackney_connect.erl:78: :hackney_connect.create_connection/5
/home/maxximiliann/arbit/deps/hackney/src/hackney_connect.erl:47: :hackney_connect.connect/5
/home/maxximiliann/arbit/deps/hackney/src/hackney.erl:333: :hackney.request/5
lib/httpoison/base.ex:793: HTTPoison.Base.request/6
lib/pump.ex:11: Pump.get_trading_activity/0


















