Skip to content

Enable timestamps to use alternative hours #46

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/dynamics_crm.rb
Original file line number Diff line number Diff line change
@@ -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'
Expand Down
33 changes: 33 additions & 0 deletions lib/dynamics_crm/configuration.rb
Original file line number Diff line number Diff line change
@@ -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
14 changes: 12 additions & 2 deletions lib/dynamics_crm/xml/message_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,18 @@ 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_minus_hour
(Time.now.utc - (60*60)).strftime '%Y-%m-%dT%H:%M:%SZ'
end

def get_current_time_plus_hour
Expand Down