contentful 0.2.0 → 0.3.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.
- data/.travis.yml +1 -4
- data/CHANGELOG.md +5 -0
- data/README.md +41 -1
- data/TAGS +312 -0
- data/lib/contentful/array.rb +2 -15
- data/lib/contentful/client.rb +24 -4
- data/lib/contentful/deleted_asset.rb +10 -0
- data/lib/contentful/deleted_entry.rb +10 -0
- data/lib/contentful/request.rb +7 -0
- data/lib/contentful/resource.rb +14 -2
- data/lib/contentful/resource/array_like.rb +32 -0
- data/lib/contentful/resource/fields.rb +23 -4
- data/lib/contentful/resource_builder.rb +24 -5
- data/lib/contentful/sync.rb +72 -0
- data/lib/contentful/sync_page.rb +33 -0
- data/lib/contentful/version.rb +1 -1
- data/spec/client_class_spec.rb +6 -0
- data/spec/deleted_asset_spec.rb +29 -0
- data/spec/deleted_entry_spec.rb +29 -0
- data/spec/fixtures/vcr_cassettes/sync_deleted_asset.yml +174 -0
- data/spec/fixtures/vcr_cassettes/sync_deleted_entry.yml +89 -0
- data/spec/fixtures/vcr_cassettes/sync_deletion.yml +191 -0
- data/spec/fixtures/vcr_cassettes/sync_page.yml +637 -0
- data/spec/fixtures/vcr_cassettes/sync_page_2.yml +71 -0
- data/spec/spec_helper.rb +0 -3
- data/spec/sync_page_spec.rb +109 -0
- data/spec/sync_spec.rb +86 -0
- metadata +89 -39
- checksums.yaml +0 -7
data/.travis.yml
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- 2.1.1
|
4
|
-
- 2.1
|
4
|
+
- 2.1
|
5
5
|
- 2.0.0
|
6
6
|
- 1.9.3
|
7
7
|
- jruby-19mode
|
8
|
-
notifications:
|
9
|
-
flowdock:
|
10
|
-
- secure: "jO51sETvF1Je7jLQibT5P2ty3KAC8Q9/jJKPUKLDHAaz927XhhkrMXVs6tjzVG1BmHc5A+Qhuni26XerFRsocR7CTrqKdmvmXLgWyMtpW5CvUbtUCeApRQE2K4k/fb+7mz3EBAE494AK5Fz8f3vk2WVu5ROj5shuuggiYhoOqHw="
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -168,7 +168,7 @@ You can register your custom class on client initialization:
|
|
168
168
|
space: 'cfexampleapi',
|
169
169
|
access_token: 'b4c0n73n7fu1',
|
170
170
|
resource_mapping: {
|
171
|
-
'Asset' => MyBetterAsset
|
171
|
+
'Asset' => MyBetterAsset
|
172
172
|
}
|
173
173
|
)
|
174
174
|
|
@@ -191,6 +191,46 @@ You can also register custom entry classes to be used based on the entry's conte
|
|
191
191
|
client.entry('nyancat') # is instance of Cat
|
192
192
|
|
193
193
|
|
194
|
+
## Synchronization
|
195
|
+
|
196
|
+
The client also includes a wrapper for the synchronization endpoint. You can initialize it with the options described in the [Delivery API Documentation](https://www.contentful.com/developers/documentation/content-delivery-api/#sync) or an URL you received from a previous sync:
|
197
|
+
|
198
|
+
client = Contentful::Client.new(
|
199
|
+
access_token: 'b4c0n73n7fu1',
|
200
|
+
space: 'cfexampleapi',
|
201
|
+
default_locale: 'en-US'
|
202
|
+
)
|
203
|
+
sync = client.sync(initial: true, type: 'Deletion') # Only returns deleted entries and assets
|
204
|
+
sync = client.sync("https://cdn.contentful.com/spaces/cfexampleapi/sync?sync_token=w5ZGw6JFwqZmVcKsE8Kow4gr...sGPg") # Continues a sync
|
205
|
+
|
206
|
+
You can access the results either wrapped in `Contentful::SyncPage` objects:
|
207
|
+
|
208
|
+
sync.each_page do |page|
|
209
|
+
# Find resources at: page.items
|
210
|
+
end
|
211
|
+
|
212
|
+
# More explicit version:
|
213
|
+
page = sync.first_page
|
214
|
+
until sync.completed?
|
215
|
+
page = s.next_page
|
216
|
+
end
|
217
|
+
|
218
|
+
Or directly iterative over all resources:
|
219
|
+
|
220
|
+
sync.each_item do |resource|
|
221
|
+
# ...
|
222
|
+
end
|
223
|
+
|
224
|
+
When a sync is completed, the next sync url can be read from the Sync or SyncPage object:
|
225
|
+
|
226
|
+
sync.next_sync_url
|
227
|
+
|
228
|
+
**Please note** that synchronization entries come in all locales, so make sure, you supply a :default_locale property to the client configuration, when using the sync feature. This locale will be returned by default, when you call `Entry#fields`. The other localized data will also be saved and can be accessed by calling the fields method with a locale parameter:
|
229
|
+
|
230
|
+
first_entry = client.sync(initial: true, type: 'Entry').first_page.items.first
|
231
|
+
first_entry.fields('de-DE') # Returns German localizations
|
232
|
+
|
233
|
+
|
194
234
|
## License
|
195
235
|
|
196
236
|
Copyright (c) 2014 Contentful GmbH - Jan Lelis. See LICENSE.txt for further details.
|
data/TAGS
ADDED
@@ -0,0 +1,312 @@
|
|
1
|
+
|
2
|
+
examples/custom_classes.rb,120
|
3
|
+
class MyResourceMyResource12,405
|
4
|
+
class MyBetterArray < Contentful::ArrayMyBetterArray36,919
|
5
|
+
def lastlast38,1002
|
6
|
+
|
7
|
+
examples/dynamic_entries.rb,0
|
8
|
+
|
9
|
+
examples/example_queries.rb,0
|
10
|
+
|
11
|
+
examples/raise_errors.rb,0
|
12
|
+
|
13
|
+
examples/raw_mode.rb,0
|
14
|
+
|
15
|
+
examples/resource_mapping.rb,84
|
16
|
+
class MyBetterArray < Contentful::ArrayMyBetterArray12,361
|
17
|
+
def lastlast14,444
|
18
|
+
|
19
|
+
lib/contentful/array.rb,95
|
20
|
+
module ContentfulContentful4,68
|
21
|
+
class ArrayArray8,341
|
22
|
+
def next_pagenext_page21,647
|
23
|
+
|
24
|
+
lib/contentful/asset.rb,109
|
25
|
+
module ContentfulContentful4,70
|
26
|
+
class AssetAsset7,203
|
27
|
+
def image_url(options = {})image_url19,627
|
28
|
+
|
29
|
+
lib/contentful/client.rb,1109
|
30
|
+
module ContentfulContentful10,256
|
31
|
+
class ClientClient14,419
|
32
|
+
def self.get_http(url, query, headers = {})get_http32,886
|
33
|
+
def initialize(given_configuration = {})initialize36,987
|
34
|
+
def default_configurationdefault_configuration49,1356
|
35
|
+
def space(query = {})space56,1537
|
36
|
+
def content_type(id, query = {})content_type63,1742
|
37
|
+
def content_types(query = {})content_types70,1993
|
38
|
+
def entry(id, query = {})entry77,2207
|
39
|
+
def entries(query = {})entries84,2433
|
40
|
+
def asset(id, query = {})asset91,2635
|
41
|
+
def assets(query = {})assets98,2859
|
42
|
+
def base_urlbase_url103,3001
|
43
|
+
def request_headersrequest_headers108,3190
|
44
|
+
def request_query(query)request_query117,3660
|
45
|
+
def get(request, build_resource = true)get128,3998
|
46
|
+
def update_dynamic_entry_cache!update_dynamic_entry_cache!154,4785
|
47
|
+
def register_dynamic_entry(key, klass)register_dynamic_entry167,5115
|
48
|
+
def sync(options = { initial: true })sync174,5355
|
49
|
+
def normalize_configuration!normalize_configuration!181,5450
|
50
|
+
def validate_configuration!validate_configuration!186,5700
|
51
|
+
|
52
|
+
lib/contentful/content_type.rb,72
|
53
|
+
module ContentfulContentful4,54
|
54
|
+
class ContentTypeContentType7,201
|
55
|
+
|
56
|
+
lib/contentful/deleted_asset.rb,74
|
57
|
+
module ContentfulContentful3,29
|
58
|
+
class DeletedAssetDeletedAsset6,185
|
59
|
+
|
60
|
+
lib/contentful/deleted_entry.rb,74
|
61
|
+
module ContentfulContentful3,29
|
62
|
+
class DeletedEntryDeletedEntry6,185
|
63
|
+
|
64
|
+
lib/contentful/dynamic_entry.rb,130
|
65
|
+
module ContentfulContentful5,92
|
66
|
+
class DynamicEntry < EntryDynamicEntry6,110
|
67
|
+
def self.create(content_type)create18,397
|
68
|
+
|
69
|
+
lib/contentful/entry.rb,60
|
70
|
+
module ContentfulContentful4,64
|
71
|
+
class EntryEntry7,198
|
72
|
+
|
73
|
+
lib/contentful/error.rb,547
|
74
|
+
module ContentfulContentful1,0
|
75
|
+
class Error < StandardErrorError4,142
|
76
|
+
def initialize(response)initialize7,199
|
77
|
+
def self.[](error_status_code)[]14,396
|
78
|
+
class NotFound < Error; endNotFound33,691
|
79
|
+
class BadRequest < Error; endBadRequest36,730
|
80
|
+
class AccessDenied < Error; endAccessDenied39,771
|
81
|
+
class Unauthorized < Error; endUnauthorized42,814
|
82
|
+
class ServerError < Error; endServerError45,857
|
83
|
+
class UnparsableJson < Error; endUnparsableJson48,933
|
84
|
+
class UnparsableResource < Error; endUnparsableResource51,1037
|
85
|
+
|
86
|
+
lib/contentful/field.rb,60
|
87
|
+
module ContentfulContentful3,29
|
88
|
+
class FieldField6,195
|
89
|
+
|
90
|
+
lib/contentful/file.rb,57
|
91
|
+
module ContentfulContentful3,29
|
92
|
+
class FileFile5,73
|
93
|
+
|
94
|
+
lib/contentful/link.rb,101
|
95
|
+
module ContentfulContentful3,29
|
96
|
+
class LinkLink6,160
|
97
|
+
def resolve(query = {})resolve12,359
|
98
|
+
|
99
|
+
lib/contentful/locale.rb,62
|
100
|
+
module ContentfulContentful3,29
|
101
|
+
class LocaleLocale6,207
|
102
|
+
|
103
|
+
lib/contentful/location.rb,66
|
104
|
+
module ContentfulContentful3,29
|
105
|
+
class LocationLocation6,200
|
106
|
+
|
107
|
+
lib/contentful/request.rb,301
|
108
|
+
module ContentfulContentful1,0
|
109
|
+
class RequestRequest5,234
|
110
|
+
def initialize(client, endpoint, query = {}, id = nil)initialize8,295
|
111
|
+
def urlurl27,740
|
112
|
+
def getget32,870
|
113
|
+
def absolute?absolute?37,964
|
114
|
+
def copycopy42,1064
|
115
|
+
def normalize_query(query)normalize_query49,1139
|
116
|
+
|
117
|
+
lib/contentful/resource/array_like.rb,235
|
118
|
+
module ContentfulContentful1,0
|
119
|
+
module ResourceResource2,18
|
120
|
+
module ArrayLikeArrayLike5,138
|
121
|
+
def array?array?9,231
|
122
|
+
def each_item(&block)each_item14,304
|
123
|
+
def empty?empty?20,431
|
124
|
+
def sizesize25,512
|
125
|
+
|
126
|
+
lib/contentful/resource/asset_fields.rb,378
|
127
|
+
module ContentfulContentful3,28
|
128
|
+
module ResourceResource4,46
|
129
|
+
module AssetFieldsAssetFields8,212
|
130
|
+
def fieldsfields15,345
|
131
|
+
def initialize(object, *)initialize19,397
|
132
|
+
def inspect(info = nil)inspect25,547
|
133
|
+
module ClassMethodsClassMethods33,713
|
134
|
+
def fields_coercionsfields_coercions34,739
|
135
|
+
def self.included(base)included39,818
|
136
|
+
|
137
|
+
lib/contentful/resource/fields.rb,482
|
138
|
+
module ContentfulContentful1,0
|
139
|
+
module ResourceResource2,18
|
140
|
+
module FieldsFields7,215
|
141
|
+
def fields(wanted_locale = default_locale)fields9,273
|
142
|
+
def initialize(object, *)initialize13,374
|
143
|
+
def inspect(info = nil)inspect18,474
|
144
|
+
def extract_fields_from_object!(object)extract_fields_from_object!29,656
|
145
|
+
module ClassMethodsClassMethods46,1227
|
146
|
+
def fields_coercionsfields_coercions48,1309
|
147
|
+
def self.included(base)included53,1374
|
148
|
+
|
149
|
+
lib/contentful/resource/system_properties.rb,350
|
150
|
+
module ContentfulContentful1,0
|
151
|
+
module ResourceResource2,18
|
152
|
+
module SystemPropertiesSystemProperties4,100
|
153
|
+
def initialize(object, *)initialize18,406
|
154
|
+
def inspect(info = nil)inspect23,518
|
155
|
+
module ClassMethodsClassMethods31,675
|
156
|
+
def sys_coercionssys_coercions32,701
|
157
|
+
def self.included(base)included37,774
|
158
|
+
|
159
|
+
lib/contentful/resource.rb,1041
|
160
|
+
module ContentfulContentful4,62
|
161
|
+
module ResourceResource13,463
|
162
|
+
def initialize(object, request = nil, client = nil, nested_locale_fields = false, default_locale = Contentful::Client::DEFAULT_CONFIGURATION[:default_locale] )initialize24,743
|
163
|
+
def inspect(info = nil)inspect34,1184
|
164
|
+
def array?array?40,1417
|
165
|
+
def nested_locale_fields?nested_locale_fields?45,1544
|
166
|
+
def syssys50,1686
|
167
|
+
def fieldsfields55,1797
|
168
|
+
def reloadreload61,1941
|
169
|
+
def extract_from_object(object, namespace, keys = nil)extract_from_object71,2050
|
170
|
+
def coerce_value_or_array(value, what = nil)coerce_value_or_array85,2459
|
171
|
+
def coerce_or_create_class(value, what)coerce_or_create_class93,2669
|
172
|
+
module ClassMethodsClassMethods105,2982
|
173
|
+
def nested_locale_fields?nested_locale_fields?107,3098
|
174
|
+
def property_coercionsproperty_coercions111,3155
|
175
|
+
def property(name, property_class = nil)property126,3829
|
176
|
+
def update_coercions!update_coercions!134,4100
|
177
|
+
def self.included(base)included153,4689
|
178
|
+
|
179
|
+
lib/contentful/resource_builder.rb,2028
|
180
|
+
module ContentfulContentful13,309
|
181
|
+
class ResourceBuilderResourceBuilder16,470
|
182
|
+
def initialize(client, response, resource_mapping = {}, entry_mapping = {}, default_locale = Contentful::Client::DEFAULT_CONFIGURATION[:default_locale])initialize32,904
|
183
|
+
def runrun45,1502
|
184
|
+
def create_all_resources!create_all_resources!69,2206
|
185
|
+
def create_resource(object)create_resource82,2600
|
186
|
+
def find_entry_class(object)find_entry_class95,3044
|
187
|
+
def try_dynamic_entry(object)try_dynamic_entry100,3233
|
188
|
+
def get_dynamic_entry(object)get_dynamic_entry105,3372
|
189
|
+
def content_type_id_for_entry(object)content_type_id_for_entry112,3600
|
190
|
+
def array_or_sync_page(object)array_or_sync_page120,3871
|
191
|
+
def detect_resource_class(object)detect_resource_class135,4329
|
192
|
+
def default_resource_mappingdefault_resource_mapping151,4728
|
193
|
+
def default_entry_mappingdefault_entry_mapping156,4837
|
194
|
+
def detect_child_objects(object)detect_child_objects163,4922
|
195
|
+
def detect_child_arrays(object)detect_child_arrays171,5091
|
196
|
+
def add_to_known_resources(res)add_to_known_resources184,5353
|
197
|
+
def replace_children(res, object)replace_children188,5488
|
198
|
+
def replace_child_array(child_array)replace_child_array200,5969
|
199
|
+
def create_included_resources!(included_objects)create_included_resources!204,6097
|
200
|
+
def replace_links_with_known_resources(res, seen_resource_ids = [])replace_links_with_known_resources217,6436
|
201
|
+
def replace_links_in_properties(property_container, seen_resource_ids)replace_links_in_properties231,6892
|
202
|
+
def replace_links_in_array(property_container, seen_resource_ids)replace_links_in_array241,7296
|
203
|
+
def replace_link_or_check_recursively(property_value, property_container, property_name, seen_resource_ids)replace_link_or_check_recursively247,7574
|
204
|
+
def maybe_replace_link(link, parent, key)maybe_replace_link255,8011
|
205
|
+
def replace_links_in_included_resources_with_known_resourcesreplace_links_in_included_resources_with_known_resources262,8243
|
206
|
+
|
207
|
+
lib/contentful/response.rb,228
|
208
|
+
module ContentfulContentful4,47
|
209
|
+
class ResponseResponse22,837
|
210
|
+
def initialize(raw, request = nil)initialize25,920
|
211
|
+
def parse_json!parse_json!38,1113
|
212
|
+
def parse_contentful_error!parse_contentful_error!48,1327
|
213
|
+
|
214
|
+
lib/contentful/space.rb,60
|
215
|
+
module ContentfulContentful4,55
|
216
|
+
class SpaceSpace7,188
|
217
|
+
|
218
|
+
lib/contentful/support.rb,103
|
219
|
+
module ContentfulContentful1,0
|
220
|
+
module SupportSupport3,65
|
221
|
+
def snakify(object)snakify6,165
|
222
|
+
|
223
|
+
lib/contentful/sync.rb,450
|
224
|
+
module ContentfulContentful6,132
|
225
|
+
class SyncSync7,150
|
226
|
+
def initialize(client, options_or_url)initialize10,195
|
227
|
+
def each_page(&block)each_page18,468
|
228
|
+
def first_pagefirst_page29,680
|
229
|
+
def completed?completed?34,813
|
230
|
+
def each_item(&block)each_item39,925
|
231
|
+
def get(options_or_url)get47,1067
|
232
|
+
def link_page_to_sync!(page)link_page_to_sync!63,1375
|
233
|
+
def update_sync_state_from!(page)update_sync_state_from!67,1463
|
234
|
+
|
235
|
+
lib/contentful/sync_page.rb,237
|
236
|
+
module ContentfulContentful4,68
|
237
|
+
class SyncPageSyncPage5,86
|
238
|
+
def self.nested_locale_fields?nested_locale_fields16,328
|
239
|
+
def next_pagenext_page20,383
|
240
|
+
def next_page?next_page?24,454
|
241
|
+
def last_page?last_page?28,505
|
242
|
+
|
243
|
+
lib/contentful/version.rb,33
|
244
|
+
module ContentfulContentful1,0
|
245
|
+
|
246
|
+
lib/contentful.rb,0
|
247
|
+
|
248
|
+
spec/array_spec.rb,0
|
249
|
+
|
250
|
+
spec/asset_spec.rb,0
|
251
|
+
|
252
|
+
spec/auto_includes_spec.rb,0
|
253
|
+
|
254
|
+
spec/client_class_spec.rb,0
|
255
|
+
|
256
|
+
spec/client_configuration_spec.rb,171
|
257
|
+
class MyBetterAsset < Contentful::AssetMyBetterAsset180,5381
|
258
|
+
def https_image_urlhttps_image_url181,5427
|
259
|
+
class Cat < Contentful::EntryCat200,5922
|
260
|
+
|
261
|
+
spec/coercions_spec.rb,0
|
262
|
+
|
263
|
+
spec/content_type_spec.rb,0
|
264
|
+
|
265
|
+
spec/deleted_asset_spec.rb,0
|
266
|
+
|
267
|
+
spec/deleted_entry_spec.rb,0
|
268
|
+
|
269
|
+
spec/dynamic_entry_spec.rb,0
|
270
|
+
|
271
|
+
spec/entry_spec.rb,0
|
272
|
+
|
273
|
+
spec/error_class_spec.rb,0
|
274
|
+
|
275
|
+
spec/error_requests_spec.rb,0
|
276
|
+
|
277
|
+
spec/field_spec.rb,0
|
278
|
+
|
279
|
+
spec/file_spec.rb,0
|
280
|
+
|
281
|
+
spec/link_spec.rb,0
|
282
|
+
|
283
|
+
spec/locale_spec.rb,0
|
284
|
+
|
285
|
+
spec/location_spec.rb,0
|
286
|
+
|
287
|
+
spec/request_spec.rb,0
|
288
|
+
|
289
|
+
spec/resource_building_spec.rb,0
|
290
|
+
|
291
|
+
spec/resource_spec.rb,0
|
292
|
+
|
293
|
+
spec/response_spec.rb,0
|
294
|
+
|
295
|
+
spec/space_spec.rb,0
|
296
|
+
|
297
|
+
spec/spec_helper.rb,0
|
298
|
+
|
299
|
+
spec/support/client.rb,50
|
300
|
+
def create_client(options = {})create_client1,0
|
301
|
+
|
302
|
+
spec/support/json_responses.rb,117
|
303
|
+
def raw_fixture(which, as_json = false)raw_fixture3,22
|
304
|
+
def json_fixture(which, as_json = false)json_fixture7,148
|
305
|
+
|
306
|
+
spec/support/vcr.rb,80
|
307
|
+
def vcr(name, &block)vcr10,201
|
308
|
+
def expect_vcr(name, &block)expect_vcr14,261
|
309
|
+
|
310
|
+
spec/sync_page_spec.rb,0
|
311
|
+
|
312
|
+
spec/sync_spec.rb,0
|
data/lib/contentful/array.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative 'resource'
|
2
|
+
require_relative 'resource/array_like'
|
2
3
|
|
3
4
|
module Contentful
|
4
5
|
# Resource Class for Arrays (e.g. search results)
|
@@ -9,18 +10,13 @@ module Contentful
|
|
9
10
|
|
10
11
|
include Contentful::Resource
|
11
12
|
include Contentful::Resource::SystemProperties
|
12
|
-
include
|
13
|
+
include Contentful::Resource::ArrayLike
|
13
14
|
|
14
15
|
property :total, :integer
|
15
16
|
property :limit, :integer
|
16
17
|
property :skip, :integer
|
17
18
|
property :items
|
18
19
|
|
19
|
-
# Only returns true for Contentful::Array
|
20
|
-
def array?
|
21
|
-
true
|
22
|
-
end
|
23
|
-
|
24
20
|
# Simplifies pagination
|
25
21
|
def next_page
|
26
22
|
if request
|
@@ -33,14 +29,5 @@ module Contentful
|
|
33
29
|
end
|
34
30
|
end
|
35
31
|
|
36
|
-
# Delegates to items#each
|
37
|
-
def each(&block)
|
38
|
-
items.each(&block)
|
39
|
-
end
|
40
|
-
|
41
|
-
# Delegates to items#empty?
|
42
|
-
def empty?
|
43
|
-
items.empty?
|
44
|
-
end
|
45
32
|
end
|
46
33
|
end
|
data/lib/contentful/client.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
require_relative 'request'
|
2
2
|
require_relative 'response'
|
3
3
|
require_relative 'resource_builder'
|
4
|
+
require_relative 'sync'
|
5
|
+
|
4
6
|
require 'http'
|
7
|
+
# see: https://github.com/tarcieri/http/commit/6a2a9d22902572d672dfc7c7b250d022364c8e01#commitcomment-6192269
|
8
|
+
require 'cgi'
|
5
9
|
|
6
10
|
module Contentful
|
7
11
|
# The client object is initialized with a space and a key and then used
|
@@ -18,6 +22,7 @@ module Contentful
|
|
18
22
|
resource_builder: ResourceBuilder,
|
19
23
|
resource_mapping: {},
|
20
24
|
entry_mapping: {},
|
25
|
+
default_locale: 'en-US',
|
21
26
|
raw_mode: false
|
22
27
|
}
|
23
28
|
|
@@ -121,9 +126,10 @@ module Contentful
|
|
121
126
|
# Set second parameter to false to deactivate Resource building and
|
122
127
|
# return Response objects instead
|
123
128
|
def get(request, build_resource = true)
|
129
|
+
url = request.absolute? ? request.url : base_url + request.url
|
124
130
|
response = Response.new(
|
125
131
|
self.class.get_http(
|
126
|
-
|
132
|
+
url,
|
127
133
|
request_query(request.query),
|
128
134
|
request_headers
|
129
135
|
), request
|
@@ -133,8 +139,10 @@ module Contentful
|
|
133
139
|
|
134
140
|
result = configuration[:resource_builder].new(
|
135
141
|
self,
|
136
|
-
response,
|
137
|
-
configuration[:
|
142
|
+
response,
|
143
|
+
configuration[:resource_mapping],
|
144
|
+
configuration[:entry_mapping],
|
145
|
+
configuration[:default_locale]
|
138
146
|
).run
|
139
147
|
|
140
148
|
raise result if result.is_a?(Error) && configuration[:raise_errors]
|
@@ -160,10 +168,18 @@ module Contentful
|
|
160
168
|
@dynamic_entry_cache[key.to_sym] = klass
|
161
169
|
end
|
162
170
|
|
171
|
+
# Create a new synchronisation object
|
172
|
+
# Takes sync options or a sync_url
|
173
|
+
# You will need to call #each_page or #first_page on it
|
174
|
+
def sync(options = { initial: true })
|
175
|
+
Sync.new(self, options)
|
176
|
+
end
|
177
|
+
|
178
|
+
|
163
179
|
private
|
164
180
|
|
165
181
|
def normalize_configuration!
|
166
|
-
[:space, :access_token, :api_url].each { |s| configuration[s] = configuration[s].to_s }
|
182
|
+
[:space, :access_token, :api_url, :default_locale].each { |s| configuration[s] = configuration[s].to_s }
|
167
183
|
configuration[:authentication_mechanism] = configuration[:authentication_mechanism].to_sym
|
168
184
|
end
|
169
185
|
|
@@ -180,6 +196,10 @@ module Contentful
|
|
180
196
|
raise ArgumentError, 'The client configuration needs to contain an :api_url'
|
181
197
|
end
|
182
198
|
|
199
|
+
if configuration[:default_locale].empty?
|
200
|
+
raise ArgumentError, 'The client configuration needs to contain a :default_locale'
|
201
|
+
end
|
202
|
+
|
183
203
|
unless configuration[:api_version].to_i >= 0
|
184
204
|
raise ArgumentError, 'The :api_version must be a positive number or nil'
|
185
205
|
end
|