dato 0.7.13 → 0.7.18

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
  SHA256:
3
- metadata.gz: 8911d925c9122207b1b12804415839e1a60c6f42212523f8a9d8590a0ac3b609
4
- data.tar.gz: fcb4dfbed9102fd7c037c635bb0a436ea8c5671964e51e7dcf1c9b7345f25471
3
+ metadata.gz: 43d5a65257051385168de064d1b162bbd0bc5d0ef8523a2079d2f9051dc6b509
4
+ data.tar.gz: 23a9293ed05685fd635de711d3b98084dcb9efc92735d0e379b7640798e8a959
5
5
  SHA512:
6
- metadata.gz: 127d2b647b57bbf530f3def61fefd302f763ec0ead035dc0f7a3d53cb6d6646948a994a75c5b6f22533e815e35a1a27a1d1f6cb0b85f2eedb86e8985971bbc87
7
- data.tar.gz: 9709363be3b119354890d3d1de8a16bd8a020faf3e58692022e50de1ba25dcd4af6c49f1962e03cd8e8b82f35334140efa61cd7ff9f3f9835b39c5901b3e904b
6
+ metadata.gz: cd30a74fe816ab8d4a3683d62ddfecd1ce350f94c94a4f4bbbcaaabaf88a94677f939c8d7cfaf0c9769040d03adc7da829229d5e8762610491ca7d199244e082
7
+ data.tar.gz: 47ebdc307a2c8ae71cd28f0b7ce60c4e2f14802951bbed9b90bd93ff359bd41c240dc3dc4c834febafd32ebe81b4f735f05f9d01a2f7ea245ad9df4324938501
@@ -1,3 +1,7 @@
1
+ # 0.7.16
2
+
3
+ Fixes bug when launching `dato dump --watch` together with the `environment` option.
4
+
1
5
  # 0.7.13
2
6
 
3
7
  Add option to pass a project's environment:
data/Rakefile CHANGED
@@ -3,5 +3,8 @@
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
5
 
6
- RSpec::Core::RakeTask.new(:spec)
6
+ RSpec::Core::RakeTask.new(:spec) do |t|
7
+ t.rspec_opts = "-b"
8
+ end
9
+
7
10
  task default: :spec
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'rubocop'
31
31
  spec.add_development_dependency 'coveralls'
32
32
  spec.add_development_dependency 'pry'
33
+ spec.add_development_dependency 'pry-byebug'
33
34
  spec.add_development_dependency 'front_matter_parser'
34
35
 
35
36
  spec.add_runtime_dependency 'faraday', ['>= 0.9.0']
@@ -37,7 +38,7 @@ Gem::Specification.new do |spec|
37
38
  spec.add_runtime_dependency 'activesupport', ['>= 4.2.7']
38
39
  spec.add_runtime_dependency 'addressable'
39
40
  spec.add_runtime_dependency 'thor'
40
- spec.add_runtime_dependency 'imgix', ['>= 0.3.1']
41
+ spec.add_runtime_dependency 'imgix', ['~> 4']
41
42
  spec.add_runtime_dependency 'toml'
42
43
  spec.add_runtime_dependency 'cacert'
43
44
  spec.add_runtime_dependency 'dotenv'
@@ -33,27 +33,54 @@ module Dato
33
33
  @extra_headers = options[:extra_headers] || {}
34
34
  end
35
35
 
36
- # FOR DEV
37
- # "http://#{subdomain}.lvh.me:3001/docs/#{subdomain}-hyperschema.json"
36
+ define_singleton_method(:subdomain) do
37
+ subdomain
38
+ end
39
+ end
40
+ end
41
+
42
+ def respond_to_missing?(method, include_private = false)
43
+ json_schema.definitions.each do |type, obj|
44
+ is_collection = obj.links.select { |x| x.rel == 'instances' }.any?
45
+ namespace = is_collection ? type.pluralize : type
46
+ if method.to_s === namespace
47
+ return true
48
+ end
49
+ end
50
+
51
+ super
52
+ end
53
+
54
+ def method_missing(method, *args, &block)
55
+ json_schema.definitions.each do |type, obj|
56
+ is_collection = obj.links.select { |x| x.rel == 'instances' }.any?
57
+ namespace = is_collection ? type.pluralize : type
58
+
59
+ if method.to_s === namespace
60
+ instance_variable_set(
61
+ "@#{namespace}",
62
+ instance_variable_get("@#{namespace}") ||
63
+ Dato::Repo.new(self, type, obj)
64
+ )
65
+
66
+ return instance_variable_get("@#{namespace}")
67
+ end
68
+ end
69
+
70
+ super
71
+ end
72
+
73
+ def json_schema
74
+ @json_schema ||= begin
38
75
  response = Faraday.get(
39
- "https://#{subdomain}.datocms.com/docs/#{subdomain}-hyperschema.json"
76
+ # "http://#{subdomain}.lvh.me:3001/docs/#{subdomain}-hyperschema.json"
77
+ "#{base_url}/docs/#{self.class.subdomain}-hyperschema.json"
40
78
  )
