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, "") remove_tag(doc, "") remove_tag(doc, "") remove_tag(doc, "") end defp error_message(message), do: "#{message}" 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