defmodule HeliumElixir.Accounts do
@moduledoc """
Documentation for HeliumElixir.
"""
alias HeliumElixir
alias HeliumElixir.BlockchainApi
alias HeliumElixir.BlockchainApi.TakeMinConfig
alias HeliumElixir.RequestConfig
def account(%RequestConfig{} = config, address) do
HeliumElixir.append_path(config, "/accounts/#{address}")
|> BlockchainApi.get_json()
end
def account_activity(%RequestConfig{} = config, %{
address: address,
cursor: cursor,
count: count
}) do
HeliumElixir.append_path(config, "/accounts/#{address}/activity")
|> BlockchainApi.take_min(%TakeMinConfig{
cursor: cursor,
min_count: count
})
end
def rewards_sum(%RequestConfig{} = config, %{
address: address,
min_time: min_time,
max_time: max_time
}) do
HeliumElixir.append_path(config, "/accounts/#{address}/rewards/sum")
|> BlockchainApi.get_json(%{
min_time: min_time,
max_time: max_time
})
end
def roles(
%RequestConfig{} = config,
%{
address: address,
cursor: cursor,
count: count
} = params
) do
HeliumElixir.append_path(config, "/accounts/#{address}/roles")
|> BlockchainApi.take_min(%TakeMinConfig{
cursor: cursor,
min_count: count,
params: Map.take(params, [:filter_types, :min_time, :max_time, :limit])
})
end
def list_accounts(%RequestConfig{} = config, fun) do
HeliumElixir.append_path(config, "/accounts")
|> BlockchainApi.each_page(fun)
end
end