Current section
Files
Jump to
Current section
Files
lib/yousign/request.ex
defmodule Yousign.Request do
@moduledoc """
A module for handling the internal requests to the Yousign API
"""
alias Yousign.Config
def make_request(:get, endpoint) do
url = "#{base_url()}/#{endpoint}"
{:ok, res} =
:get
|> Finch.build(url, [{"Authorization", "Bearer #{Config.resolve(:api_key)}"}])
|> Finch.request(Yousign.API)
Jason.decode!(Map.get(res, :body), keys: :atoms)
end
def make_request(method, endpoint, body) do
url = "#{base_url()}/#{endpoint}"
{:ok, res} =
method
|> Finch.build(
url,
[
{"Authorization", "Bearer #{Config.resolve(:api_key)}"},
{"Content-Type", "application/json"}
],
Jason.encode!(body)
)
|> Finch.request(Yousign.API)
Jason.decode!(Map.get(res, :body), keys: :atoms)
end
def make_raw_request(:get, endpoint) do
url = "#{base_url()}/#{endpoint}"
{:ok, res} =
:get
|> Finch.build(url, [{"Authorization", "Bearer #{Config.resolve(:api_key)}"}])
|> Finch.request(Yousign.API)
case Map.get(res, :body) do
nil -> {:error, "No response"}
body -> {:ok, body}
end
end
def make_raw_request(method, endpoint, body) do
url = "#{base_url()}/#{endpoint}"
{:ok, res} =
method
|> Finch.build(
url,
[
{"Authorization", "Bearer #{Config.resolve(:api_key)}"},
{"Content-Type", "application/json"}
],
Jason.encode!(body)
)
|> Finch.request(Yousign.API)
case Map.get(res, :body) do
nil -> {:error, "No response"}
body -> {:ok, body}
end
end
def base_url() do
if(Config.resolve(:use_sandbox, false)) do
"https://staging-api.yousign.com"
else
"https://api.yousign.com"
end
end
def web_url() do
if(Config.resolve(:use_sandbox, false)) do
"https://staging-app.yousign.com"
else
"https://webapp.yousign.com"
end
end
end