connect_client 0.1.6 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 778cc71f7e7b38834ecea0555883884771f0e603
4
- data.tar.gz: e3ba35ff340d019c87cd267e457bde1f6ce1487b
3
+ metadata.gz: f4f5f77d9bb4be74830e2c2a4921f01ebcf6543b
4
+ data.tar.gz: 0c782098f59c0f62db7fcd46b40186d739417415
5
5
  SHA512:
6
- metadata.gz: b31387fb8ea84c3d7109056adb845c9368721c04c841242698e978837d71b4e600f59653d26c10768ade2c94919fe3bab0f42b183392cac4478f94bde8c0eaae
7
- data.tar.gz: 8bfcf34b8f1bf4fdd59fdfa8a8aa4f55c954edc72116870e7a2c53f4b464eb02119c61c9544c2e46981ce5d52c799bb686253bcb9cbcdf5bfefa83884dbb1916
6
+ metadata.gz: 88c98456e2bd3446e63693f84bb5d00633be29a590e3cbdb4ea569d4f4ebc26ea3bade73667fce044d449a0fc26b8d586ee2f595043a4c6994cbe9fe1b85dec2
7
+ data.tar.gz: 65e8ab5e8bb0287257fe6e8395575a3d9945e57be2e3b22eebc1f1b09a31ac22be3f8dcbeff687e03fc49b81eedaf59ac946ab1b7227cd564e99390e9a7964a6
data/README.md CHANGED
@@ -27,7 +27,7 @@ All of the documentation can be found at [http://docs.getconnect.io](http://docs
27
27
 
28
28
  ## Support
29
29
 
30
- Get your questions answered and join in with the connect community at [http://docs.getconnect.io/v1.0/discuss](http://docs.getconnect.io/v1.0/discuss).
30
+ Get your questions answered and join in with the connect community at [http://docs.getconnect.io/discuss](http://docs.getconnect.io/discuss).
31
31
 
32
32
  ## Contributing
33
33
 
@@ -10,13 +10,8 @@ module ConnectClient
10
10
  attr_reader :data
11
11
 
12
12
  def initialize(data)
13
- event_data_defaults = { id: SecureRandom.uuid, timestamp: Time.now.utc.iso8601 }
14
- @data = event_data_defaults.merge(data)
15
-
16
- if (@data[:timestamp].respond_to? :iso8601)
17
- @data[:timestamp] = @data[:timestamp].iso8601
18
- end
19
-
13
+ event_data_defaults = { id: SecureRandom.uuid, timestamp: Time.now }
14
+ @data = map_iso_dates event_data_defaults.merge(data)
20
15
  validate
21
16
  end
22
17
 
@@ -33,6 +28,33 @@ module ConnectClient
33
28
  def to_s
34
29
  "Event Data: #{@data}"
35
30
  end
31
+
32
+ private
33
+
34
+ def map_iso_dates(data)
35
+ utc_converter = lambda { |value|
36
+ value_to_convert = value
37
+ map_utc = lambda { |value_item| utc_converter.call(value_item) }
38
+
39
+ return value_to_convert.map(&map_utc) if value_to_convert.respond_to? :map
40
+
41
+ value_to_convert = value_to_convert.to_time if value_to_convert.respond_to? :to_time
42
+ value_to_convert = value_to_convert.utc if value_to_convert.respond_to? :utc
43
+ value_to_convert = value_to_convert.iso8601 if value_to_convert.respond_to? :iso8601
44
+
45
+ value_to_convert
46
+ }
47
+
48
+ mappedData = data.map do |key, value|
49
+ if value.is_a? Hash
50
+ [key, map_iso_dates(value)]
51
+ else
52
+ [key, utc_converter.call(value)]
53
+ end
54
+ end
55
+
56
+ Hash[mappedData]
57
+ end
36
58
  end
37
59
 
38
60
  class EventDataValidationError < StandardError
@@ -1,3 +1,3 @@
1
1
  module ConnectClient
2
- VERSION = "0.1.6"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -44,4 +44,51 @@ describe ConnectClient::Event do
44
44
  connect_event = ConnectClient::Event.new({foo: 'bar', timestamp: iso_date})
45
45
  connect_event.data[:timestamp].must_equal iso_date
46
46
  end
47
+
48
+ it "should turn Time into iso8601" do
49
+ iso_date = '2015-07-01T04:07:57Z'
50
+ some_time = Time.parse('2015-07-01T05:07:57+01:00')
51
+
52
+ nested_hash_values = {
53
+ this: {
54
+ is: {
55
+ nested: [[some_time]]
56
+ }
57
+ }
58
+ }
59
+
60
+ connect_event = ConnectClient::Event.new(nested_hash_values)
61
+ connect_event.data[:this][:is][:nested][0][0].must_equal iso_date
62
+ end
63
+
64
+ it "should turn DateTime into iso8601" do
65
+ iso_date = '2015-07-01T04:07:57Z'
66
+ some_date_time = DateTime.parse('2015-07-01T05:07:57+01:00')
67
+
68
+ nested_hash_values = {
69
+ this: {
70
+ is: {
71
+ nested: [[some_date_time]]
72
+ }
73
+ }
74
+ }
75
+
76
+ connect_event = ConnectClient::Event.new(nested_hash_values)
77
+ connect_event.data[:this][:is][:nested][0][0].must_equal iso_date
78
+ end
79
+
80
+ it "should turn Date into iso8601" do
81
+ some_date = Date.parse('2015-07-01')
82
+
83
+ nested_hash_values = {
84
+ this: {
85
+ is: {
86
+ nested: [[some_date]]
87
+ }
88
+ }
89
+ }
90
+
91
+ connect_event = ConnectClient::Event.new(nested_hash_values)
92
+ connect_event.data[:this][:is][:nested][0][0].must_equal some_date.to_time.utc.iso8601
93
+ end
47
94
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: connect_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Team Connect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-08 00:00:00.000000000 Z
11
+ date: 2015-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json