contentful 0.12.0 → 1.0.0

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
2
  SHA1:
3
- metadata.gz: 78c2a767a88bc7cf15bde4fcc9173611d0c2a116
4
- data.tar.gz: d99bee10915e4128e254b9f41fb4ad8472ec2f83
3
+ metadata.gz: 0113f1da37746a15f2e342b3d7248ea3edffce5e
4
+ data.tar.gz: a3c9f048f5f9a8fd6dc2ecf978af27c2dc986952
5
5
  SHA512:
6
- metadata.gz: e0118fccbdb2a308c14b89748a5f9fdc42f32bf1593e6917897e2edb0613ea98843fdb47dda3642a722a475dad7f75df4297c9500638e185e14109b52a829532
7
- data.tar.gz: e6c7aff051696aa83e5c9fa0d52c021bffec3535c04e45650f0b00d4dcf4364f0d18089010af3fd5b11153851b25e64c59e9e359eb75da7034d51fce7f40e394
6
+ metadata.gz: 79d39379d1187ab7037fb11000ca0233ff0c101c855a6ef01e651244ec0516e49822a5afd1e5d9b94fa9c20d487fa13bbd51c9abeff7467e6b84ca0930a96a2a
7
+ data.tar.gz: 84443697de10d3b27db87d08f7fd5b5385de83bfd32e44bdc3c58e8374f127772becb209e1e155e85957cf61aaa6fe20c7c4921d9d781df02a8c9b1a0f4ec0bf
data/.travis.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.3.1
3
4
  - 2.2.1
4
5
  - 2.1.2
5
6
  - 2.1.1
data/CHANGELOG.md CHANGED
@@ -1,8 +1,48 @@
1
1
  # Change Log
2
+
2
3
  ## Unreleased
3
4
 
4
- ## 0.12.0
5
+ ## 1.0.0
6
+
7
+ **ATTENTION**: Breaking changes on how JSON Fields are parsed. All keys are now symbolized, including
8
+ nested hashes. Parsing errors have been fixed, particularly for `array`, `null` and `boolean` present on the first
9
+ level of the JSON field. Also, on release 0.11.0, it was fixed that JSON Fields were being treated as locales.
10
+ This change increases consistency for the SDK, treating everything the same way. We strive for consistency and
11
+ quality in our tools.
12
+
13
+ The following `diff` shows previous and current state. This is the contents of the JSON Field we test this feature against.
14
+
15
+ ```diff
16
+ - {:null=>"",
17
+ - :text=>"some text",
18
+ - :array=>"[1, 2, 3]",
19
+ - :number=>123,
20
+ - :object=>
21
+ - {"null"=>nil,
22
+ - "text"=>"bar",
23
+ - "array"=>[1, 2, 3],
24
+ - "number"=>123,
25
+ - "object"=>{"foo"=>"bar"},
26
+ - "boolean"=>false},
27
+ - :boolean=>"true"}
28
+ + {:null=>nil,
29
+ + :text=>"some text",
30
+ + :array=>[1, 2, 3],
31
+ + :number=>123,
32
+ + :object=>
33
+ + {:null=>nil,
34
+ + :text=>"bar",
35
+ + :array=>[1, 2, 3],
36
+ + :number=>123,
37
+ + :object=>{:foo=>"bar"},
38
+ + :boolean=>false},
39
+ + :boolean=>true}
40
+ ```
5
41
 
