dato 0.7.6 → 0.7.13

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: 118ea91dc3caa834412e342a2350b594c94880bbbafba6f37d2b6041b5570acc
4
- data.tar.gz: 64e1a53c6292a41ad4e361e4b01bdff416d09e3acebbd133afc123c2f80fe74b
3
+ metadata.gz: 8911d925c9122207b1b12804415839e1a60c6f42212523f8a9d8590a0ac3b609
4
+ data.tar.gz: fcb4dfbed9102fd7c037c635bb0a436ea8c5671964e51e7dcf1c9b7345f25471
5
5
  SHA512:
6
- metadata.gz: a93f7dccda38b47237a585a7274754b2a3c370918c476e5556bc42ec13a2326a53e594f25b48fdc240a456f707d71dedfe9d9587a978ff38a177c398d5627ffa
7
- data.tar.gz: b74c22160ba51d703705213b12c60d795eb499855fc6179a8b2c576ff8e32d1cd7bb94747a7e3a6a5bd957ff527e34964ca01eb47dbfdc078f16519272dfb6a4
6
+ metadata.gz: 127d2b647b57bbf530f3def61fefd302f763ec0ead035dc0f7a3d53cb6d6646948a994a75c5b6f22533e815e35a1a27a1d1f6cb0b85f2eedb86e8985971bbc87
7
+ data.tar.gz: 9709363be3b119354890d3d1de8a16bd8a020faf3e58692022e50de1ba25dcd4af6c49f1962e03cd8e8b82f35334140efa61cd7ff9f3f9835b39c5901b3e904b
@@ -1,3 +1,50 @@
1
+ # 0.7.13
2
+
3
+ Add option to pass a project's environment:
4
+
5
+ ```ruby
6
+ require "dato"
7
+ client = Dato::Site::Client.new("YOUR-API-KEY", environment: 'sandbox-foobar')
8
+ ```
9
+
10
+ # 0.7.12
11
+
12
+ Introduces `Dato::Utils::BuildModularBlock` class to help creating modular blocks.
13
+
14
+ An example usage can be:
15
+
16
+ ```ruby
17
+ description = [
18
+ Dato::Utils::BuildModularBlock.build(
19
+ item_type: "1235",
20
+ name: "Best dog in the world",
21
+ year: "2020",
22
+ picture: picture
23
+ )
24
+ ]
25
+
26
+ record = client.items.create(
27
+ item_type: "1234", # model ID
28
+ name: "Gigio",
29
+ description: description
30
+ )
31
+ ```
32
+
33
+ Find more info [on the documentation](https://www.datocms.com/docs/content-management-api/resources/item/create).
34
+
35
+ # 0.7.11 (not released)
36
+
37
+ * Updated specs cassettes after `appeareance -> appearance` typo fix
38
+ * Some style changes
39
+
40
+ # 0.7.10
41
+
42
+ * Fixed SEO title retrieval. Now it fallbacks to default SEO title is item title is blank
43
+
44
+ # 0.7.9
45
+
46
+ * Added new attributes to uploads
47
+
1
48
  # 0.7.0
2
49
 
3
50
  * Real-time events are now much more granular and the gem avoids downloading all the content every time a change occurs
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Cantiere Creativo SRL
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -8,6 +8,7 @@ require 'dato/local/site'
8
8
  require 'dato/cli'
9
9
  require 'dato/utils/seo_tags_builder'
10
10
  require 'dato/utils/favicon_tags_builder'
11
+ require 'dato/utils/build_modular_block'
11
12
 
12
13
  module Dato
13
14
  end
@@ -20,7 +20,7 @@ module Dato
20
20
  base.extend ClassMethods
21
21
 
22
22
  base.class_eval do
23
- attr_reader :token, :base_url, :schema, :extra_headers
23
+ attr_reader :token, :environment, :base_url, :schema, :extra_headers
24
24
  end
25
25
  end
26
26
 
@@ -29,27 +29,28 @@ module Dato
29
29
  define_method(:initialize) do |token, options = {}|
30
30
  @token = token
31
31
  @base_url = options[:base_url] || "https://#{subdomain}.datocms.com"
32
+ @environment = options[:environment]
32
33
  @extra_headers = options[:extra_headers] || {}
33
34
  end
34
35
 
36
+ # FOR DEV
37
+ # "http://#{subdomain}.lvh.me:3001/docs/#{subdomain}-hyperschema.json"
35
38
  response = Faraday.get(
36
- # FOR DEV
37
- # "http://#{subdomain}.lvh.me:3001/docs/#{subdomain}-hyperschema.json"
38
39
  "https://#{subdomain}.datocms.com/docs/#{subdomain}-hyperschema.json"
39
40
  )
40
41
 
41
42
  schema = JsonSchema.parse!(JSON.parse(response.body))
42
43
  schema.expand_references!
43
44
 
44
- schema.definitions.each do |type, schema|
45
- is_collection = schema.links.select { |x| x.rel === 'instances' }.any?
45
+ schema.definitions.each do |type, obj|
46
+ is_collection = obj.links.select { |x| x.rel == 'instances' }.any?
46
47
  namespace = is_collection ? type.pluralize : type
47
48
 
48
49
  define_method(namespace) do
49
50
  instance_variable_set(
50
51
  "@#{namespace}",
51
52
  instance_variable_get("@#{namespace}") ||
52
- Dato::Repo.new(self, type, schema)
53
+ Dato::Repo.new(self, type, obj)
53
54
  )
54
55
  end
55
56
  end
@@ -76,16 +77,10 @@ module Dato
76
77
  method, absolute_path, body, params = args
77
78
 
78
79
  response = connection.send(method, absolute_path, body) do |c|
79
- if params
80
- c.params = params
81
- end
80
+ c.params = params if params
82
81
  end
83
82
 
84
- if response.body.is_a?(Hash)
85
- response.body.with_indifferent_access
86
- else
87
- nil
88
- end
83
+ response.body.with_indifferent_access if response.body.is_a?(Hash)
89
84
  rescue Faraday::SSLError => e
90
85
  raise e if ENV['SSL_CERT_FILE'] == Cacert.pem
91
86
 
@@ -101,14 +96,14 @@ module Dato
101
96
  sleep(to_wait + 1)
102
97
  request(*args)
103
98
  elsif e.response[:status] == 422 && batch_data_validation?(e.response)
104
- puts "Validating items, waiting 1 second and retrying..."
99
+ puts 'Validating items, waiting 1 second and retrying...'
105
100
  sleep(1)
106
101
  request(*args)
107
102
  else
108
103
  error = ApiError.new(e.response)
109
- puts "===="
104
+ puts '===='
110
105
  puts error.message
111
- puts "===="
106
+ puts '===='
112
107
  raise error
113
108
  end
114
109
  end
@@ -123,12 +118,12 @@ module Dato
123
118
  end
124
119
 
125
120
  return false unless body
126
- return false unless body["data"]
121
+ return false unless body['data']
127
122
 
128
- body["data"].any? do |e|
129
- e["attributes"]["code"] == "BATCH_DATA_VALIDATION_IN_PROGRESS"
123
+ body['data'].any? do |e|
124
+ e['attributes']['code'] == 'BATCH_DATA_VALIDATION_IN_PROGRESS'
130
125
  end
131
- rescue
126
+ rescue StandardError
132
127
  false
133
128
  end
134
129
 
@@ -141,9 +136,13 @@ module Dato
141
136
  'X-Api-Version' => '3'
142
137
  }
