module Ragoon::XML
Constants
- ACTION_PLACEHOLDER
- BODY_PLACEHOLDER
Public Class Methods
create_node(name, attributes = {})
click to toggle source
# File lib/ragoon/xml.rb, line 11 def self.create_node(name, attributes = {}) node = Nokogiri::XML::Node.new(name, Nokogiri::XML.parse('<xml />')) attributes.each do |key, value| node[key.to_s] = value end node end
render(action_name, body_node, options)
click to toggle source
# File lib/ragoon/xml.rb, line 5 def self.render(action_name, body_node, options) template(options).dup. gsub!(ACTION_PLACEHOLDER, action_name). gsub!(BODY_PLACEHOLDER, body_node.to_xml) end
template(options)
click to toggle source
# File lib/ragoon/xml.rb, line 19 def self.template(options) <<"XML" <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:base_services="http://wsdl.cybozu.co.jp/base/2008"> <SOAP-ENV:Header> <Action SOAP-ENV:mustUnderstand="1" xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing"> #{ACTION_PLACEHOLDER} </Action> <Security xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" SOAP-ENV:mustUnderstand="1" xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext"> <UsernameToken wsu:Id="id"> <Username>#{options[:username]}</Username> <Password>#{options[:password]}</Password> </UsernameToken> </Security> <Timestamp SOAP-ENV:mustUnderstand="1" Id="id" xmlns="http://schemas.xmlsoap.org/ws/2002/07/utility"> <Created>#{Time.now.iso8601}</Created> <Expires>#{(Time.now + 60 * 60 * 24).iso8601}</Expires> </Timestamp> <Locale>jp</Locale> </SOAP-ENV:Header> <SOAP-ENV:Body> #{BODY_PLACEHOLDER} </SOAP-ENV:Body> </SOAP-ENV:Envelope> XML end