From 0374cfa31662302c45fe52361d637f1b448640e3 Mon Sep 17 00:00:00 2001 From: tom statter Date: Tue, 6 Sep 2016 13:14:37 +0000 Subject: [PATCH 1/2] enable timestamps to use alternative hours --- lib/dynamics_crm.rb | 1 + lib/dynamics_crm/configuration.rb | 33 +++++++++++++++++++++++++ lib/dynamics_crm/xml/message_builder.rb | 10 ++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 lib/dynamics_crm/configuration.rb diff --git a/lib/dynamics_crm.rb b/lib/dynamics_crm.rb index 6a88cb2..7a4d8b0 100644 --- a/lib/dynamics_crm.rb +++ b/lib/dynamics_crm.rb @@ -1,4 +1,5 @@ require "dynamics_crm/version" +require "dynamics_crm/configuration" # CRM require "dynamics_crm/xml/message_builder" require 'dynamics_crm/xml/message_parser' diff --git a/lib/dynamics_crm/configuration.rb b/lib/dynamics_crm/configuration.rb new file mode 100644 index 0000000..fb84944 --- /dev/null +++ b/lib/dynamics_crm/configuration.rb @@ -0,0 +1,33 @@ +# Class for setting configuration options in this engine. See e.g. +# http://stackoverflow.com/questions/24104246/how-to-use-activesupportconfigurable-with-rails-engine +# +# To override default config values, for example in an initaliser, use e.g.: +# +# DynamicsCRM.configure do |config| +# config.timestamps_use_utc_plus_hour = true +# end +# +# To access configuration settings use e.g. +# DynamicsCRM.config.timestamps_use_utc_minus_hour +# +module DynamicsCRM + class Configuration + include ActiveSupport::Configurable + + # Set these to use a one hour difference, to the current system time in XML timestamps. + # Can help overcome local timezone issues that result in errors such as : + # s:Sender[a:InvalidSecurity] An error occurred when verifying security for the message. + # + config_accessor(:timestamps_use_utc_plus_hour) { false } + config_accessor(:timestamps_use_utc_minus_hour) { false } + + end + + def self.config + @config ||= Configuration.new + end + + def self.configure + yield config + end +end diff --git a/lib/dynamics_crm/xml/message_builder.rb b/lib/dynamics_crm/xml/message_builder.rb index 51ce59d..f08cffb 100644 --- a/lib/dynamics_crm/xml/message_builder.rb +++ b/lib/dynamics_crm/xml/message_builder.rb @@ -8,8 +8,14 @@ def uuid # have a bit of flexiblity in the create time to handle when system clocks are out of sync def get_current_time - # 5.minutes = 5 * 60 - (Time.now - (5 * 60)).utc.strftime '%Y-%m-%dT%H:%M:%SZ' + if(DynamicsCRM.config.timestamps_use_utc_plus_hour) + get_current_time_plus_hour + elsif(DynamicsCRM.config.timestamps_use_utc_minus_hour) + get_current_time_minus_hour + else + # 5.minutes = 5 * 60 + (Time.now - (5 * 60)).utc.strftime '%Y-%m-%dT%H:%M:%SZ' + end end def get_current_time_plus_hour From aa48041eaad118a77b326a216f743d7f0058086f Mon Sep 17 00:00:00 2001 From: tom statter Date: Wed, 7 Sep 2016 15:43:43 +0000 Subject: [PATCH 2/2] Add options to tweak timezone dates sent in XML --- lib/dynamics_crm/xml/message_builder.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/dynamics_crm/xml/message_builder.rb b/lib/dynamics_crm/xml/message_builder.rb index f08cffb..54eb141 100644 --- a/lib/dynamics_crm/xml/message_builder.rb +++ b/lib/dynamics_crm/xml/message_builder.rb @@ -18,6 +18,10 @@ def get_current_time end end + def get_current_time_minus_hour + (Time.now.utc - (60*60)).strftime '%Y-%m-%dT%H:%M:%SZ' + end + def get_current_time_plus_hour (Time.now.utc + (60*60)).strftime '%Y-%m-%dT%H:%M:%SZ' end