contentful-management 2.4.0 → 2.5.0

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
  SHA256:
3
- metadata.gz: 386e22c5309df503436b066804e279c4aa8912c6dc84ef02be9c90ce7d617cc5
4
- data.tar.gz: e8d54a6fbf5e5a229abf9391743e3d06264d15088e6033d4522bef5b1ab14622
3
+ metadata.gz: 683b48fdab7cafe30ccbc6ba4359db731ce08a97f59b83cae82397a3982f03bf
4
+ data.tar.gz: bf94afa87c07baa3daca8e6b70dad36000fadffcd41334e625ddadfe4f25197f
5
5
  SHA512:
6
- metadata.gz: 3f3f99d5e04748431abf899b58d4a6e729e3814a3af740676a98cbe0b721fc9c27df0f9c192443014613d7ee36f98172550919bbe5f51a8e5c6d053ecb2c5c43
7
- data.tar.gz: 2582509fd98611a065920e9333b6b755dd05aa1389a213caedb3617a66a898f9d94ac45805a16aa6a39064d2186ad0d2912624f9c1d6289bdecc559b81b80646
6
+ metadata.gz: bbebbb891e59e74e85919ea4e8e992ace7c467b652a098d8668cf5b587744789ac8fc4de1dff1026a1a010ad0d85aa33c99bfbfb01fd0a437e2c8e287841fb56
7
+ data.tar.gz: 6e0af2ee33543eab79af415edaa8939a6ab747d858d8717d16a621aaf45a898e50dca21cb0fdf2282c2b691b599d3935a4d87f2781c5c57da85baaed05157025
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## Master
4
4
 
5
+ ## 2.5.0
6
+
7
+ As `RichText` moves from `alpha` to `beta`, we're treating this as a feature release.
8
+
9
+ ### Added
10
+ * Added `#save` method to resources, generalizing how to create/update them.
11
+
12
+ ### Changed
13
+ * Renamed `StructuredText` to `RichText`.
14
+
5
15
  ## 2.4.0
6
16
  ### Added
7
17
  * Added support for StructuredText field type.
@@ -64,19 +64,6 @@ module Contentful
64
64
  self
65
65
  end
66
66
 
67
- # If an asset is a new object gets created in the Contentful, otherwise the existing asset gets updated.
68
- # @see _ https://github.com/contentful/contentful-management.rb for details.
69
- #
70
- # @return [Contentful::Management::Asset]
71
- def save
72
- if id
73
- update(title: title, description: description, file: file)
74
- else
75
- new_instance = self.class.create(client, sys[:space].id, fields: instance_variable_get(:@fields))
76
- refresh_data(new_instance)
77
- end
78
- end
79
-
80
67
  # Returns currently supported locale or default locale.
81
68
  # @return [String] current_locale
82
69
  def locale
@@ -26,7 +26,7 @@ module Contentful
26
26
  ARRAY = 'Array'.freeze,
27
27
  OBJECT = 'Object'.freeze,
28
28
  LOCATION = 'Location'.freeze,
29
- STRUCTURED_TEXT = 'StructuredText'.freeze
29
+ STRUCTURED_TEXT = 'RichText'.freeze
30
30
  ].freeze
31
31
 
32
32
  include Contentful::Management::Resource
@@ -74,19 +74,6 @@ module Contentful
74
74
  end
75
75
  end
76
76
 
77
- # If a content type is a new object gets created in the Contentful, otherwise the existing entry gets updated.
78
- # @see _ README for details.
79
- #
80
- # @return [Contentful::Management::ContentType]
81
- def save
82
- if id
83
- update(@properties)
84
- else
85
- new_instance = self.class.create(client, space.id, environment_id, @properties)
86
- refresh_data(new_instance)
87
- end
88
- end
89
-
90
77
  # This method merges existing fields with new one, when adding, creating or updating new fields.
91
78
  # @private
92
79
  def merged_fields(new_field)
