Current section

Files

Jump to
ndc_ex_sdk lib ndc_ex.ex
Raw

lib/ndc_ex.ex

defmodule NDCEx do
require HTTPotion
require Logger
def request(method, params) do
NDCEx.Message.Base.build_document(method, params)
|> rest_call_with_message(params)
end
def rest_call_with_message(xml, params) do
case HTTPotion.post(params[:host][:url], [body: xml, headers: params[:rest][:headers], timeout: 30000 ]) do
%HTTPotion.Response{body: body, headers: _headers, status_code: 200 } ->
{:ok, remove_soap_tags(body)}
%HTTPotion.Response{body: body, headers: _headers, status_code: _status_code } ->
{:error, remove_soap_tags(body)}
%HTTPotion.Response{status_code: 404} ->
{:error, error_message("Request does not exist")}
_ ->
{:error, error_message("Unknown Error")}
end
end
defp remove_soap_tags(doc) do
remove_tag(doc, "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">")
remove_tag(doc, "<soap:Body>")
remove_tag(doc, "</soap:Body>")
remove_tag(doc, "</soap:Envelope>")
end
defp error_message(message), do: "<error><message>#{message}</message></error>"
def get_mix_config(key) when is_atom(key), do: Application.get_env(:ndc_ex_sdk, key)
defp remove_tag(doc, tag), do: String.replace(doc, tag, "")
end