143
138
 
139
+ if environment
140
+ default_headers.merge!('X-Environment' => environment)
141
+ end
142
+
144
143
  options = {
145
144
  url: base_url,
146
- headers: default_headers.merge(extra_headers),
145
+ headers: default_headers.merge(extra_headers)
147
146
  }
148
147
 
149
148
  @connection ||= Faraday.new(options) do |c|
@@ -11,8 +11,10 @@ module Dato
11
11
  desc 'dump', 'dumps DatoCMS content into local files'
12
12
  option :config, default: 'dato.config.rb'
13
13
  option :token, default: ENV['DATO_API_TOKEN'], required: true
14
+ option :environment, type: :string, required: false
14
15
  option :preview, default: false, type: :boolean
15
16
  option :watch, default: false, type: :boolean
17
+
16
18
  def dump
17
19
  config_file = File.expand_path(options[:config])
18
20
  watch_mode = options[:watch]
@@ -20,6 +22,7 @@ module Dato
20
22
 
21
23
  client = Dato::Site::Client.new(
22
24
  options[:token],
25
+ environment: options[:environment],
23
26
  extra_headers: {
24
27
  'X-Reason' => 'dump',
25
28
  'X-SSG' => Dump::SsgDetector.new(Dir.pwd).detect
@@ -38,6 +38,10 @@ module Dato
38
38
  @imgix_host = imgix_host
39
39
  end
40
40
 
41
+ def id
42
+ @upload.id
43
+ end
44
+
41
45
  def path
42
46
  @upload.path
43
47
  end
@@ -70,19 +74,138 @@ module Dato
70
74
  @upload.copyright
71
75
  end
72
76
 
77
+ def filename
78
+ @upload.filename
79
+ end
80
+
81
+ def basename
82
+ @upload.basename
83
+ end
84
+
73
85
  def alt
74
- default_metadata = @upload.default_field_metadata.deep_stringify_keys.fetch(I18n.locale.to_s, {})
75
- @alt || default_metadata["alt"]
86
+ default_metadata = @upload.default_field_metadata.deep_stringify_keys
87
+ .fetch(I18n.locale.to_s, {})
88
+ @alt || default_metadata['alt']
76
89
  end
77
90
 
78
91
  def title
79
- default_metadata = @upload.default_field_metadata.deep_stringify_keys.fetch(I18n.locale.to_s, {})
80
- @title || default_metadata["title"]
92
+ default_metadata = @upload.default_field_metadata.deep_stringify_keys
93
+ .fetch(I18n.locale.to_s, {})
94
+ @title || default_metadata['title']
81
95
  end
82
96
 
83
97
  def custom_data
84
- default_metadata = @upload.default_field_metadata.deep_stringify_keys.fetch(I18n.locale.to_s, {})
85
- @custom_data.merge(default_metadata.fetch("custom_data", {}))
98
+ default_metadata = @upload.default_field_metadata.deep_stringify_keys
99
+ .fetch(I18n.locale.to_s, {})
100
+ @custom_data.merge(default_metadata.fetch('custom_data', {}))
101
+ end
102
+
103
+ def tags
104
+ @upload.tags
105
+ end
106
+
107
+ def smart_tags
108
+ @upload.smart_tags
109
+ end
110
+
111
+ def is_image
112
+ @upload.is_image
113
+ end
114
+
115
+ def exif_info
116
+ @upload.exif_info
117
+ end
118
+
119
+ def mime_type
120
+ @upload.mime_type
121
+ end
122
+
123
+ def colors
124
+ @upload.colors.map { |color| Color.parse(color, nil) }
125
+ end
126
+
127
+ def blurhash
128
+ @upload.blurhash
129
+ end
130
+
131
+ class VideoAttributes
132
+ def initialize(upload)
133
+ @upload = upload
134
+ end
135
+
136
+ def mux_playback_id
137
+ @upload.mux_playback_id
138
+ end
139
+
140
+ def frame_rate
141
+ @upload.frame_rate
142
+ end
143
+
144
+ def duration
145
+ @upload.duration
146
+ end
147
+
148
+ def streaming_url
149
+ "https://stream.mux.com/#{@upload.mux_playback_id}.m3u8"
150
+ end
151
+
152
+ def thumbnail_url(format = :jpg)
153
+ if format == :gif
154
+ "https://image.mux.com/#{@upload.mux_playback_id}/animated.gif"
155
+ else
156
+ "https://image.mux.com/#{@upload.mux_playback_id}/thumbnail.#{format}"
157
+ end
158
+ end
159
+
160
+ def mp4_url(options = nil)
161
+ @upload.mux_mp4_highest_res or
162
+ return nil
163
+
164
+ if options && options[:exact_res]
165
+ if options[:exact_res] == :low
166
+ raw_mp4_url("low")
167
+ elsif options[:exact_res] == :medium
168
+ if %w[medium high].include?(@upload.mux_mp4_highest_res)
169
+ raw_mp4_url("medium")
170
+ end
171
+ elsif @upload.mux_mp4_highest_res == :high
172
+ raw_mp4_url("high")
173
+ end
174
+ elsif options && options[:res] == :low
175
+ raw_mp4_url("low")
176
+ elsif options && options[:res] == :medium
177
+ if %w[low medium].include?(@upload.mux_mp4_highest_res)
178
+ raw_mp4_url(@upload.mux_mp4_highest_res)
179
+ else
180
+ raw_mp4_url("medium")
181
+ end
182
+ else
183
+ raw_mp4_url(@upload.mux_mp4_highest_res)
184
+ end
185
+ end
186
+
187
+ def to_hash
188
+ {
189
+ mux_playback_id: mux_playback_id,
190
+ frame_rate: frame_rate,
191
+ duration: duration,
192
+ streaming_url: streaming_url,
193
+ thumbnail_url: thumbnail_url,
194
+ mp4_url: mp4_url,
195
+ }
196
+ end
197
+
198
+ private
199
+
200
+ def raw_mp4_url(res)
201
+ "https://stream.mux.com/#{@upload.mux_playback_id}/#{res}.mp4"
202
+ end
203
+ end
204
+
205
+ def video
206
+ if @upload.mux_playback_id
207
+ VideoAttributes.new(@upload)
208
+ end
86
209
  end
87
210
 
88
211
  def file
@@ -99,6 +222,7 @@ module Dato
99
222
 
100
223
  def to_hash(*_args)
101
224
  {
225
+ id: id,
102
226
  format: format,
103
227
  size: size,
104
228
  width: width,
@@ -106,7 +230,18 @@ module Dato
106
230
  alt: alt,
107
231
  title: title,
108
232
  custom_data: custom_data,
109
- url: url
233
+ url: url,
234
+ copyright: copyright,
235
+ tags: tags,
236
+ smart_tags: smart_tags,
237
+ filename: filename,
238
+ basename: basename,
239
+ is_image: is_image,
240
+ exif_info: exif_info,
241
+ mime_type: mime_type,
242
+ colors: colors.map(&:to_hash),
243
+ blurhash: blurhash,
244
+ video: video && video.to_hash
110
245
  }
111
246
  end
112
247
  end
@@ -43,7 +43,13 @@ module Dato
43
43
 
44
44
  return if pusher && pusher.connected
45
45
 
46
- pusher.subscribe("private-site-#{site_id}")
46
+ channel_name = if client.environment
47
+ "private-site-#{site_id}-environment-#{environment}"
48
+ else
49
+ "private-site-#{site_id}"
50
+ end
51
+
52
+ pusher.subscribe(channel_name)
47
53
 
48
54
  bind_on_site_upsert(&block)
49
55
  bind_on_item_destroy(&block)
@@ -66,7 +72,8 @@ module Dato
66
72
  bind_on("site:upsert", block) do |data|
67
73
  threads = [
68
74
  Thread.new { Thread.current[:output] = site },
69
- Thread.new { Thread.current[:output] = all_items }
75
+ Thread.new { Thread.current[:output] = all_items },
76
+ Thread.new { Thread.current[:output] = all_uploads }
70
77
  ]
71
78
 
72
79
  results = threads.map do |t|
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'dato/api_client'
4
4
  require 'dato/upload/file'
5
- require 'dato/upload/image'
5
+ require 'dato/upload/create_upload_path'
6
6
 
7
7
  module Dato
8
8
  module Site
@@ -11,13 +11,18 @@ module Dato
11
11
 
12
12
  json_schema 'site-api'
13
13
 
14
- def upload_file(path_or_url)
15
- file = Upload::File.new(self, path_or_url)
14
+ def create_upload_path(path_or_url)
15
+ file = Upload::CreateUploadPath.new(self, path_or_url)
16
+ file.upload_path
17
+ end
18
+
19
+ def upload_file(path_or_url, upload_attributes = {}, field_attributes = {})
20
+ file = Upload::File.new(self, path_or_url, upload_attributes, field_attributes)
16
21
  file.upload
17
22
  end
18
23
 
19
- def upload_image(path_or_url)
20
- file = Upload::Image.new(self, path_or_url)
24
+ def upload_image(path_or_url, upload_attributes = {}, field_attributes = {})
25
+ file = Upload::File.new(self, path_or_url, upload_attributes, field_attributes)
21
26
  file.upload
22
27
  end
23
28
 
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mime/types'
4
+ require 'tempfile'
5
+ require 'addressable'
6
+ require 'net/http'
7
+
8
+ module Dato
9
+ module Upload
10
+ class CreateUploadPath
11
+ attr_reader :client, :source
12
+
13
+ def initialize(client, source)
14
+ @client = client
15
+ @source = source
16
+ end
17
+
18
+ def file
19
+ @file ||= if http_source?
20
+ uri = Addressable::URI.parse(source)
21
+ ext = ::File.extname(uri.path).downcase
22
+ tempfile = Tempfile.new(['file', ext])
23
+ tempfile.binmode
24
+ tempfile.write(download_file(source))
25
+ tempfile.rewind
26
+ tempfile
27
+ else
28
+ ::File.new(::File.expand_path(source))
29
+ end
30
+ end
31
+
32
+ def http_source?
33
+ uri = Addressable::URI.parse(source)
34
+ uri.scheme == 'http' || uri.scheme == 'https'
35
+ rescue Addressable::URI::InvalidURIError
36
+ false
37
+ end
38
+
39
+ def filename
40
+ if http_source?
41
+ ::File.basename(source)
42
+ else
43
+ ::File.basename(file.path)
44
+ end
45
+ end
46
+
47
+ def upload_path
48
+ upload_request = client.upload_request.create(filename: filename)
49
+ uri = URI.parse(upload_request[:url])
50
+
51
+ mime_type = MIME::Types.of(filename).first
52
+
53
+ request = Net::HTTP::Put.new(uri)
54
+ if mime_type
55
+ request.add_field("Content-Type", mime_type.to_s)
56
+ end
57
+ request.body = file.read
58
+
59
+ http = Net::HTTP.new(uri.host, uri.port)
60
+ http.use_ssl = true
61
+
62
+ http.request(request)
63
+
64
+ upload_request[:id]
65
+ end
66
+
67
+ def download_file(url)
68
+ connection = Faraday.new do |c|
69
+ c.response :raise_error
70
+ c.use FaradayMiddleware::FollowRedirects
71
+ c.adapter :net_http
72
+ end
73
+ connection.get(url).body
74
+ rescue Faraday::Error => e
75
+ puts "Error during uploading #{url}"
76
+ raise e
77
+ end
78
+ end
79
+ end
80
+ end
81
+
@@ -1,88 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'mime/types'
4
- require 'tempfile'
5
- require 'addressable'
6
- require 'net/http'
3
+ require 'dato/upload/create_upload_path'
7
4
 
8
5
  module Dato
9
6
  module Upload
10
7
  class File
11
- IMAGE_FORMATS = %w[png jpg jpeg gif].freeze
8
+ attr_reader :client, :source, :upload_attributes, :field_attributes
12
9
 
13
- attr_reader :client, :source
14
-
15
- def initialize(client, source)
10
+ def initialize(client, source, upload_attributes = {}, field_attributes = {})
16
11
  @client = client
17
12
  @source = source
18
- end
19
-
20
- def file
21
- @file ||= if http_source?
22
- uri = Addressable::URI.parse(source)
23
- ext = ::File.extname(uri.path).downcase
24
- tempfile = Tempfile.new(['file', ext])
25
- tempfile.binmode
26
- tempfile.write(download_file(source))
27
- tempfile.rewind
28
- tempfile
29
- else
30
- ::File.new(::File.expand_path(source))
31
- end
32
- end
33
-
34
- def http_source?
35
- uri = Addressable::URI.parse(source)
36
- uri.scheme == 'http' || uri.scheme == 'https'
37
- rescue Addressable::URI::InvalidURIError
38
- false
39
- end
40
-
41
- def filename
42
- if http_source?
43
- ::File.basename(source)
44
- else
45
- ::File.basename(file.path)
46
- end
13
+ @upload_attributes = upload_attributes
14
+ @field_attributes = field_attributes
47
15
  end
48
16
 
49
17
  def upload
50
- upload_request = client.upload_request.create(filename: filename)
51
- uri = URI.parse(upload_request[:url])
18
+ upload_path = CreateUploadPath.new(client, source).upload_path
52
19
 
53
- mime_type = MIME::Types.of(filename).first
54
-
55
- request = Net::HTTP::Put.new(uri)
56
- if mime_type
57
- request.add_field("Content-Type", mime_type.to_s)
58
- end
59
- request.body = file.read
60
-
61
- http = Net::HTTP.new(uri.host, uri.port)
62
- http.use_ssl = true
63
-
64
- http.request(request)
65
-
66
- upload = client.uploads.create(path: upload_request[:id])
20
+ upload = client.uploads.create(
21
+ upload_attributes.merge(path: upload_path)
22
+ )
67
23
 
68
24
  {
69
- upload_id: upload['id'],
70
25
  alt: nil,
71
26
  title: nil,
72
27
  custom_data: {},
73
- }
74
- end
75
-
76
- def download_file(url)
77
- connection = Faraday.new do |c|
78
- c.response :raise_error
79
- c.use FaradayMiddleware::FollowRedirects
80
- c.adapter :net_http
81
- end
82
- connection.get(url).body
83
- rescue Faraday::Error => e
84
- puts "Error during uploading #{url}"
85
- raise e
28
+ }.merge(field_attributes).merge(upload_id: upload['id'])
86
29
  end
87
30
  end
88
31
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dato/json_api_serializer'
4
+
5
+ module Dato
6
+ module Utils
7
+ module BuildModularBlock
8
+ def self.build(unserialized_body)
9
+ json_api_serializer = JsonApiSerializer.new('item', nil)
10
+ attributes = json_api_serializer.serialized_attributes(unserialized_body)
11
+
12
+ payload = {
13
+ type: 'item',
14
+ attributes: attributes,
15
+ relationships: {
16
+ item_type: {
17
+ data: {
18
+ id: unserialized_body[:item_type],
19
+ type: 'item_type',
20
+ },
21
+ },
22
+ },
23
+ }
24
+
25
+ payload[:id] = unserialized_body[:id] if unserialized_body[:id]
26
+
27
+ payload
28
+ end
29
+ end
30
+ end
31
+ end
@@ -28,7 +28,7 @@ module Dato
28
28
  fallback_seo_value = fallback_seo &&
29
29
  fallback_seo.send(attribute)
30
30
 
31
- item_seo_value || alternative || fallback_seo_value
31
+ item_seo_value.presence || alternative.presence || fallback_seo_value
32
32
  end
33
33
 
34
34
  def tag(tag_name, attributes)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dato
4
- VERSION = '0.7.6'
4
+ VERSION = '0.7.13'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.7.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-09 00:00:00.000000000 Z
11
+ date: 2020-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -362,6 +362,7 @@ files:
362
362
  - CHANGELOG.md
363
363
  - CODE_OF_CONDUCT.md
364
364
  - Gemfile
365
+ - LICENSE
365
366
  - LICENSE.txt
366
367
  - README.md
367
368
  - Rakefile
@@ -425,8 +426,10 @@ files:
425
426
  - lib/dato/paginator.rb
426
427
  - lib/dato/repo.rb
427
428
  - lib/dato/site/client.rb
429
+ - lib/dato/upload/create_upload_path.rb
428
430
  - lib/dato/upload/file.rb
429
431
  - lib/dato/upload/image.rb
432
+ - lib/dato/utils/build_modular_block.rb
430
433
  - lib/dato/utils/favicon_tags_builder.rb
431
434
  - lib/dato/utils/locale_value.rb
432
435
  - lib/dato/utils/meta_tags/article_modified_time.rb