@@ -45,6 +45,7 @@ module Contentful
45
45
  DynamicEntry.create(content_type, content_type.client)
46
46
  )
47
47
  dynamic_entry = dynamic_entry_class.new
48
+ dynamic_entry.space = content_type.space
48
49
  dynamic_entry.content_type = content_type
49
50
  dynamic_entry
50
51
  end
@@ -66,19 +66,11 @@ module Contentful
66
66
  content_type_id: content_type.id,
67
67
  editor_id: id
68
68
  },
69
- { 'controls' => attributes.fetch(:controls) },
69
+ { 'controls' => attributes[:controls] || controls },
70
70
  version: sys[:version]
71
71
  )
72
72
  end
73
73
 
74
- # Saves the current editor interface.
75
- # @see _ README for details.
76
- #
77
- # @return [Contentful::Management::EditorInterface]
78
- def save
79
- update(controls: controls) if id
80
- end
81
-
82
74
  # Destroys an EditorInterface.
83
75
  #
84
76
  # Not Supported
@@ -61,8 +61,8 @@ module Contentful
61
61
  end
62
62
 
63
63
  # @private
64
- def self.create_headers(_client, attributes)
65
- content_type = attributes[:content_type]
64
+ def self.create_headers(_client, attributes, instance = nil)
65
+ content_type = instance.nil? ? attributes[:content_type] : (instance.content_type || instance.sys[:contentType])
66
66
  content_type_id = content_type.respond_to?(:id) ? content_type.id : content_type[:id]
67
67
 
68
68
  { content_type_id: content_type_id }
@@ -130,25 +130,6 @@ module Contentful
130
130
  self.locale = attributes[:locale] || client.default_locale
131
131
  end
132
132
 
133
- # If an entry is a new object gets created in the Contentful, otherwise the existing entry gets updated.
134
- # @see _ README for details.
135
- #
136
- # @return [Contentful::Management::Entry]
137
- def save
138
- if id
139
- update({})
140
- else
141
- new_instance = Contentful::Management::Entry.create(
142
- client,
143
- content_type.space.id,
144
- environment_id,
145
- content_type: content_type,
146
- fields: instance_variable_get(:@fields)
147
- )
148
- refresh_data(new_instance)
149
- end
150
- end
151
-
152
133
  # Returns the currently supported local.
153
134
  #
154
135
  # @return [String] current_locale
@@ -62,18 +62,24 @@ module Contentful
62
62
  #
63
63
  # @return [Contentful::Management::Resource]
64
64
  def update(attributes)
65
+ headers = self.class.create_headers(client, attributes, self)
66
+ headers = headers.merge(update_headers)
67
+
65
68
  ResourceRequester.new(client, self.class).update(
66
69
  self,
67
- {
68
- space_id: space.id,
69
- environment_id: environment_id,
70
- resource_id: id
71
- },
70
+ update_url_attributes,
72
71
  query_attributes(attributes),
73
- version: sys[:version]
72
+ headers
74
73
  )
75
74
  end
76
75
 
76
+ # Creates or updates a resource.
77
+ #
78
+ # @return [Contentful::Management::Resource]
79
+ def save
80
+ update({})
81
+ end
82
+
77
83
  # Destroys a resource.
78
84
  #
79
85
  # @return [true, Contentful::Management::Error] success
@@ -130,6 +136,18 @@ module Contentful
130
136
 
131
137
  protected
132
138
 
139
+ def update_headers
140
+ { version: sys[:version] }
141
+ end
142
+
143
+ def update_url_attributes
144
+ {
145
+ space_id: space.id,
146
+ environment_id: environment_id,
147
+ resource_id: id
148
+ }
149
+ end
150
+
133
151
  def query_attributes(attributes)
134
152
  attributes
135
153
  end
@@ -249,7 +267,7 @@ module Contentful
249
267
  end
250
268
 
251
269
  # @private