42
+ ### Fixed
43
+ * Fixed JSON Field Parsing [#96](https://github.com/contentful/contentful.rb/issues/96)
44
+
45
+ ## 0.12.0
6
46
  ### Added
7
47
  * Added Rate Limit automatic handling
8
48
 
data/contentful.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.summary = 'contentful'
7
7
  gem.description = 'Ruby client for the https://www.contentful.com Content Delivery API'
8
8
  gem.license = 'MIT'
9
- gem.authors = ['Contentful GmbH (Jan Lelis)', 'Contentful GmbH (Andreas Tiefenthaler)']
9
+ gem.authors = ['Contentful GmbH (Jan Lelis)', 'Contentful GmbH (Andreas Tiefenthaler)', 'Contentful GmbH (David Litvak Bruno)']
10
10
  gem.email = 'rubygems@contentful.com'
11
11
  gem.homepage = 'https://github.com/contentful/contentful.rb'
12
12
 
@@ -178,7 +178,7 @@ module Contentful
178
178
  value.map { |v| coerce_or_create_class(v, what) }
179
179
  elsif should_coerce_hash?(value)
180
180
  ::Hash[value.map do |k, v|
181
- to_coerce = v.is_a?(Hash) ? v : v.to_s
181
+ to_coerce = pre_coerce(v)
182
182
  coercion = v.is_a?(Numeric) ? v : coerce_or_create_class(to_coerce, what)
183
183
  [k.to_sym, coercion]
184
184
  end]
@@ -187,6 +187,23 @@ module Contentful
187
187
  end
188
188
  end
189
189
 
190
+ def pre_coerce(value)
191
+ case value
192
+ when Numeric, true, false, nil
193
+ value
194
+ when Hash
195
+ result = {}
196
+ value.each_key do |k|
197
+ result[k.to_sym] = pre_coerce(value[k])
198
+ end
199
+ result
200
+ when ::Array
201
+ value.map { |e| pre_coerce(e) }
202
+ else
203
+ value.to_s
204
+ end
205
+ end
206
+
190
207
  def should_coerce_hash?(value)
191
208
  value.is_a?(::Hash) &&
192
209
  !is_a?(Asset) &&
@@ -1,5 +1,5 @@
1
1
  # Contentful Namespace
2
2
  module Contentful
3
3
  # Gem Version
4
- VERSION = '0.12.0'
4
+ VERSION = '1.0.0'
5
5
  end
@@ -31,4 +31,45 @@ describe Contentful::DynamicEntry do
31
31
  expect(nyancat.birthday).to be_a DateTime
32
32
  end
33
33
  end
34
+
35
+ describe 'issues' do
36
+ describe 'JSON Fields should not be treated as locale data - #96' do
37
+ before do
38
+ vcr('entry/json_objects_client') {
39
+ @client = create_client(
40
+ space: 'h425t6gef30p',
41
+ access_token: '278f7aa72f2eb90c0e002d60f85bf2144c925acd2d37dd990d3ca274f25076cf',
42
+ dynamic_entries: :auto
43
+ )
44
+
45
+ }
46
+ vcr('entry/json_objects') {
47
+ @entry = @client.entries.first
48
+ }
49
+ end
50
+
51
+ it 'only has default locale' do
52
+ expect(@entry.instance_variable_get(:@fields).keys).to eq ['en-US']
53
+ end
54
+
55
+ it 'can obtain all values properly' do
56
+ expect(@entry.name).to eq('Test')
57
+ expect(@entry.object_test).to eq({
58
+ null: nil,
59
+ text: 'some text',
60
+ array: [1, 2, 3],
61
+ number: 123,
62
+ boolean: true,
63
+ object: {
64
+ null: nil,
65
+ text: 'bar',
66
+ array: [1, 2, 3],
67
+ number: 123,
68
+ boolean: false,
69
+ object: {foo: 'bar'}
70
+ }
71
+ })
72
+ end
73
+ end
74
+ end
34
75
  end
@@ -0,0 +1,88 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://cdn.contentful.com/spaces/h425t6gef30p/entries
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - RubyContentfulGem/0.12.0
12
+ Authorization:
13
+ - Bearer 278f7aa72f2eb90c0e002d60f85bf2144c925acd2d37dd990d3ca274f25076cf
14
+ Content-Type:
15
+ - application/vnd.contentful.delivery.v1+json
16
+ Accept-Encoding:
17
+ - gzip
18
+ Connection:
19
+ - close
20
+ Host:
21
+ - cdn.contentful.com
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Access-Control-Allow-Headers:
28
+ - Accept,Accept-Language,Authorization,Cache-Control,Content-Length,Content-Range,Content-Type,DNT,Destination,Expires,If-Match,If-Modified-Since,If-None-Match,Keep-Alive,Last-Modified,Origin,Pragma,Range,User-Agent,X-Http-Method-Override,X-Mx-ReqToken,X-Requested-With,X-Contentful-Version,X-Contentful-Content-Type,X-Contentful-Organization,X-Contentful-Skip-Transformation,X-Contentful-User-Agent
29
+ Access-Control-Allow-Methods:
30
+ - GET,HEAD,OPTIONS
31
+ Access-Control-Allow-Origin:
32
+ - "*"
33
+ Access-Control-Expose-Headers:
34
+ - Etag
35
+ - Etag
36
+ Access-Control-Max-Age:
37
+ - '86400'
38
+ Cache-Control:
39
+ - max-age=0
40
+ Content-Encoding:
41
+ - gzip
42
+ Content-Type:
43
+ - application/vnd.contentful.delivery.v1+json
44
+ Etag:
45
+ - W/"ef08daf55d889bfac04481b2b1c2df2d"
46
+ Server:
47
+ - nginx
48
+ X-Content-Type-Options:
49
+ - nosniff
50
+ X-Contentful-Request-Id:
51
+ - 4c3-1865000018
52
+ Content-Length:
53
+ - '452'
54
+ Accept-Ranges:
55
+ - bytes
56
+ Date:
57
+ - Tue, 23 Aug 2016 16:02:57 GMT
58
+ Via:
59
+ - 1.1 varnish
60
+ Age:
61
+ - '0'
62
+ Connection:
63
+ - close
64
+ X-Served-By:
65
+ - cache-gru7124-GRU
66
+ X-Cache:
67
+ - MISS
68
+ X-Cache-Hits:
69
+ - '0'
70
+ Vary:
71
+ - Accept-Encoding
72
+ body:
73
+ encoding: ASCII-8BIT
74
+ string: !binary |-
75
+ H4sIAAAAAAAAA61TO2/CMBDe+RWR54KcJygbRaiq6BaqSq0YTGJal8SOHKdq
76
+ hPjv9TmEOAjapR4S3/u783eHkeOgqqlQ7Bz0VQuqKamW0FxK0iCtO96BjxKK
77
+ 5FrvGqnas1IL2Ag5K5gCE25lpmgBCd9MwjbtRRVTqSpJCqU6j1ZpYQGFUXaY
78
+ nhjfI6jZH12d79cnzInJeOHAMmjnI/BCFb3TnY9L6Ko7x/Pd9Nke1MYEUXKP
79
+ V9M6Ch7Zw2qReC9LESRW/jOwJVeysQ2ppETRbA5zQR52ozGejT1/7YZxEMTu
80
+ dBLO8KsdUJfZrYDQjz08wcFsECDpF6uY4LqAZyFPBVeUq9NE/m+0Cyvv1QGL
81
+ 7SdN1ZpW6u/x5iIluWEZ5ePnpAs4vwDaMZpnPSnhVRAnhQkxJayOrcIXXOJ1
82
+ DpSFnw0ZKfpt3qUSBXWMMDATw/yOvx0nDPH7Y80clL5l3Ayy8brYUqnTuZ4/
83
+ MLS4tcF+JOjzOmpYgxPuLZGXJL+O2WnX9RfcQ+SOM8BuwFxHr0038GvLTggY
84
+ L8AczMzaMICEtkLklACDdySvqL2Vg0n1fkrWvVu3uu0fvpvRcfQDnv3xztIE
85
+ AAA=
86
+ http_version:
87
+ recorded_at: Tue, 23 Aug 2016 16:02:58 GMT
88
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,86 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://cdn.contentful.com/spaces/h425t6gef30p/content_types?limit=1000
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - RubyContentfulGem/0.12.0
12
+ Authorization:
13
+ - Bearer 278f7aa72f2eb90c0e002d60f85bf2144c925acd2d37dd990d3ca274f25076cf
14
+ Content-Type:
15
+ - application/vnd.contentful.delivery.v1+json
16
+ Accept-Encoding:
17
+ - gzip
18
+ Connection:
19
+ - close
20
+ Host:
21
+ - cdn.contentful.com
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Access-Control-Allow-Headers:
28
+ - Accept,Accept-Language,Authorization,Cache-Control,Content-Length,Content-Range,Content-Type,DNT,Destination,Expires,If-Match,If-Modified-Since,If-None-Match,Keep-Alive,Last-Modified,Origin,Pragma,Range,User-Agent,X-Http-Method-Override,X-Mx-ReqToken,X-Requested-With,X-Contentful-Version,X-Contentful-Content-Type,X-Contentful-Organization,X-Contentful-Skip-Transformation,X-Contentful-User-Agent
29
+ Access-Control-Allow-Methods:
30
+ - GET,HEAD,OPTIONS
31
+ Access-Control-Allow-Origin:
32
+ - "*"
33
+ Access-Control-Expose-Headers:
34
+ - Etag
35
+ - Etag
36
+ Access-Control-Max-Age:
37
+ - '86400'
38
+ Cache-Control:
39
+ - max-age=0
40
+ Content-Encoding:
41
+ - gzip
42
+ Content-Type:
43
+ - application/vnd.contentful.delivery.v1+json
44
+ Etag:
45
+ - W/"eb9d46f11dd1b96e6e6323d12c51b2bb"
46
+ Server:
47
+ - nginx
48
+ X-Content-Type-Options:
49
+ - nosniff
50
+ X-Contentful-Request-Id:
51
+ - ddd-1897159726
52
+ Content-Length:
53
+ - '373'
54
+ Accept-Ranges:
55
+ - bytes
56
+ Date:
57
+ - Tue, 23 Aug 2016 16:02:57 GMT
58
+ Via:
59
+ - 1.1 varnish
60
+ Age:
61
+ - '0'
62
+ Connection:
63
+ - close
64
+ X-Served-By:
65
+ - cache-gru7121-GRU
66
+ X-Cache:
67
+ - MISS
68
+ X-Cache-Hits:
69
+ - '0'
70
+ Vary:
71
+ - Accept-Encoding
72
+ body:
73
+ encoding: ASCII-8BIT
74
+ string: !binary |-
75
+ H4sIAAAAAAAAA8VSPW/CMBDd+RXIc6kSAqhlQ5U6Ve0AUytUmeRorzixa5tK
76
+ KeK/12eT4FAYOtVLcl/v3ru7Xa/fZ6Y2bNrfuV9n2FqBs9hMa14z59tfUY6V
77
+ lgvnT71lNqickXhDYImWQkkSHGihJMQXjxhwT9r4VkbxnHo1GcEZkSGHdzak
78
+ HrDaMGp6fK59tVkcSM894kkCFqTnfTQc28kbrLNEkazm7dt/LzQ8Fmrk6gNy
79
+ uwBjI8yWzJ2sLFTW945Kcw3cQjGjkbBhkk4Gyc1gmC3S8XSUTrPsenSbPscF
80
+ W1X8rUDDFxqUFc38QLnlzgo0SvD6HkF43RUvj/SC5bxPv5WxAkyuUdmAzFqK
81
+ bE1Yx4XSiDorC8PqNKKcttljTMFHmn3O63IlRWdhTMicC/wGYr/mwkC8Tqbh
82
+ c4v6QtBp5ytxISjdlbq9NKjn1n5G1dkTiLSF+Kvt3kgkMUz6nyUexC79ly5+
83
+ 2dv3fgBbrE0p/AMAAA==
84
+ http_version:
85
+ recorded_at: Tue, 23 Aug 2016 16:02:57 GMT
86
+ recorded_with: VCR 3.0.3
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contentful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Contentful GmbH (Jan Lelis)
8
8
  - Contentful GmbH (Andreas Tiefenthaler)
9
+ - Contentful GmbH (David Litvak Bruno)
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2016-08-11 00:00:00.000000000 Z
13
+ date: 2016-08-24 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: http
@@ -388,6 +389,8 @@ files:
388
389
  - spec/fixtures/vcr_cassettes/entries.yml
389
390
  - spec/fixtures/vcr_cassettes/entry.yml
390
391
  - spec/fixtures/vcr_cassettes/entry/custom_resource.yml
392
+ - spec/fixtures/vcr_cassettes/entry/json_objects.yml
393
+ - spec/fixtures/vcr_cassettes/entry/json_objects_client.yml
391
394
  - spec/fixtures/vcr_cassettes/entry/marshall.yml
392
395
  - spec/fixtures/vcr_cassettes/entry/raw.yml
393
396
  - spec/fixtures/vcr_cassettes/entry_cache.yml
@@ -445,7 +448,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
445
448
  version: '0'
446
449
  requirements: []
447
450
  rubyforge_project:
448
- rubygems_version: 2.5.0
451
+ rubygems_version: 2.5.1
449
452
  signing_key:
450
453
  specification_version: 4
451
454
  summary: contentful
@@ -482,6 +485,8 @@ test_files:
482
485
  - spec/fixtures/vcr_cassettes/entries.yml
483
486
  - spec/fixtures/vcr_cassettes/entry.yml
484
487
  - spec/fixtures/vcr_cassettes/entry/custom_resource.yml
488
+ - spec/fixtures/vcr_cassettes/entry/json_objects.yml
489
+ - spec/fixtures/vcr_cassettes/entry/json_objects_client.yml
485
490
  - spec/fixtures/vcr_cassettes/entry/marshall.yml
486
491
  - spec/fixtures/vcr_cassettes/entry/raw.yml
487
492
  - spec/fixtures/vcr_cassettes/entry_cache.yml