contentful 0.3.3 → 0.3.4
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.
- data/.gitignore +2 -0
- data/CHANGELOG.md +6 -0
- data/README.md +10 -0
- data/contentful.gemspec +1 -1
- data/lib/contentful/client.rb +3 -2
- data/lib/contentful/response.rb +14 -3
- data/lib/contentful/version.rb +1 -1
- data/spec/support/json_responses.rb +1 -0
- metadata +6 -5
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -13,6 +13,8 @@ Add to your Gemfile and bundle:
|
|
13
13
|
gem 'contentful'
|
14
14
|
```
|
15
15
|
|
16
|
+
|
17
|
+
|
16
18
|
## Usage
|
17
19
|
|
18
20
|
```ruby
|
@@ -166,6 +168,9 @@ Defaults to `false`. If enabled, the API responses will not be parsed to resourc
|
|
166
168
|
|
167
169
|
See next paragraph for explanation
|
168
170
|
|
171
|
+
### :gzip_encoded
|
172
|
+
|
173
|
+
Enables gzip response content encoding, default to: true
|
169
174
|
|
170
175
|
## Advanced Usage
|
171
176
|
### Custom Resource Classes
|
@@ -262,6 +267,11 @@ first_entry = client.sync(initial: true, type: 'Entry').first_page.items.first
|
|
262
267
|
first_entry.fields('de-DE') # Returns German localizations
|
263
268
|
```
|
264
269
|
|
270
|
+
## Ratelimit
|
271
|
+
The library does not make assumptions on the rate limit but reacts to `HTTP 429` by returning an error object.
|
272
|
+
You should handle this within your code and either do the delay calculation naive (fixed amount of seconds) or more elaborated (exponential increase) depending by the structure of your code.
|
273
|
+
|
274
|
+
|
265
275
|
## License
|
266
276
|
|
267
277
|
Copyright (c) 2014 Contentful GmbH - Jan Lelis. See LICENSE.txt for further details.
|
data/contentful.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.summary = 'contentful'
|
9
9
|
gem.description = 'Ruby client for the https://www.contentful.com Content Delivery API'
|
10
10
|
gem.license = "MIT"
|
11
|
-
gem.authors = ["Contentful GmbH (Jan Lelis)"]
|
11
|
+
gem.authors = ["Contentful GmbH (Jan Lelis)",'Contentful GmbH (Andreas Tiefenthaler)']
|
12
12
|
gem.email = "rubygems@contentful.com"
|
13
13
|
gem.homepage = "https://github.com/contentful/contentful.rb"
|
14
14
|
|
data/lib/contentful/client.rb
CHANGED
@@ -21,7 +21,8 @@ module Contentful
|
|
21
21
|
resource_mapping: {},
|
22
22
|
entry_mapping: {},
|
23
23
|
default_locale: 'en-US',
|
24
|
-
raw_mode: false
|
24
|
+
raw_mode: false,
|
25
|
+
gzip_encoded: false
|
25
26
|
}
|
26
27
|
|
27
28
|
attr_reader :configuration, :dynamic_entry_cache
|
@@ -107,7 +108,7 @@ module Contentful
|
|
107
108
|
headers = { 'User-Agent' => "RubyContentfulGem/#{Contentful::VERSION}" }
|
108
109
|
headers['Authorization'] = "Bearer #{configuration[:access_token]}" if configuration[:authentication_mechanism] == :header
|
109
110
|
headers['Content-Type'] = "application/vnd.contentful.delivery.v#{configuration[:api_version].to_i}+json" if configuration[:api_version]
|
110
|
-
|
111
|
+
headers['Accept-Encoding'] = 'gzip' if configuration[:gzip_encoded]
|
111
112
|
headers
|
112
113
|
end
|
113
114
|
|
data/lib/contentful/response.rb
CHANGED
@@ -23,9 +23,9 @@ module Contentful
|
|
23
23
|
attr_reader :raw, :object, :status, :error_message, :request
|
24
24
|
|
25
25
|
def initialize(raw, request = nil)
|
26
|
-
@raw
|
26
|
+
@raw = raw
|
27
27
|
@request = request
|
28
|
-
@status
|
28
|
+
@status = :ok
|
29
29
|
|
30
30
|
if service_unavailable_response?
|
31
31
|
@status = :service_unavailable
|
@@ -49,7 +49,8 @@ module Contentful
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def parse_json!
|
52
|
-
|
52
|
+
body = unzip_response(raw)
|
53
|
+
@object = MultiJson.load(body)
|
53
54
|
true
|
54
55
|
rescue MultiJson::LoadError => e
|
55
56
|
@status = :unparsable_json
|
@@ -73,5 +74,15 @@ module Contentful
|
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
77
|
+
def unzip_response(response)
|
78
|
+
if response.headers['Content-Encoding'].eql?('gzip') then
|
79
|
+
sio = StringIO.new(response.to_s)
|
80
|
+
gz = Zlib::GzipReader.new(sio)
|
81
|
+
gz.read()
|
82
|
+
else
|
83
|
+
response.to_s
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
76
87
|
end
|
77
88
|
end
|
data/lib/contentful/version.rb
CHANGED
@@ -3,6 +3,7 @@ require 'multi_json'
|
|
3
3
|
def raw_fixture(which,status = 200, as_json = false)
|
4
4
|
object = Object.new
|
5
5
|
stub(object).status { status }
|
6
|
+
stub(object).headers { {} }
|
6
7
|
stub(object).to_s { File.read File.dirname(__FILE__) + "/../fixtures/json_responses/#{which}.json" }
|
7
8
|
|
8
9
|
object
|
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.3.
|
4
|
+
version: 0.3.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Contentful GmbH (Jan Lelis)
|
9
|
+
- Contentful GmbH (Andreas Tiefenthaler)
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2014-
|
13
|
+
date: 2014-09-04 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: http
|
@@ -288,7 +289,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
288
289
|
version: '0'
|
289
290
|
segments:
|
290
291
|
- 0
|
291
|
-
hash:
|
292
|
+
hash: 3440490191583500455
|
292
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
293
294
|
none: false
|
294
295
|
requirements:
|
@@ -297,10 +298,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
297
298
|
version: '0'
|
298
299
|
segments:
|
299
300
|
- 0
|
300
|
-
hash:
|
301
|
+
hash: 3440490191583500455
|
301
302
|
requirements: []
|
302
303
|
rubyforge_project:
|
303
|
-
rubygems_version: 1.8.23
|
304
|
+
rubygems_version: 1.8.23
|
304
305
|
signing_key:
|
305
306
|
specification_version: 3
|
306
307
|
summary: contentful
|