wcc-contentful 0.2.1 → 0.2.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
2
  SHA1:
3
- metadata.gz: bbf4090e5eb907ab57ae130ef528a05b48bedff6
4
- data.tar.gz: 717ac008fd501476b14f7e638b12dbc3afa7f9a3
3
+ metadata.gz: 58ee6d756754247484bf90a993340caf891a7471
4
+ data.tar.gz: 947b949744aacf47612a91237e70807e91c53664
5
5
  SHA512:
6
- metadata.gz: b5218be16ee83549e3dd3e876ce8be5d4ffee0ad0d33534eeaa2ef9679a4e2d973a78b242b192fac90d83836af35875a174896a578922f4ead213989dc9f68d8
7
- data.tar.gz: a9673fbfa992ff680a49887a2aa4563adde136255476d1f160b9769ff5cb398ef304d7f86c851c0700d55c840a1f566e77d287b73eaee8ca4286b50f6a6dd163
6
+ metadata.gz: b89c3971ea984941b7f6dcba32cf1b9942417236a8074224304716379bccc9e8a7e10cfb646cece2d4989b514ee8ada7e55bc65f03668d8686482418d2699dc9
7
+ data.tar.gz: 47ebcda216d33570a8a99018131c84411bbc42c3dead50c47632bc3b2e1d516d3af18447b31e2c17dc003e7805423e4bef891545c3302fd6fa1792504cf4d6bd
@@ -23,4 +23,23 @@
23
23
  * Application models can be registered to be instantiated for a given content type
24
24
  * New 'lazy sync' delivery method acts as a cache that is kept up to date by the sync API
25
25
  * 'eager sync' is now hooked up to a webhook which can be mounted to receive publish events
26
- * Major changes to configuration methods
26
+ * Major changes to configuration methods
27
+
28
+ # v0.2.2
29
+
30
+ * Add preview_client for doing contentful calls to their preview api
31
+ * 'find_by' can now receive a preview param set to a boolean value
32
+ * Can configure your preview_api by passing a preview_token to configure block
33
+ * The Redirect model provides a 'href' method that will give you the url it points to
34
+
35
+ # v0.3.0
36
+
37
+ * Now neccesary to require the engine in a Gemfile when using in Rails:
38
+
39
+ `gem 'wcc-contentful', require: 'wcc/contentful/rails'`
40
+
41
+ * The gem can be configured to point to a non-master environment with the following configuration parameter:
42
+
43
+ `config.environment = 'my_environment'`
44
+
45
+ * When a model is not found in contentful, `Model.find_by` returns `nil` rather than raising an error.
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  Add this line to your application's Gemfile:
6
6
 
7
7
  ```ruby
8
- gem 'wcc-contentful'
8
+ gem 'wcc-contentful', require: 'wcc/contentful/rails'
9
9
  ```
10
10
 
11
11
  And then execute:
@@ -21,6 +21,7 @@ Or install it yourself as:
21
21
  ```ruby
22
22
  WCC::Contentful.configure do |config|
23
23
  config.access_token = <CONTENTFUL_ACCESS_TOKEN>
24
+ config.preview_token = <CONTENTFUL_PREVIEW_TOKEN>
24
25
  config.space = <CONTENTFUL_SPACE_ID>
25
26
  config.default_locale = "en-US"
26
27
  end
@@ -29,9 +30,11 @@ end
29
30
  ## Usage
30
31
 
31
32
  ```ruby
32
- redirect_object = WCC::Contentful::Redirect.find_by_slug('new')
33
+ redirect_object = WCC::Contentful::Model::Redirect.find_by({slug: 'published-redirect'}, preview: false)
34
+ redirect_object.href
33
35
 
