Current section
Files
Jump to
Current section
Files
lib/cleaner.ex
defmodule Steemex.Cleaner do
def strip_token_names_and_convert_to_number(data) do
to_clean = ~w(max_accepted_payout promoted total_payout_value pending_payout_value total_pending_payout_value
curator_payout_value promoted balance vesting_withdraw_rate
savings_balance savings_sbd_balance sbd_balance vesting_balance vesting_shares)a
for {k,v} <- data, into: %{} do
{k, (if k in to_clean, do: v |> Float.parse |> elem(0), else: v)}
end
end
def parse_empty_strings(data) do
data
|> Map.update!(:parent_author, &(if &1 == "", do: nil, else: &1) )
|> Map.update!(:author, &(if &1 == "", do: nil, else: &1))
|> Map.update!(:permlink, &(if &1 == "", do: nil, else: &1))
end
def parse_timedate_strings(data) do
to_parse = ~w(created last_payout cashout_time max_cashout_time active last_update)a
for {k, v} <- data, into: %{} do
{k, (if k in to_parse, do: NaiveDateTime.from_iso8601!(v), else: v)}
end
end
def prepare_tags(data) do
update_in(data.tags, &List.wrap/1)
end
def parse_json_strings(x, key) do
if is_map(x[key]) do
x
else
val = x[key] || "{}"
val = if is_boolean(val), do: val, else: "{}" # some comments have boolean values instead of json
case Poison.Parser.parse(val) do
{:ok, map} -> put_in(x, [key], map)
{:error, _} -> put_in(x, [key], %{})
end
end
end
def extract_fields(data = %{json_metadata: ""}) do
data
|> Map.put(:json_metadata, %{})
|> Map.put(:tags, [])
|> Map.put(:tags, nil)
end
def extract_fields(data) do
data
|> (&Map.put(&1, :tags, &1.json_metadata[:tags] || [])).()
|> (&Map.put(&1, :app, &1.json_metadata[:app] || nil)).()
end
end