Current section

Files

Jump to
ex_sonar lib customer.ex
Raw

lib/customer.ex

defmodule ExSonar.Customer do
alias ExSonar.Helper.Helper, as: Helper
alias ExSonar.Helper.Internal, as: Internal
use HTTPoison.Base
@url Helper.url(:customer)
@opts Helper.config_opts
@moduledoc """
Customer related info
"""
@doc ~S"""
Get a specific customer
"""
def get_customer(phone_number) do
tokened_url =
@url <>
"?token=#{@opts[:xtoken]}" <>
"&phone_number=#{phone_number}"
HTTPoison.get!(tokened_url)
end
@doc ~S"""
Return a list of phone numbers avialable to you
"""
def available_numbers() do
url = Helper.api_url <> "phone_numbers/available"
HTTPoison.get!(url, [{"X-Publishable-Key", @opts[:public_key]}], [])
end
@doc """
 Return a list of all customers
"""
def all_customers() do
internal_api = Helper.url <> "/api/customers?customer_type=all"
{{"Set-Cookie", cookie }, auth_token} = Internal.sign_in()
headers =
[{"Cookie", cookie}, {"Referer", Helper.url},
{"User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2724.0 Safari/537.36"}, {"X-CSRF-Token", auth_token}, {"X-Requested-With", "XMLHttpRequest"} ]
%HTTPoison.Response{body: response} = HTTPoison.get!(internal_api, headers)
Helper.decode(response)
end
@doc """
Add or update a user
"""
def build(params) do
{:ok, data} = params |> Poison.encode
headers = [{"X-Token", @opts[:xtoken]}, {"Content-Type", "application/json"}]
response = HTTPoison.post!(@url, data, headers)
if response.status_code <= 300, do: true, else: false
end
end