Packages
ndc_ex_sdk
0.2.14
0.2.30
0.2.29
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
This is an Elixir package that wrapps any NDC-compliant API. It's host-agnostic and quite flexible-through-configuration so that it can reach NDC hosts with a certain flexibility
Current section
Files
Jump to
Current section
Files
lib/ndc_logger.ex
defmodule NDCLogger do
def event(provider_label, method, params, request_xml, response_xml) do
logger_config = Application.get_env(:NDCEx, :logger)
if !is_nil(logger_config) && (logger_config[:methods] == :all || Enum.member?(logger_config[:methods], method)) do
log_to_output(provider_label, params, request_xml, response_xml, logger_config)
end
end
defp log_to_output(provider_label, params, request_xml, response_xml, logger_config) do
{file, content} = openFile(provider_label)
{{year, mon, day}, {hh, mm, ss}} = :os.timestamp |> :calendar.now_to_datetime
datetime = "#{year}/#{mon}/#{day} #{hh}:#{mm}:#{ss}"
writeInFile(file, content, "")
if Enum.member?([:both, :console], logger_config[:params]), do: IO.inspect params
if Enum.member?([:both, :file], logger_config[:params]), do: writeInFile(file, params, "\nPARAMS #{datetime}\n")
if Enum.member?([:both, :console], logger_config[:request]), do: IO.puts request_xml
if Enum.member?([:both, :file], logger_config[:request]), do: writeInFile(file, request_xml, "\n\nREQUEST #{datetime}\n")
if Enum.member?([:both, :console], logger_config[:response]), do: IO.inspect response_xml
if Enum.member?([:both, :file], logger_config[:response]), do: writeInFile(file, response_xml, "\n\nRESPONSE #{datetime}\n")
File.close file
end
defp openFile(provider_label) do
filename = "logs/#{provider_label}.log"
content = if File.exists?(filename), do: filename |> File.read!, else: ""
case File.open filename, [:write] do
{:ok, file} -> {file, content}
{:error, reason} ->
IO.inspect reason
{nil, content}
end
end
defp writeInFile(file, data, type) do
if(file !== nil) do
IO.binwrite(file, type)
IO.binwrite(file, data)
end
end
end