252
- def create_headers(_client, _attributes)
270
+ def create_headers(_client, _attributes, _instance = nil)
253
271
  {}
254
272
  end
255
273
 
@@ -35,7 +35,7 @@ module Contentful
35
35
  end
36
36
 
37
37
  def update(object, endpoint_options = {}, attributes = {}, headers = {})
38
- object.refresh_data(put(endpoint_options, attributes, headers))
38
+ object.refresh_data(put(endpoint_options, attributes, headers, object))
39
39
  end
40
40
 
41
41
  def destroy(endpoint_options = {})
@@ -69,7 +69,8 @@ module Contentful
69
69
  ResourceBuilder.new(request.get, client).run
70
70
  end
71
71
 
72
- def put(endpoint_options = {}, attributes = {}, headers = {})
72
+ def put(endpoint_options = {}, attributes = {}, headers = {}, object = nil)
73
+ is_update = !object.nil? && object.id
73
74
  request = Request.new(
74
75
  client,
75
76
  resource_class.build_endpoint(endpoint_options),
@@ -77,7 +78,7 @@ module Contentful
77
78
  nil,
78
79
  headers
79
80
  )
80
- ResourceBuilder.new(request.put, client).run
81
+ ResourceBuilder.new(is_update ? request.put : request.post, client).run
81
82
  end
82
83
 
83
84
  def delete(endpoint_options = {}, attributes = {}, headers = {})
@@ -22,13 +22,13 @@ module Contentful
22
22
  def self.create_attributes(_client, attributes)
23
23
  extension = attributes['extension'] || attributes[:extension]
24
24
 
25
- fail 'Invalid UI Extension attributes' unless valid_extension(extension)
25
+ fail 'Invalid UI Extension attributes' unless valid_extension?(extension)
26
26
 
27
27
  { 'extension' => extension }
28
28
  end
29
29
 
30
30
  # @private
31
- def self.valid_extension(extension)
31
+ def self.valid_extension?(extension)
32
32
  return false unless extension.key?('name')
33
33
  return false unless extension.key?('fieldTypes') && extension['fieldTypes'].is_a?(::Array)
34
34
  return false unless extension.key?('src') || extension.key?('srcdoc')
@@ -41,13 +41,8 @@ module Contentful
41
41
  #
42
42
  # @return [Contentful::Management::UIExtension]
43
43
  def save
44
- self.class.valid_extension(extension)
45
- if id
46
- update(extension: extension)
47
- else
48
- new_instance = self.class.create(client, sys[:space].id, environment_id, extension: extension)
49
- refresh_data(new_instance)
50
- end
44
+ fail 'Invalid UI extension attributes' unless self.class.valid_extension?(extension)
45
+ update(extension: extension)
51
46
  end
52
47
 
53
48
  # Returns extension name
@@ -3,6 +3,6 @@ module Contentful
3
3
  # Management Namespace
4
4
  module Management
5
5
  # Gem Version
6
- VERSION = '2.4.0'.freeze
6
+ VERSION = '2.5.0'.freeze
7
7
  end
8
8
  end
@@ -5,9 +5,9 @@ http_interactions:
5
5
  uri: https://api.contentful.com/spaces/ctgv7kwgsghk/environments/master/content_types
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"name":"StructuredText","description":"Content type with StructuredText
9
- field","fields":[{"id":"my_StructuredText_field","name":"My StructuredText
10
- Field","type":"StructuredText"}]}'
8
+ string: '{"name":"RichText","description":"Content type with RichText
9
+ field","fields":[{"id":"my_RichText_field","name":"My RichText
10
+ Field","type":"RichText"}]}'
11
11
  headers:
12
12
  X-Contentful-User-Agent:
13
13
  - sdk contentful-management.rb/2.3.0; platform ruby/2.5.1; os macOS/16;
@@ -119,13 +119,13 @@ http_interactions:
119
119
  "version": 1
