Epik.Client (Epik v0.2.3) View Source

API client for the Epik.com v2 API.

Interact with the API directly. It's usually better to use the Epik module if such a function exists. Otherwise, this module can do everything else.

  • The path parameter in each function is appended to the endpoint set in your config. It should always begin with a forward slash, for example: /v2/domains/check

  • The signature included in your config is used automatically to authenticate requests.

It uses HTTPoison to make requests and parses the response with Jason. The API is slightly different than HTTPoison to make it more ergonomic for use with Epik, but it does return HTTPoison.Response structs.

Link to this section Summary

Functions

Send a GET request.

Send a POST request.

General request function. If there's something the other functions in this module can't do, you can use this instead.

Link to this section Functions

Link to this function

get(path, params \\ %{})

View Source

Specs

get(path :: String.t(), params :: map()) ::
  {:ok, HTTPoison.Response.t()} | {:error, any()}

Send a GET request.

iex(1)> Epik.Client.get("/v2/domains/check", %{"DOMAINS" => "tribes.host,fediverse.gold"})
{:ok,
 %HTTPoison.Response{
   status_code: 200,
   body: %{
     "code" => 1000,
     "data" => %{
       "FEDIVERSE.GOLD" => %{
         "available" => 1,
         "domain" => "FEDIVERSE.GOLD",
         "premium" => 0,
         "price" => 5.49,
         "supported" => 1
       },
       "TRIBES.HOST" => %{
         "available" => 0,
         "available_reason" => "in use",
         "domain" => "TRIBES.HOST",
         "premium" => 0,
         "supported" => 1
       }
     },
     "message" => "Command completed successfully."
   }
 }}

Specs

post(path :: String.t(), body :: any()) ::
  {:ok, HTTPoison.Response.t()} | {:error, any()}

Send a POST request.

iex(1)> Epik.Client.post("/v2/domains/fedigold.xyz/create", %{"PERIOD" => 1})
{:ok,
 %HTTPoison.Response{
   status_code: 200,
   body: %{
     "code" => 1000,
     "data" => %{
       "FEDIGOLD.XYZ" => %{
         "error" => 0,
         "message" => "Successfully created",
         "payment" => %{
           "error" => 0,
           "paymentStatus" => true,
           "paymentValue" => 0.99,
           "period" => "1",
           "pricePerPeriod" => 0.99
         },
         "paymentStatus" => true,
         "paymentValue" => 0.99,
         "period" => "1",
         "pricePerPeriod" => 0.99
       }
     },
     "message" => "Command completed successfully.",
     "period" => "1",
     "total" => %{
       "amount" => 0.99,
       "message" => "Withdraw money successfully",
       "method" => "Balance",
       "success" => true
     }
   }
 }}
Link to this function

request(method, path, params \\ %{}, body \\ "", headers \\ [], options \\ [])

View Source

Specs

request(
  method :: HTTPoison.Base.method(),
  path :: String.t(),
  params :: map(),
  body :: any(),
  headers :: HTTPoison.Base.headers(),
  options :: Keyword.t()
) :: {:ok, HTTPoison.Response.t()} | {:error, any()}

General request function. If there's something the other functions in this module can't do, you can use this instead.

iex(1)> Epik.Client.request(:get, "/v2/domains/check", %{"DOMAINS" => "tribes.host,fediverse.gold"}, "", [{"user-agent", "Epik Elixir API Client <https://hex.pm/packages/epik>; Bot"}])
{:ok,
 %HTTPoison.Response{
   status_code: 200,
   body: %{
     "code" => 1000,
     "data" => %{
       "FEDIVERSE.GOLD" => %{
         "available" => 1,
         "domain" => "FEDIVERSE.GOLD",
         "premium" => 0,
         "price" => 5.49,
         "supported" => 1
       },
       "TRIBES.HOST" => %{
         "available" => 0,
         "available_reason" => "in use",
         "domain" => "TRIBES.HOST",
         "premium" => 0,
         "supported" => 1
       }
     },
     "message" => "Command completed successfully."
   }
 }}