lib/adknowledge/integrated.rb in adknowledge-0.0.3 vs lib/adknowledge/integrated.rb in adknowledge-0.0.4
- old
+ new
@@ -1,10 +1,10 @@
require 'faraday'
-require 'ox'
require 'addressable/uri'
require 'faraday_middleware/response/parse_xml'
require 'active_support/core_ext/module/delegation'
+require 'nokogiri'
module Adknowledge
class Integrated
include Enumerable
@@ -45,18 +45,19 @@
#
# @param [Array] recipients an array of hashes containing recipient details
# @return [String] prepared XML request for recipient array
def recipients= recipient_hashes
@recipients = recipient_hashes
- doc = Ox::Document.new version: '1.0'
- req = Ox::Element.new 'request'
- doc << Ox::Instruct.new('xml version="1.0" encoding="UTF-8"') << req
- recipient_hashes.each do |recipient_hash|
- email_hash = recipient_hash.select{|x| VALID_FIELDS.include? x}
- req << email_xml(email_hash)
+ doc = Nokogiri::XML::Builder.new do |root|
+ root.request do |req|
+ recipient_hashes.each do |recipient_hash|
+ email_hash = recipient_hash.select{|x| VALID_FIELDS.include? x}
+ email_xml(email_hash, req)
+ end
+ end
end
- @request = Ox.dump(doc, indent: 0, with_instruct: true).gsub(/\n/, '')
+ @request = doc.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::AS_XML).gsub("\n", '')
end
# Map content for specified recipients
#
@@ -172,22 +173,18 @@
uri = Addressable::URI.new
uri.query_values = query_params
uri.query
end
- def email_xml email_hash
+ def email_xml email_hash, doc
unless (MANDATORY_FIELDS - email_hash.keys).empty?
raise ArgumentError, 'One or more mandatory fields were not submitted'
end
- e = Ox::Element.new(:email)
- email_hash.each do |field, value|
- e << field_xml(field, value)
+ doc.email do |email|
+ email_hash.each do |field, value|
+ email.send(field, value)
+ end
end
- e
- end
-
- def field_xml field, value
- Ox::Element.new(field) << value.to_s
end
end
end