120
120
  },
121
121
  "displayField": null,
122
- "name": "StructuredText",
123
- "description": "Content type with StructuredText field",
122
+ "name": "RichText",
123
+ "description": "Content type with RichText field",
124
124
  "fields": [
125
125
  {
126
- "id": "my_StructuredText_field",
127
- "name": "My StructuredText Field",
128
- "type": "StructuredText",
126
+ "id": "my_RichText_field",
127
+ "name": "My RichText Field",
128
+ "type": "RichText",
129
129
  "localized": false,
130
130
  "required": false,
131
131
  "validations": [],
@@ -188,7 +188,7 @@ module Contentful
188
188
  end
189
189
  end
190
190
 
191
- Contentful::Management::ContentType::FIELD_TYPES.reject { |f| f == 'StructuredText' }.each do |field_type|
191
+ Contentful::Management::ContentType::FIELD_TYPES.reject { |f| f == 'RichText' }.each do |field_type|
192
192
  it "creates within a space with #{ field_type } field" do
193
193
  vcr("content_type/create_with_#{ field_type }_field") do
194
194
  field = Contentful::Management::Field.new
@@ -213,22 +213,22 @@ module Contentful
213
213
  end
214
214
  end
215
215
 
216
- it "creates within a space with StructuredText field" do
217
- vcr("content_type/create_with_StructuredText_field") do
216
+ it "creates within a space with RichText field" do
217
+ vcr("content_type/create_with_RichText_field") do
218
218
  subject = client.content_types('ctgv7kwgsghk', 'master')
219
219
 
220
220
  field = Contentful::Management::Field.new
221
- field.id = "my_StructuredText_field"
222
- field.name = "My StructuredText Field"
223
- field.type = 'StructuredText'
221
+ field.id = "my_RichText_field"
222
+ field.name = "My RichText Field"
223
+ field.type = 'RichText'
224
224
  content_type = subject.create(
225
- name: "StructuredText",
226
- description: "Content type with StructuredText field",
225
+ name: "RichText",
226
+ description: "Content type with RichText field",
227
227
  fields: [field]
228
228
  )
229
229
  expect(content_type).to be_kind_of Contentful::Management::ContentType
230
- expect(content_type.name).to eq "StructuredText"
231
- expect(content_type.description).to eq "Content type with StructuredText field"
230
+ expect(content_type.name).to eq "RichText"
231
+ expect(content_type.description).to eq "Content type with RichText field"
232
232
  expect(content_type.fields.size).to eq 1
233
233
  result_field = content_type.fields.first
234
234
  expect(result_field.id).to eq field.id
@@ -14,11 +14,11 @@ module Contentful
14
14
  subject { client.ui_extensions(space_id, 'master') }
15
15
 
16
16
  describe 'class methods' do
17
- describe '::valid_extension' do
17
+ describe '::valid_extension?' do
18
18
  it 'false when name is missing' do
19
19
  extension = {}
20
20
 
21
- expect(described_class.valid_extension(extension)).to be_falsey
21
+ expect(described_class.valid_extension?(extension)).to be_falsey
22
22
  end
23
23
 
24
24
  it 'false when fieldTypes is missing' do
@@ -26,7 +26,7 @@ module Contentful
26
26
  'name' => 'foobar'
27
27
  }
28
28
 
29
- expect(described_class.valid_extension(extension)).to be_falsey
29
+ expect(described_class.valid_extension?(extension)).to be_falsey
30
30
  end
31
31
 
32
32
  it 'false when fieldTypes is present but not an array' do
@@ -35,7 +35,7 @@ module Contentful
35
35
  'fieldTypes' => 'baz'
36
36
  }
37
37
 
38
- expect(described_class.valid_extension(extension)).to be_falsey
38
+ expect(described_class.valid_extension?(extension)).to be_falsey
39
39
  end
40
40
 
41
41
  it 'false when both src and srcdoc missing' do
