Current section

Files

Jump to
ndc_ex_sdk lib message base.ex
Raw

lib/message/base.ex

defmodule NDCEx.Message.Base do
import XmlBuilder
require Logger
def build_document(config, request_name, params) do
request_name
|> get_module_name
|> apply(:yield, [params])
|> build(request_name, config)
|> doc
end
defp document_attributes(request_name) do
%{
"xmlns" => "http://www.iata.org/IATA/EDIST",
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
"xsi:schemaLocation" => "http://www.iata.org/IATA/EDIST ../#{request_name}.xsd",
"Version" => "15.2"
}
end
defp build(tag, request_name, config) do
element(String.to_atom(request_name), document_attributes(request_name), [
element(Document: config[:Document]),
element(Party: [
element(Sender: party(config[:Party][:Sender]))
]),
element(Parameters: config[:Parameters]),
element(Travelers: [
element(Traveler: [
element(AnonymousTraveler: [
element(:PTC, %{Quantity: "1"}, "ADT")
])
])
]),
tag
])
end
defp party(config) do
element(TravelAgencySender: [
element(Name: config[:ORA_Sender][:AgentUser][:Name]),
element(IATA_Number: config[:ORA_Sender][:AgentUser][:IATA_Number]),
element(AgencyID: config[:ORA_Sender][:AgentUser][:AgentUserID]),
])
end
defp metadata do
element(Other: [
element(OtherMetadata: [
element(LanguageMetadatas: [
element(:LanguageMetadata, %{MetadataKey: "Display"}, [
element(Application: "Display"),
element(Code_ISO: "en")
])
])
])
])
end
defp get_module_name (request_name) do
Module.concat([NDCEx.Message, request_name])
end
end