41
79
 
42
80
  schema = JsonSchema.parse!(JSON.parse(response.body))
43
81
  schema.expand_references!
44
82
 
45
- schema.definitions.each do |type, obj|
46
- is_collection = obj.links.select { |x| x.rel == 'instances' }.any?
47
- namespace = is_collection ? type.pluralize : type
48
-
49
- define_method(namespace) do
50
- instance_variable_set(
51
- "@#{namespace}",
52
- instance_variable_get("@#{namespace}") ||
53
- Dato::Repo.new(self, type, obj)
54
- )
55
- end
56
- end
83
+ schema
57
84
  end
58
85
  end
59
86
 
@@ -100,10 +127,11 @@ module Dato
100
127
  sleep(1)
101
128
  request(*args)
102
129
  else
130
+ # puts body.inspect
131
+ # puts '===='
132
+ # puts error.message
133
+ # puts '===='
103
134
  error = ApiError.new(e.response)
104
- puts '===='
105
- puts error.message
106
- puts '===='
107
135
  raise error
108
136
  end
109
137
  end
@@ -23,8 +23,10 @@ module Dato
23
23
  data[:type] = type
24
24
  data[:attributes] = serialized_attributes(resource)
25
25
 
26
- if relationships.any?
27
- data[:relationships] = serialized_relationships(resource)
26
+ serialized_relationships = serialized_relationships(resource)
27
+
28
+ if serialized_relationships
29
+ data[:relationships] = serialized_relationships
28
30
  end
29
31
 
30
32
  { data: data }
@@ -82,7 +84,7 @@ module Dato
82
84
  end
83
85
  end
84
86
 
85
- result
87
+ result.empty? ? nil : result
86
88
  end
87
89
 
88
90
  def attributes(resource)
@@ -110,7 +112,11 @@ module Dato
110
112
  end
111
113
 
112
114
  def required_relationships
113
- (link_relationships.required || []).map(&:to_sym)
115
+ if link.schema.properties['data'].required.include?("relationships")
116
+ (link_relationships.required || []).map(&:to_sym)
117
+ else
118
+ []
119
+ end
114
120
  end
115
121
 
116
122
  def link_attributes
@@ -18,6 +18,7 @@ module Dato
18
18
  v[:alt],
19
19
  v[:title],
20
20
  v[:custom_data],
21
+ v[:focal_point],
21
22
  repo.site.entity.imgix_host
22
23
  )
23
24
  end
@@ -29,12 +30,14 @@ module Dato
29
30
  alt,
30
31
  title,
31
32
  custom_data,
33
+ focal_point,
32
34
  imgix_host
33
35
  )
34
36
  @upload = upload
35
37
  @alt = alt
36
38
  @title = title
37
39
  @custom_data = custom_data
40
+ @focal_point = focal_point
38
41
  @imgix_host = imgix_host
39
42
  end
40
43
 
@@ -100,6 +103,12 @@ module Dato
100
103
  @custom_data.merge(default_metadata.fetch('custom_data', {}))
101
104
  end
102
105
 
106
+ def focal_point
107
+ default_metadata = @upload.default_field_metadata.deep_stringify_keys
108
+ .fetch(I18n.locale.to_s, {})
109
+ @focal_point || default_metadata['focal_point']
110
+ end
111
+
103
112
  def tags
104
113
  @upload.tags
105
114
  end
@@ -210,14 +219,42 @@ module Dato
210
219
 
211
220
  def file
212
221
  Imgix::Client.new(
213
- host: @imgix_host,
222
+ domain: @imgix_host,
214
223
  secure: true,
215
224
  include_library_param: false
216
225
  ).path(path)
