lib/soapy_cake/request.rb in soapy_cake-1.15.0 vs lib/soapy_cake/request.rb in soapy_cake-1.16.0

- old
+ new

@@ -1,8 +1,10 @@ module SoapyCake class Request - attr_accessor :api_key, :time_offset + DATE_CLASSES = [Date, Time, DateTime].freeze + + attr_accessor :api_key, :time_converter attr_reader :role, :service, :method, :opts def initialize(role, service, method, opts = {}) @role = role.to_s @service = service.to_s @@ -38,27 +40,28 @@ end def xml_params(xml) xml.api_key api_key opts.each do |k, v| - xml.public_send(k.to_sym, format_param(v)) + xml.public_send(k.to_sym, format_param(k, v)) end end def xml_namespaces { 'xmlns:env' => 'http://www.w3.org/2003/05/soap-envelope', 'xmlns:cake' => "http://cakemarketing.com#{api_path}/" } end - def format_param(value) - case value - when Time, DateTime, Date - (value.to_datetime.utc + time_offset.to_i.hours).strftime('%Y-%m-%dT%H:%M:%S') - else - value + def format_param(key, value) + return time_converter.to_cake(value) if DATE_CLASSES.include?(value.class) + + if key.to_s.end_with?('_date') + fail Error, "You need to use a Time/DateTime/Date object for '#{key}'" end + + value end def version API_VERSIONS[role][service][method] || fail rescue