chartmogul-ruby 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 977e148db4993ab3fa15baa1e33b2ed0f7eaa6678ebefa4d06a0bf825a627429
4
- data.tar.gz: fec1f5f01079384a057bf590312f95be967201796840a74fbe9af23b73fb208e
2
+ SHA1:
3
+ metadata.gz: 31731f1df4e34d838b148dc025e7cf1ac680ff05
4
+ data.tar.gz: 4bc5b8118c09794398ae8b6c0ac0a856c3a6ba72
5
5
  SHA512:
6
- metadata.gz: e7c8f8d12efc748930d84b220eceaa349e1c749e92b4ecd12f367b6bd8033125de7cc4194a0279efd6ab62e3e71cb495a0bb71a28369e7dd834302647f02d9ba
7
- data.tar.gz: ab77638242a73dc90b719b3c58d78af529896cbd3b114f2e3cebb0c7c3c894fdf15a1fa5ef55b70a77c8b76020afd01a1bf2d7c4bbd4ff7c45b126b7e4fa2d9c
6
+ metadata.gz: 5d59360584c726bc60c2073cddd222ef73963084998f289c51fc4f26fe27e42b20ffa515be5d3ce2b48d3ff3b273c286625ee2bd7558bb58b2c66339a9c32566
7
+ data.tar.gz: 439d8190fd2c792f13b47d036e30aa58650fcffaba927f8fff8306974d6d9f2786b9c57f8db230387bdf1cb77667b9f1ec9ff271021150c8fa673c563921319a
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'rake', '~> 10.0'
27
27
  spec.add_development_dependency 'rspec', '~> 3.0'
28
28
  spec.add_development_dependency 'vcr', '~> 3.0'
29
- spec.add_development_dependency 'pry', '~> 0.10.3'
30
29
  spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
31
30
  spec.add_development_dependency 'simplecov', '~> 0.16.0'
31
+ spec.add_development_dependency 'pry', '~> 0.12.2'
32
32
  end
@@ -75,8 +75,7 @@ http_interactions:
75
75
  - 'true'
76
76
  body:
77
77
  encoding: UTF-8
78
- string: '{"custom":{"string_key":"Another String Value","integer_key":5678,"timestamp_key":"2016-02-01
79
- 00:00:00 UTC","boolean_key":false}}'
78
+ string: '{"custom":{"string_key":"Another String Value","integer_key":5678,"timestamp_key":"2016-02-01T00:00:00.000Z","boolean_key":false}}'
80
79
  http_version:
81
80
  recorded_at: Wed, 29 Jun 2016 12:47:09 GMT
82
81
  recorded_with: VCR 3.0.3
@@ -117,23 +117,12 @@ module ChartMogul
117
117
  end
118
118
 
119
119
  def custom_attributes=(custom_attributes = {})
120
- @attributes[:custom] = typecast_custom_attributes(custom_attributes)
120
+ @attributes[:custom] = ChartMogul::Utils::JSONParser.typecast_custom_attributes(custom_attributes)
121
121
  end
122
122
 
123
123
  def set_attributes(attributes_attributes)
124
124
  @attributes = attributes_attributes
125
- @attributes[:custom] = typecast_custom_attributes(attributes_attributes[:custom])
126
- end
127
-
128
- def typecast_custom_attributes(custom_attributes)
129
- return {} unless custom_attributes
130
- custom_attributes.each_with_object({}) do |(key, value), hash|
131
- hash[key] = value.instance_of?(String) ? (begin
132
- Time.parse(value)
133
- rescue
134
- value
135
- end) : value
136
- end
125
+ @attributes[:custom] = ChartMogul::Utils::JSONParser.typecast_custom_attributes(attributes_attributes[:custom])
137
126
  end
138
127
  end
139
128
 
@@ -94,24 +94,14 @@ module ChartMogul
94
94
  @attributes[:tags] = tags
95
95
  end
96
96
 
97
+ # When passing timestamps, either use Time instance, or iso8601-parseable string.
97
98
  def custom_attributes=(custom_attributes = {})
98
- @attributes[:custom] = typecast_custom_attributes(custom_attributes)
99
+ @attributes[:custom] = ChartMogul::Utils::JSONParser.typecast_custom_attributes(custom_attributes)
99
100
  end
100
101
 
101
102
  def set_attributes(attributes_attributes)
102
103
  @attributes = attributes_attributes
103
- @attributes[:custom] = typecast_custom_attributes(attributes_attributes[:custom])
104
- end
105
-
106
- def typecast_custom_attributes(custom_attributes)
107
- return {} unless custom_attributes
108
- custom_attributes.each_with_object({}) do |(key, value), hash|
109
- hash[key] = value.instance_of?(String) ? (begin
110
- Time.parse(value)
111
- rescue
112
- value
113
- end) : value
114
- end
104
+ @attributes[:custom] = ChartMogul::Utils::JSONParser.typecast_custom_attributes(attributes_attributes[:custom])
115
105
  end
116
106
  end
117
107
 
@@ -1,9 +1,25 @@
1
1
  module ChartMogul
2
2
  module Utils
3
3
  class JSONParser
4
- def self.parse(json_string)
5
- hash = JSON.parse(json_string, symbolize_names: true)
6
- HashSnakeCaser.new(hash).to_snake_keys
4
+ class << self
5
+ def parse(json_string)
6
+ hash = JSON.parse(json_string, symbolize_names: true)
7
+ HashSnakeCaser.new(hash).to_snake_keys
8
+ end
9
+
10
+ def typecast_custom_attributes(custom_attributes)
11
+ return {} unless custom_attributes
12
+
13
+ custom_attributes.each_with_object({}) do |(key, value), hash|
14
+ hash[key] = opt_string_to_time(value)
15
+ end
16
+ end
17
+
18
+ def opt_string_to_time(value)
19
+ return value unless value.instance_of?(String)
20
+
21
+ Time.iso8601(value) rescue Time.rfc2822(value) rescue value
22
+ end
7
23
  end
8
24
  end
9
25
  end
@@ -1,3 +1,3 @@
1
1
  module ChartMogul
2
- VERSION = '1.3.1'.freeze
2
+ VERSION = '1.3.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chartmogul-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Langenauer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-06 00:00:00.000000000 Z
11
+ date: 2019-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
- - !ruby/object:Gem::Dependency
84
- name: pry
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.10.3
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.10.3
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: webmock
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -128,6 +114,20 @@ dependencies:
128
114
  - - "~>"
129
115
  - !ruby/object:Gem::Version
130
116
  version: 0.16.0
117
+ - !ruby/object:Gem::Dependency
118
+ name: pry
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 0.12.2
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 0.12.2
131
131
  description: Official Ruby client for ChartMogul's API
132
132
  email:
133
133
  - jason@chartmogul.com
@@ -281,7 +281,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
281
  - !ruby/object:Gem::Version
282
282
  version: '0'
283
283
  requirements: []
284
- rubygems_version: 3.0.2
284
+ rubyforge_project:
285
+ rubygems_version: 2.6.14.4
285
286
  signing_key:
286
287
  specification_version: 4
287
288
  summary: Chartmogul API Ruby Client