34
- redirect_object.location
36
+ preview_redirect_object = WCC::Contentful::Model::Redirect.find_by({slug: 'draft-redirect'}, preview: true)
37
+ preview_redirect_object.href
35
38
  ```
36
39
 
37
40
  ## Development
@@ -3,14 +3,14 @@ Description:
3
3
  to your contentful space.
4
4
 
5
5
  Example:
6
- rails generate wcc:menu
6
+ rails generate wcc:model MODEL
7
7
 
8
8
  This will install:
9
9
  https://www.github.com/watermarkchurch/migration-cli
10
10
 
11
11
  This will create:
12
- db/migrate/[date]_generated_add_menus.ts -
13
- this migration is run by the migration CLI to create menus in your
12
+ db/migrate/[date]_generated_add_[MODEL].ts -
13
+ this migration is run by the migration CLI to create MODEL in your
14
14
  contentful space
15
15
  bin/release -
16
16
  Adds a release command to your rails app which runs migrations.
@@ -1,13 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wcc
4
- class MenuGenerator < Rails::Generators::Base
4
+ class ModelGenerator < Rails::Generators::Base
5
5
  source_root File.expand_path('templates', __dir__)
6
+ argument :model, type: :string
6
7
 
7
- def create_menus_migration
8
- now = Time.now.strftime('%Y%m%d%H%M')
9
- copy_file 'menu/generated_add_menus.ts',
10
- "db/migrate/#{now}01_generated_add_menus.ts"
8
+ VALID_MODELS = %w[menu page].freeze
9
+
10
+ def initialize(*)
11
+ super
12
+
13
+ return if VALID_MODELS.include?(singular)
14
+
15
+ raise ArgumentError, "Model must be #{VALID_MODELS.to_sentence}"
11
16
  end
12
17
 
13
18
  def ensure_migration_tools_installed
@@ -17,7 +22,7 @@ module Wcc
17
22
  deps = package['dependencies']
18
23
 
19
24
  unless deps.try(:[], 'contentful-migration-cli').present?
20
- run 'npm install --save watermarkchurch/migration-cli ts-node typescript'
25
+ run 'npm install --save watermarkchurch/migration-cli ts-node typescript contentful-export'
21
26
  end
22
27
  end
23
28
  end
@@ -59,9 +64,27 @@ module Wcc
59
64
  copy_file 'wcc_contentful.rb', 'config/initializers/wcc_contentful.rb'
60
65
  end
61
66
 
67
+ def create_model_migration
68
+ copy_file "#{singular}/generated_add_#{plural}.ts",
69
+ "db/migrate/#{timestamp}01_generated_add_#{plural}.ts"
70
+ end
71
+
62
72
  def drop_model_overrides_in_app_models
63
- copy_file 'menu/menu.rb', 'app/models/menu.rb'
64
- copy_file 'menu/menu_button.rb', 'app/models/menu_button.rb'
73
+ directory "#{singular}/models", 'app/models'
74
+ end
75
+
76
+ private
77
+
78
+ def singular
79
+ model.downcase.singularize
80
+ end
81
+
82
+ def plural
83
+ model.downcase.pluralize
84
+ end
85
+
86
+ def timestamp
87
+ Time.now.strftime('%Y%m%d%H%M')
65
88
  end
66
89
  end
67
90
  end
@@ -176,13 +176,15 @@ migrate() {
176
176
 
177
177
  require_environment
178
178
 
179
+ [[ ! -z "$CONTENTFUL_ENVIRONMENT" ]] && ENV="--environment-id $CONTENTFUL_ENVIRONMENT"
180
+
179
181
  execv node_modules/.bin/ts-node node_modules/.bin/contentful-migration \
180
- -s $CONTENTFUL_SPACE_ID -a $CONTENTFUL_MANAGEMENT_TOKEN \
182
+ -s $CONTENTFUL_SPACE_ID $ENV -a $CONTENTFUL_MANAGEMENT_TOKEN \
181
183
  $YES -p $ARG
182
184
 
183
185
  mkdir -p db
184
186
  execv node_modules/.bin/contentful-export --export-dir db --content-file contentful-schema.json \
185
- --space-id $CONTENTFUL_SPACE_ID --management-token $CONTENTFUL_MANAGEMENT_TOKEN \
187
+ --space-id $CONTENTFUL_SPACE_ID $ENV --management-token $CONTENTFUL_MANAGEMENT_TOKEN \
186
188
  --query-entries 'content_type=migrationHistory' \
187
189
  --query-assets 'sys.id=false'
188
190
 
@@ -61,6 +61,11 @@ export = function (migration: Migration) {
61
61
  .name('Icon')
62
62
  .type('Link')
63
63
  .linkType('Asset')
64
+ .validations([
65
+ {
66
+ linkMimetypeGroup: ['image']
67
+ }
68
+ ])
64
69
 
65
70
  menuButton.createField('externalLink')
66
71
  .name('External Link')
@@ -0,0 +1,50 @@
1
+ import Migration from 'contentful-migration-cli'
2
+
3
+ export = function (migration: Migration) {
4
+ const page = migration.createContentType('page')
5
+ .name('Page')
6
+ .description('A page describes a collection of sections that correspond' +
7
+ 'to a URL slug')
8
+ .displayField('title')
9
+
10
+ page.createField('title')
11
+ .name('Title')
12
+ .type('Symbol')
13
+ .required(true)
14
+
15
+ page.createField('slug')
16
+ .name('Slug')
17
+ .type('Symbol')
18
+ .required(true)
19
+ .validations([
20
+ {
21
+ unique: true
22
+ },
23
+ {
24
+ regexp: { pattern: "(\\/|\\/([\w#!:.?+=&%@!\\-\\/]))?$" },
25
+ message: "The slug must look like the path part of a URL and begin with a forward slash, example: '/my-page-slug'"
26
+ }
27
+ ])
28
+
29
+ page.createField('sections')
30
+ .name('Sections')
31
+ .type('Array')
32
+ .items({
33
+ type: 'Link',
34
+ linkType: 'Entry'
35
+ })
36
+
37
+ page.createField('subpages')
38
+ .name('Subpages')
39
+ .type('Array')
40
+ .items({
41
+ type: 'Link',
42
+ linkType: 'Entry',
43
+ validations: [
44
+ {
45
+ linkContentType: [ 'page' ]
46
+ }
47
+ ]
48
+ })
49
+
50
+ }
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This model represents the 'page' content type in Contentful. Any linked
4
+ # entries of the 'page' content type will be resolved as instances of this class.
5
+ # It exposes #find, #find_by, and #find_all methods to query Contentful.
6
+ class Page < WCC::Contentful::Model::Page
7
+ # Add custom validations to ensure that app-specific properties exist:
8
+ # validate_field :foo, :String, :required
9
+ # validate_field :bar_links, :Array, link_to: %w[bar baz]
10
+
11
+ # Override functionality or add utilities
12
+ #
13
+ # # Example: override equality
14
+ # def ===(other)
15
+ # ...
16
+ # end
17
+ #
18
+ # # Example: override "title" attribute to always be titlecase.
19
+ # # `@title` is populated by the gem in the initializer.
20
+ # def title
21
+ # @title_titlecased ||= @title.titlecase
22
+ # end
23
+ end
@@ -35,8 +35,12 @@ module WCC::Contentful
35
35
  ##
36
36
  # Gets a {CDN Client}[rdoc-ref:WCC::Contentful::SimpleClient::Cdn] which provides
37
37
  # methods for getting and paging raw JSON data from the Contentful CDN.
38
- def self.client
39
- configuration&.client
38
+ def self.client(preview: false)
39
+ if preview
40
+ configuration&.preview_client
41
+ else
42
+ configuration&.client
43
+ end
40
44
  end
41
45
 
42
46
  ##
@@ -59,6 +63,10 @@ module WCC::Contentful
59
63
  WCC::Contentful::Model.store
60
64
  end
61
65
 
66
+ def self.preview_store
67
+ WCC::Contentful::Model.preview_store
68
+ end
69
+
62
70
  ##
63
71
  # Configures the WCC::Contentful gem to talk to a Contentful space.
64
72
  # This must be called first in your initializer, before #init! or accessing the
@@ -68,8 +76,7 @@ module WCC::Contentful
68
76
  @next_sync_token = nil
69
77
  yield(configuration)
70
78
 
71
- raise ArgumentError, 'Please provide "space"' unless configuration.space.present?
72
- raise ArgumentError, 'Please provide "access_token"' unless configuration.access_token.present?
79
+ configuration.validate!
73
80
 
74
81
  configuration.configure_contentful
75
82
 
@@ -90,6 +97,7 @@ module WCC::Contentful
90
97
  raise ArgumentError, 'Please first call WCC:Contentful.configure' if configuration.nil?
91
98
  @mutex ||= Mutex.new
92
99
 
100
+ use_preview_client = false
93
101
  # we want as much as possible the raw JSON from the API
94
102
  content_types_resp =
95
103
  if configuration.management_client
@@ -97,6 +105,9 @@ module WCC::Contentful
97
105
  else
98
106
  configuration.client.content_types(limit: 1000)
99
107
  end
108
+
109
+ (use_preview_client = true) unless configuration.preview_client.nil?
110
+
100
111
  @content_types = content_types_resp.items
101
112
 
102
113
  indexer =
@@ -105,8 +116,15 @@ module WCC::Contentful
105
116
  end
106
117
  @types = indexer.types
107
118
 
108
- store = configuration.store
109
- WCC::Contentful::Model.store = store
119
+ if use_preview_client
120
+ store = configuration.store(preview: false)
121
+ WCC::Contentful::Model.store = store
122
+ preview_store = configuration.store(preview: use_preview_client)
123
+ WCC::Contentful::Model.preview_store = preview_store
124
+ else
125
+ store = configuration.store(preview: use_preview_client)
126
+ WCC::Contentful::Model.store = store
127
+ end
110
128
 
111
129
  if store.respond_to?(:index)
112
130
  @next_sync_token = store.find("sync:#{configuration.space}:token")
@@ -120,11 +138,6 @@ module WCC::Contentful
120
138
  file = File.dirname(__FILE__) + "/contentful/model/#{t.name.underscore}.rb"
121
139
  require file if File.exist?(file)
122
140
  end
123
-
124
- return unless defined?(Rails)
125
-
126
- # load up the engine so it gets automatically mounted
127
- require 'wcc/contentful/engine'
128
141
  end
129
142
 
130
143
  ##
@@ -5,8 +5,10 @@ class WCC::Contentful::Configuration
5
5
  access_token
6
6
  management_token
7
7
  space
8
+ environment
8
9
  default_locale
9
10
  content_delivery
11
+ preview_token
10
12
  http_adapter
11
13
  sync_cache_store
12
14
  webhook_username
@@ -59,12 +61,20 @@ class WCC::Contentful::Configuration
59
61
 
60
62
  ##
61
63
  # Initializes the configured Sync Store.
62
- def store
63
- @store ||= WCC::Contentful::Store::Factory.new(
64
- self,
65
- @content_delivery,
66
- @content_delivery_params
67
- ).build_sync_store
64
+ def store(preview: false)
65
+ if preview
66
+ @preview_store ||= WCC::Contentful::Store::Factory.new(
67
+ self,
68
+ :direct,
69
+ [{ preview: preview }]
70
+ ).build_sync_store
71
+ else
72
+ @store ||= WCC::Contentful::Store::Factory.new(
73
+ self,
74
+ @content_delivery,
75
+ @content_delivery_params
76
+ ).build_sync_store
77
+ end
68
78
  end
69
79
 
70
80
  ##
@@ -84,6 +94,7 @@ class WCC::Contentful::Configuration
84
94
  def initialize
85
95
  @access_token = ''
86
96
  @management_token = ''
97
+ @preview_token = ''
87
98
  @space = ''
88
99
  @default_locale = nil
89
100
  @content_delivery = :direct
@@ -94,6 +105,7 @@ class WCC::Contentful::Configuration
94
105
  # methods for getting and paging raw JSON data from the Contentful CDN.
95
106
  attr_reader :client
96
107
  attr_reader :management_client
108
+ attr_reader :preview_client
97
109
 
98
110
  ##
99
111
  # Called by WCC::Contentful.init! to configure the
@@ -105,6 +117,7 @@ class WCC::Contentful::Configuration
105
117
  def configure_contentful
106
118
  @client = nil
107
119
  @management_client = nil
120
+ @preview_client = nil
108
121
 
109
122
  if defined?(::ContentfulModel)
110
123
  ContentfulModel.configure do |config|
@@ -121,14 +134,35 @@ class WCC::Contentful::Configuration
121
134
  access_token: access_token,
122
135
  space: space,
123
136
  default_locale: default_locale,
124
- adapter: http_adapter
137
+ adapter: http_adapter,
138
+ environment: environment
125
139
  )
140
+
141
+ if preview_token.present?
142
+ @preview_client = WCC::Contentful::SimpleClient::Preview.new(
143
+ preview_token: preview_token,
144
+ space: space,
145
+ default_locale: default_locale,
146
+ adapter: http_adapter
147
+ )
148
+ end
149
+
126
150
  return unless management_token.present?
127
151
  @management_client = WCC::Contentful::SimpleClient::Management.new(
128
152
  management_token: management_token,
129
153
  space: space,
130
154
  default_locale: default_locale,
131
- adapter: http_adapter
155
+ adapter: http_adapter,
156
+ environment: environment
132
157
  )
133
158
  end
159
+
160
+ def validate!
161
+ raise ArgumentError, 'Please provide "space"' unless space.present?
162
+ raise ArgumentError, 'Please provide "access_token"' unless access_token.present?
163
+
164
+ return if environment.nil? || %i[direct custom].include?(content_delivery)
165
+ raise ArgumentError, 'The Contentful Sync API currently does not work with environments. ' \
166
+ 'You can use the ":direct" content_delivery method, or provide a custom store implementation.'
167
+ end
134
168
  end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'wcc/rails'
4
-
5
3
  module WCC::Contentful
6
4
  class Engine < ::Rails::Engine
7
5
  isolate_namespace WCC::Contentful
@@ -1,4 +1,3 @@
1
-
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module WCC::Contentful::Helpers
@@ -16,7 +15,7 @@ module WCC::Contentful::Helpers
16
15
  end
17
16
 
18
17
  def constant_from_content_type(content_type)
19
- content_type.camelize.gsub(/[^_a-zA-Z0-9]/, '_')
18
+ content_type.gsub(/[^_a-zA-Z0-9]/, '_').camelize
20
19
  end
21
20
 
22
21
  def shared_prefix(string_array)
@@ -17,6 +17,7 @@ class WCC::Contentful::Model
17
17
  # See the {sync_store}[rdoc-ref:WCC::Contentful::Configuration.sync_store] parameter
18
18
  # on the WCC::Contentful::Configuration class.
19
19
  attr_accessor :store
20
+ attr_accessor :preview_store
20
21
 
21
22
  def const_missing(name)
22
23
  raise WCC::Contentful::ContentTypeNotFoundError,
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class WCC::Contentful::Model::Page < WCC::Contentful::Model
4
+ validate_field :title, :String
5
+ validate_field :slug, :String
6
+ validate_field :subpages, :Array, link_to: %w[page]
7
+ validate_field :sections, :Array, link_to: /^section/
8
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ class WCC::Contentful::Model::Redirect < WCC::Contentful::Model
4
+ def href
5
+ if !url.nil?
6
+ url
7
+ elsif valid_page_reference?(pageReference)
8
+ "/#{pageReference.url}"
9
+ end
10
+ end
11
+
12
+ def valid_page_reference?(page_ref)
13
+ if !page_ref.nil? && !defined?(page_ref.url).nil?
14
+ true
15
+ else
16
+ false
17
+ end
18
+ end
19
+ end
@@ -57,7 +57,13 @@ module WCC::Contentful
57
57
  bad_fields = filter.keys.reject { |k| fields.include?(k) }
58
58
  raise ArgumentError, "These fields do not exist: #{bad_fields}" unless bad_fields.empty?
59
59
 
60
- result = WCC::Contentful::Model.store.find_by(content_type: content_type, filter: filter)
60
+ result =
61
+ if defined?(context[:preview]) && context[:preview] == true
62
+ WCC::Contentful::Model.preview_store.find_by(content_type: content_type, filter: filter)
63
+ else
64
+ WCC::Contentful::Model.store.find_by(content_type: content_type, filter: filter)
65
+ end
66
+
61
67
  new(result, context) if result
62
68
  end
63
69
 
@@ -89,7 +95,7 @@ module WCC::Contentful
89
95
  if raw_value.present?
90
96
  case f.type
91
97
  when :DateTime
92
- raw_value = Time.zone.parse(raw_value)
98
+ raw_value = Time.parse(raw_value).localtime
93
99
  when :Int
94
100
  raw_value = Integer(raw_value)
95
101
  when :Float
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'wcc/rails'
4
+ require 'wcc/contentful'
5
+ require 'wcc/contentful/engine'
@@ -23,6 +23,9 @@ module WCC::Contentful
23
23
  @options = options
24
24
  @query_defaults = {}
25
25
  @query_defaults[:locale] = @options[:default_locale] if @options[:default_locale]
26
+
27
+ return unless env = options[:environment]
28
+ @api_url = URI.join(@api_url, 'environments/', env + '/')
26
29
  end
27
30
 
28
31
  def get(path, query = {})
@@ -99,6 +102,10 @@ module WCC::Contentful
99
102
  )
100
103
  end
101
104
 
105
+ def client_type
106
+ 'cdn'
107
+ end
108
+
102
109
  ##
103
110
  # Gets an entry by ID
104
111
  def entry(key, query = {})
@@ -155,22 +162,38 @@ module WCC::Contentful
155
162
  end
156
163
 
157
164
  class Management < SimpleClient
158
- def initialize(management_token:, **options)
165
+ def initialize(space:, management_token:, **options)
159
166
  super(
160
167
  api_url: options[:api_url] || 'https://api.contentful.com',
161
- space: options[:space] || '/',
168
+ space: space,
162
169
  access_token: management_token,
163
170
  **options
164
171
  )
165
172
  end
166
173
 
167
- def content_types(space: nil, **query)
168
- space ||= @space
169
- raise ArgumentError, 'please provide a space ID' if space.nil?
174
+ def client_type
175
+ 'management'
176
+ end
170
177
 
171
- resp = get("/spaces/#{space}/content_types", query)
178
+ def content_types(**query)
179
+ resp = get('content_types', query)
172
180
  resp.assert_ok!
173
181
  end
174
182
  end
183
+
184
+ class Preview < Cdn
185
+ def initialize(space:, preview_token:, **options)
186
+ super(
187
+ api_url: options[:api_url] || 'https://preview.contentful.com/',
188
+ space: space,
189
+ access_token: preview_token,
190
+ **options
191
+ )
192
+ end
193
+
194
+ def client_type
195
+ 'preview'
196
+ end
197
+ end
175
198
  end
176
199
  end
@@ -56,8 +56,12 @@ module WCC::Contentful::Store
56
56
  )
57
57
  end
58
58
 
59
- def build_direct(config, *_options)
60
- CDNAdapter.new(config.client)
59
+ def build_direct(config, *options)
60
+ if options.find { |array| array[:preview] == true }
61
+ CDNAdapter.new(config.preview_client)
62
+ else
63
+ CDNAdapter.new(config.client)
64
+ end
61
65
  end
62
66
 
63
67
  def validate_eager_sync(_config, store = nil, *_options)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module WCC
4
4
  module Contentful
5
- VERSION = '0.2.1'
5
+ VERSION = '0.2.2'
6
6
  end
7
7
  end
@@ -46,8 +46,8 @@ Gem::Specification.new do |spec|
46
46
  spec.add_development_dependency 'timecop', '~> 0.9.1'
47
47
 
48
48
  # optional dependencies
49
- spec.add_development_dependency 'contentful', '>= 0.12.0'
50
- spec.add_development_dependency 'contentful-management', '>= 1.10.0'
49
+ spec.add_development_dependency 'contentful', '2.6.0'
50
+ spec.add_development_dependency 'contentful-management', '2.0.2'
51
51
  spec.add_development_dependency 'graphql', '~> 1.7'
52
52
  spec.add_development_dependency 'http', '> 1.0', '< 3.0'
53
53
  spec.add_development_dependency 'pg', '~> 1.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wcc-contentful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Watermark Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-29 00:00:00.000000000 Z
11
+ date: 2018-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -238,30 +238,30 @@ dependencies:
238
238
  name: contentful
239
239
  requirement: !ruby/object:Gem::Requirement
240
240
  requirements:
241
- - - ">="
241
+ - - '='
242
242
  - !ruby/object:Gem::Version
243
- version: 0.12.0
243
+ version: 2.6.0
244
244
  type: :development
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
- - - ">="
248
+ - - '='
249
249
  - !ruby/object:Gem::Version
250
- version: 0.12.0
250
+ version: 2.6.0
251
251
  - !ruby/object:Gem::Dependency
252
252
  name: contentful-management
253
253
  requirement: !ruby/object:Gem::Requirement
254
254
  requirements:
255
- - - ">="
255
+ - - '='
256
256
  - !ruby/object:Gem::Version
257
- version: 1.10.0
257
+ version: 2.0.2
258
258
  type: :development
259
259
  prerelease: false
260
260
  version_requirements: !ruby/object:Gem::Requirement
261
261
  requirements:
262
- - - ">="
262
+ - - '='
263
263
  - !ruby/object:Gem::Version
264
- version: 1.10.0
264
+ version: 2.0.2
265
265
  - !ruby/object:Gem::Dependency
266
266
  name: graphql
267
267
  requirement: !ruby/object:Gem::Requirement
@@ -396,13 +396,15 @@ files:
396
396
  - config/initializers/mime_types.rb
397
397
  - config/routes.rb
398
398
  - lib/generators/wcc/USAGE
399
- - lib/generators/wcc/menu_generator.rb
399
+ - lib/generators/wcc/model_generator.rb
400
400
  - lib/generators/wcc/templates/.keep
401
401
  - lib/generators/wcc/templates/Procfile
402
402
  - lib/generators/wcc/templates/contentful_shell_wrapper
403
403
  - lib/generators/wcc/templates/menu/generated_add_menus.ts
404
- - lib/generators/wcc/templates/menu/menu.rb
405
- - lib/generators/wcc/templates/menu/menu_button.rb
404
+ - lib/generators/wcc/templates/menu/models/menu.rb
405
+ - lib/generators/wcc/templates/menu/models/menu_button.rb
406
+ - lib/generators/wcc/templates/page/generated_add_pages.ts
407
+ - lib/generators/wcc/templates/page/models/page.rb
406
408
  - lib/generators/wcc/templates/release
407
409
  - lib/generators/wcc/templates/wcc_contentful.rb
408
410
  - lib/wcc/contentful.rb
@@ -419,9 +421,12 @@ files:
419
421
  - lib/wcc/contentful/model.rb
420
422
  - lib/wcc/contentful/model/menu.rb
421
423
  - lib/wcc/contentful/model/menu_button.rb
424
+ - lib/wcc/contentful/model/page.rb
425
+ - lib/wcc/contentful/model/redirect.rb
422
426
  - lib/wcc/contentful/model_builder.rb
423
427
  - lib/wcc/contentful/model_validators.rb
424
428
  - lib/wcc/contentful/model_validators/dsl.rb
429
+ - lib/wcc/contentful/rails.rb
425
430
  - lib/wcc/contentful/simple_client.rb
426
431
  - lib/wcc/contentful/simple_client/http_adapter.rb
427
432
  - lib/wcc/contentful/simple_client/response.rb
@@ -454,20 +459,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
454
459
  version: '0'
455
460
  requirements: []
456
461
  rubyforge_project:
457
- rubygems_version: 2.5.2
462
+ rubygems_version: 2.6.11
458
463
  signing_key:
459
464
  specification_version: 4
460
465
  summary: '# WCC::Contentful ## Installation Add this line to your application''s
461
- Gemfile: ```ruby gem ''wcc-contentful'' ``` And then execute: $ bundle Or install
462
- it yourself as: $ gem install wcc-contentful ## Configure ```ruby WCC::Contentful.configure
463
- do |config| config.access_token = <CONTENTFUL_ACCESS_TOKEN> config.space = <CONTENTFUL_SPACE_ID>
464
- config.default_locale = "en-US" end ``` ## Usage ```ruby redirect_object = WCC::Contentful::Redirect.find_by_slug(''new'') redirect_object.location
465
- ``` ## Development After checking out the repo, run `bin/setup` to install dependencies.
466
- Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive
467
- prompt that will allow you to experiment. To install this gem onto your local machine,
468
- run `bundle exec rake install`. To release a new version, update the version number
469
- in `version.rb`, and then run `bundle exec rake release`, which will create a git
470
- tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). ##
466
+ Gemfile: ```ruby gem ''wcc-contentful'', require: ''wcc/contentful/rails'' ``` And
467
+ then execute: $ bundle Or install it yourself as: $ gem install wcc-contentful ##
468
+ Configure ```ruby WCC::Contentful.configure do |config| config.access_token = <CONTENTFUL_ACCESS_TOKEN>
469
+ config.preview_token = <CONTENTFUL_PREVIEW_TOKEN> config.space = <CONTENTFUL_SPACE_ID>
470
+ config.default_locale = "en-US" end ``` ## Usage ```ruby redirect_object = WCC::Contentful::Model::Redirect.find_by({slug:
471
+ ''published-redirect''}, preview: false) redirect_object.href preview_redirect_object
472
+ = WCC::Contentful::Model::Redirect.find_by({slug: ''draft-redirect''}, preview:
473
+ true) preview_redirect_object.href ``` ## Development After checking out the repo,
474
+ run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
475
+ You can also run `bin/console` for an interactive prompt that will allow you to
476
+ experiment. To install this gem onto your local machine, run `bundle exec rake
477
+ install`. To release a new version, update the version number in `version.rb`, and
478
+ then run `bundle exec rake release`, which will create a git tag for the version,
479
+ push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). ##
471
480
  Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/wcc-contentful.
472
481
  This project is intended to be a safe, welcoming space for collaboration, and contributors
473
482
  are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org)