defmodule HeliumElixir do
@moduledoc """
Documentation for HeliumElixir.
"""
alias HeliumElixir.BlockchainApi
alias HeliumElixir.BlockchainApi.BlockchainRequestConfig
alias HeliumElixir.BlockchainApi.TakeMinConfig
alias HeliumElixir.RequestConfig
defp appendPath(%RequestConfig{base_url: base_url, headers: headers}, path) do
%BlockchainRequestConfig{base_url: base_url, headers: headers, path: path}
end
def account(%RequestConfig{} = config, address) do
appendPath(config, "/accounts/#{address}")
|> BlockchainApi.get_json()
end
def account_activity(%RequestConfig{} = config, %{
address: address,
cursor: cursor,
count: count
}) do
appendPath(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
appendPath(config, "/accounts/#{address}/rewards/sum")
|> BlockchainApi.get_json(%{
min_time: min_time,
max_time: max_time
})
end
def submit_transaction(%RequestConfig{} = config, txn) do
appendPath(config, "/pending_transactions") |> BlockchainApi.post_json(%{"txn" => txn})
end
def current_oracle_price(%RequestConfig{} = config) do
appendPath(config, "/oracle/prices/current") |> BlockchainApi.get_json()
end
end