@@ -44,7 +44,7 @@ module Contentful
44
44
  'fieldTypes' => ['Symbol']
45
45
  }
46
46
 
47
- expect(described_class.valid_extension(extension)).to be_falsey
47
+ expect(described_class.valid_extension?(extension)).to be_falsey
48
48
  end
49
49
 
50
50
  it 'true when all of the above are passed' do
@@ -54,7 +54,7 @@ module Contentful
54
54
  'src' => 'foo'
55
55
  }
56
56
 
57
- expect(described_class.valid_extension(extension)).to be_truthy
57
+ expect(described_class.valid_extension?(extension)).to be_truthy
58
58
 
59
59
  extension = {
60
60
  'name' => 'foobar',
@@ -62,7 +62,7 @@ module Contentful
62
62
  'srcdoc' => 'foo'
63
63
  }
64
64
 
65
- expect(described_class.valid_extension(extension)).to be_truthy
65
+ expect(described_class.valid_extension?(extension)).to be_truthy
66
66
  end
67
67
 
68
68
  it 'false if sidebar is present but not boolean' do
@@ -73,7 +73,7 @@ module Contentful
73
73
  'sidebar' => true
74
74
  }
75
75
 
76
- expect(described_class.valid_extension(extension)).to be_truthy
76
+ expect(described_class.valid_extension?(extension)).to be_truthy
77
77
 
78
78
  extension = {
79
79
  'name' => 'foobar',
@@ -82,7 +82,7 @@ module Contentful
82
82
  'sidebar' => false
83
83
  }
84
84
 
85
- expect(described_class.valid_extension(extension)).to be_truthy
85
+ expect(described_class.valid_extension?(extension)).to be_truthy
86
86
 
87
87
  extension = {
88
88
  'name' => 'foobar',
@@ -91,7 +91,7 @@ module Contentful
91
91
  'sidebar' => 'foobar'
92
92
  }
93
93
 
94
- expect(described_class.valid_extension(extension)).to be_falsey
94
+ expect(described_class.valid_extension?(extension)).to be_falsey
95
95
  end
96
96
  end
97
97
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contentful-management
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Protas
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-09-18 00:00:00.000000000 Z
13
+ date: 2018-10-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: http
@@ -466,7 +466,7 @@ files:
466
466
  - spec/fixtures/vcr_cassettes/content_type/create_with_Location_field.yml
467
467
  - spec/fixtures/vcr_cassettes/content_type/create_with_Number_field.yml
468
468
  - spec/fixtures/vcr_cassettes/content_type/create_with_Object_field.yml
469
- - spec/fixtures/vcr_cassettes/content_type/create_with_StructuredText_field.yml
469
+ - spec/fixtures/vcr_cassettes/content_type/create_with_RichText_field.yml
470
470
  - spec/fixtures/vcr_cassettes/content_type/create_with_Symbol_field.yml
471
471
  - spec/fixtures/vcr_cassettes/content_type/create_with_Text_field.yml
472
472
  - spec/fixtures/vcr_cassettes/content_type/deactivate.yml
@@ -853,7 +853,7 @@ test_files:
853
853
  - spec/fixtures/vcr_cassettes/content_type/create_with_Location_field.yml
854
854
  - spec/fixtures/vcr_cassettes/content_type/create_with_Number_field.yml
855
855
  - spec/fixtures/vcr_cassettes/content_type/create_with_Object_field.yml
856
- - spec/fixtures/vcr_cassettes/content_type/create_with_StructuredText_field.yml
856
+ - spec/fixtures/vcr_cassettes/content_type/create_with_RichText_field.yml
857
857
  - spec/fixtures/vcr_cassettes/content_type/create_with_Symbol_field.yml
858
858
  - spec/fixtures/vcr_cassettes/content_type/create_with_Text_field.yml
859
859
  - spec/fixtures/vcr_cassettes/content_type/deactivate.yml