Packages

Elixir API client for Lisk Blockchain

Current section

Files

Jump to
elisk lib elisk.ex
Raw

lib/elisk.ex

defmodule Elisk do
@moduledoc """
Documentation for Elisk.
"""
@doc """
Lisk api host according to environment
"""
def host, do: Application.get_env(:elisk, :host)
@doc """
Lisk api port according to environment
"""
def port, do: Application.get_env(:elisk, :port)
@doc """
Lisk node address
"""
def node_address, do: "http://#{host()}:#{port()}"
@doc """
Function to construct the url
"""
def build_url(route), do: "#{node_address()}/api#{route}"
@doc """
Function to handle the get request
"""
def handle_get_request(route, args) do
try do
case Elisk.Client.get(route, args) do
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
body |> Poison.decode!
{:ok, %HTTPoison.Response{status_code: 404}} -> "Invalid request :("
{:ok, %HTTPoison.Response{status_code: 400, body: body}} ->
body |> Poison.decode!
{:error, %HTTPoison.Error{reason: reason}} -> reason
end
rescue
e -> e
end
end
@doc """
Function to handle the post request
"""
def handle_post_request(route, args) do
try do
case Elisk.Client.post(route, args) do
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
body |> Poison.decode!
{:ok, %HTTPoison.Response{status_code: 404}} -> "Invalid request :("
{:ok, %HTTPoison.Response{status_code: _, body: body}} ->
body |> Poison.decode!
{:error, %HTTPoison.Error{reason: reason}} -> reason
end
rescue
e -> e
end
end
@doc """
Function to handle the put request
"""
def handle_put_request(route, args) do
try do
case Elisk.Client.put(route, args) do
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
body |> Poison.decode!
{:ok, %HTTPoison.Response{status_code: 404}} -> "Invalid request :("
{:ok, %HTTPoison.Response{status_code: _, body: body}} ->
body |> Poison.decode!
{:error, %HTTPoison.Error{reason: reason}} -> reason
end
rescue
e -> e
end
end
end