4
0
Fork 0

Properly returning/formatting the event log

indexed
hswick 7 years ago
parent d95f60f225
commit 6810583771
  1. 15
      lib/exw3.ex
  2. 17
      test/exw3_test.exs

@ -443,7 +443,7 @@ defmodule ExW3 do
Enum.zip(names, ExW3.decode_event(data, signature)) |> Enum.into(%{})
end
defp format_log(log, event_attributes) do
defp format_log_data(log, event_attributes) do
non_indexed_fields =
extract_non_indexed_fields(
Map.get(log, "data"),
@ -468,7 +468,9 @@ defmodule ExW3 do
%{}
end
Map.merge(indexed_fields, non_indexed_fields)
new_data = Map.merge(indexed_fields, non_indexed_fields)
Map.put(log, "data", new_data)
end
defp loop(state) do
@ -481,7 +483,14 @@ defmodule ExW3 do
unless logs == [] do
Enum.each(logs, fn log ->
send filter_attributes[:pid], {:event, {filter_id, format_log(log, event_attributes)}}
formatted_log =
Enum.reduce([
ExW3.keys_to_decimal(log, ["blockNumber", "logIndex", "transactionIndex", "transactionLogIndex"]),
format_log_data(log, event_attributes)
],
&Map.merge/2)
send filter_attributes[:pid], {:event, {filter_id, formatted_log}}
end)
end
loop(state)

@ -224,10 +224,12 @@ defmodule EXW3Test do
state = Agent.get(agent, fn list -> list end)
event_log = Enum.at(state, 0)
assert event_log |> is_map
assert Map.get(event_log, "num") == 42
assert ExW3.bytes_to_string(Map.get(event_log, "data")) == "Hello, World!"
log_data = Map.get(event_log, "data")
assert log_data |> is_map
assert Map.get(log_data, "num") == 42
assert ExW3.bytes_to_string(Map.get(log_data, "data")) == "Hello, World!"
ExW3.uninstall_filter(filter_id)
@ -255,10 +257,11 @@ defmodule EXW3Test do
state = Agent.get(agent, fn list -> list end)
event_log = Enum.at(state, 0)
assert event_log |> is_map
assert Map.get(event_log, "num") == 46
assert ExW3.bytes_to_string(Map.get(event_log, "data")) == "Hello, World!"
assert Map.get(event_log, "otherNum") == 42
log_data = Map.get(event_log, "data")
assert log_data |> is_map
assert Map.get(log_data, "num") == 46
assert ExW3.bytes_to_string(Map.get(log_data, "data")) == "Hello, World!"
assert Map.get(log_data, "otherNum") == 42
ExW3.uninstall_filter(indexed_filter_id)
end

Loading…
Cancel
Save