217
226
  end
218
227
 
219
- def url(opts = {})
220
- file.to_url(opts)
228
+ def url(query = {})
229
+ query.deep_stringify_keys!
230
+
231
+ if focal_point &&
232
+ query["fit"] == "crop" &&
233
+ (query["h"] || query["height"]) &&
234
+ (query["w"] || query["width"]) &&
235
+ [nil, "focalpoint"].include?(query["crop"]) &&
236
+ query["fp-x"].nil? &&
237
+ query["fp-y"].nil?
238
+
239
+ query.merge!(
240
+ "crop" => "focalpoint",
241
+ "fp-x" => focal_point[:x],
242
+ "fp-y" => focal_point[:y],
243
+ )
244
+ end
245
+
246
+ file.to_url(query)
247
+ end
248
+
249
+ def lqip_data_url(opts = {})
250
+ @imgix_host != "www.datocms-assets.com" and
251
+ raise "#lqip_data_url can only be used with www.datocms-assets.com domain"
252
+
253
+ response = Faraday.get(file.to_url(opts.merge(lqip: "blurhash")))
254
+
255
+ if response.status == 200
256
+ "data:image/jpeg;base64,#{Base64.strict_encode64(response.body)}"
257
+ end
221
258
  end
222
259
 
223
260
  def to_hash(*_args)
@@ -230,6 +267,7 @@ module Dato
230
267
  alt: alt,
231
268
  title: title,
232
269
  custom_data: custom_data,
270
+ focal_point: focal_point,
233
271
  url: url,
234
272
  copyright: copyright,
235
273
  tags: tags,
@@ -43,7 +43,7 @@ module Dato
43
43
 
44
44
  def file
45
45
  Imgix::Client.new(
46
- host: @imgix_host,
46
+ domain: @imgix_host,
47
47
  secure: true,
48
48
  include_library_param: false
49
49
  ).path(path)
@@ -44,7 +44,7 @@ module Dato
44
44
  return if pusher && pusher.connected
45
45
 
46
46
  channel_name = if client.environment
47
- "private-site-#{site_id}-environment-#{environment}"
47
+ "private-site-#{site_id}-environment-#{client.environment}"
48
48
  else
49
49
  "private-site-#{site_id}"
50
50
  end
@@ -72,7 +72,7 @@ module Dato
72
72
  end
73
73
  connection.get(url).body
74
74
  rescue Faraday::Error => e
75
- puts "Error during uploading #{url}"
75
+ puts "Error during upload of #{url}: #{e.message}"
76
76
  raise e
77
77
  end
78
78
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dato
4
- VERSION = '0.7.13'
4
+ VERSION = '0.7.18'
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.13
4
+ version: 0.7.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-26 00:00:00.000000000 Z
11
+ date: 2020-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: pry-byebug
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: front_matter_parser
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -238,16 +252,16 @@ dependencies:
238
252
  name: imgix
239
253
  requirement: !ruby/object:Gem::Requirement
240
254
  requirements:
241
- - - ">="
255
+ - - "~>"
242
256
  - !ruby/object:Gem::Version
243
- version: 0.3.1
257
+ version: '4'
244
258
  type: :runtime
245
259
  prerelease: false
246
260
  version_requirements: !ruby/object:Gem::Requirement
247
261
  requirements:
248
- - - ">="
262
+ - - "~>"
249
263
  - !ruby/object:Gem::Version
250
- version: 0.3.1
264
+ version: '4'
251
265
  - !ruby/object:Gem::Dependency
252
266
  name: toml
253
267
  requirement: !ruby/object:Gem::Requirement
@@ -450,7 +464,7 @@ homepage: https://github.com/datocms/ruby-datocms-client
450
464
  licenses:
451
465
  - MIT
452
466
  metadata: {}
453
- post_install_message:
467
+ post_install_message:
454
468
  rdoc_options: []
455
469
  require_paths:
456
470
  - lib
@@ -465,9 +479,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
465
479
  - !ruby/object:Gem::Version
466
480
  version: '0'
467
481
  requirements: []
468
- rubyforge_project:
482
+ rubyforge_project:
469
483
  rubygems_version: 2.7.6
470
- signing_key:
484
+ signing_key:
471
485
  specification_version: 4
472
486
  summary: Ruby client for DatoCMS API
473
487
  test_files: []