dato 0.4.3 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d3f7902f2a827a7ef8fcf30fa3e5cd94dfb40b8b
4
- data.tar.gz: d4dafeb0c1a06a93e142ea001e86cc754ccdef2a
2
+ SHA256:
3
+ metadata.gz: 8d26b49c17a15d3cf199eb8f61d41ff39ca047171c948fe3e9a8c399b333be9f
4
+ data.tar.gz: c106df7971a5a76deb4757f12dec298292d0d4210fa133dde8996fc2bc018f35
5
5
  SHA512:
6
- metadata.gz: fb49453ce559cbed239411696a244d51c3daf99800f94840d4dd7bb13f4656fb955b9d301a48506e739aeff3d918290c23b50be204bc75f91740a6a1aececec9
7
- data.tar.gz: 24f811323e62e5f32e73dc79abbf39263f5dbb9a81bbd1c28ad724f5ff46dbde945c0ac5e8d19c4ebabb72f7f051890ee8e17790b97c1a552f4a20667720e9d1
6
+ metadata.gz: b79aa89dfa3390ed806c67dd1c22b8294b80087c482b68e0b041bf4e0d560dd515e72f87875bb81a9193a039d7420819f1a87eae29565d10d73c4da17d186f92
7
+ data.tar.gz: af030722407d485affdf563b368dd3963cad1c2e34a58f9f04574e32d12989db47122ad61d34e50ec19581ddc4d7e0346a7af0617a01b63eda5c37ed926a7ebd
@@ -1 +1 @@
1
- 2.3.1
1
+ 2.5.0
@@ -5,22 +5,42 @@ module Dato
5
5
  module Local
6
6
  module FieldType
7
7
  class File
8
- attr_reader :path, :format, :size
8
+ attr_reader :path, :format, :size, :width, :height, :title, :alt
9
9
 
10
- def self.parse(value, repo)
11
- value && new(
12
- value[:path],
13
- value[:format],
14
- value[:size],
15
- repo.site.entity.imgix_host
16
- )
10
+ def self.parse(upload_id, repo)
11
+ if upload_id
12
+ upload = repo.entities_repo.find_entity("upload", upload_id)
13
+ new(
14
+ upload.path,
15
+ upload.format,
16
+ upload.size,
17
+ upload.width,
18
+ upload.height,
19
+ upload.alt,
20
+ upload.title,
21
+ repo.site.entity.imgix_host
22
+ )
23
+ end
17
24
  end
18
25
 
19
- def initialize(path, format, size, imgix_host)
26
+ def initialize(
27
+ path,
28
+ format,
29
+ size,
30
+ width,
31
+ height,
32
+ alt,
33
+ title,
34
+ imgix_host
35
+ )
20
36
  @path = path
21
37
  @format = format
22
38
  @size = size
23
39
  @imgix_host = imgix_host
40
+ @width = width
41
+ @height = height
42
+ @alt = alt
43
+ @title = title
24
44
  end
25
45
 
26
46
  def file
@@ -39,6 +59,10 @@ module Dato
39
59
  {
40
60
  format: format,
41
61
  size: size,
62
+ width: width,
63
+ height: height,
64
+ alt: alt,
65
+ title: title,
42
66
  url: url
43
67
  }
44
68
  end
@@ -17,7 +17,7 @@ module Dato
17
17
  end
18
18
 
19
19
  def image
20
- @image && Image.parse(@image, @repo)
20
+ @image && File.parse(@image, @repo)
21
21
  end
22
22
 
23
23
  def to_hash(*args)
@@ -18,7 +18,7 @@ module Dato
18
18
  end
19
19
 
20
20
  def load
21
- @entities_repo = EntitiesRepo.new(site, all_items)
21
+ @entities_repo = EntitiesRepo.new(site, all_items, all_uploads)
22
22
  @items_repo = ItemsRepo.new(@entities_repo)
23
23
  end
24
24
 
@@ -36,6 +36,14 @@ module Dato
36
36
  all_pages: true
37
37
  )
38
38
  end
39
+
40
+ def all_uploads
41
+ client.uploads.all(
42
+ {},
43
+ deserialize_response: false,
44
+ all_pages: true
45
+ )
46
+ end
39
47
  end
40
48
  end
41
49
  end
@@ -23,7 +23,7 @@ module Dato
23
23
  end
24
24
 
25
25
  def favicon
26
- read_attribute(:favicon, FieldType::Image, false)
26
+ read_attribute(:favicon, FieldType::File, false)
27
27
  end
28
28
 
29
29
  def to_s
@@ -94,7 +94,8 @@ module Dato
94
94
  'Accept' => 'application/json',
95
95
  'Content-Type' => 'application/json',
96
96
  'Authorization' => "Bearer #{@token}",
97
- 'User-Agent' => "ruby-client v#{Dato::VERSION}"
97
+ 'User-Agent' => "ruby-client v#{Dato::VERSION}",
98
+ 'X-Api-Version' => "2"
98
99
  )
99
100
  }
100
101
 
@@ -3,10 +3,13 @@ require 'downloadr'
3
3
  require 'tempfile'
4
4
  require 'addressable'
5
5
  require 'net/http'
6
+ require 'fastimage'
6
7
 
7
8
  module Dato
8
9
  module Upload
9
10
  class File
11
+ IMAGE_FORMATS = %w(png jpg jpeg gif)
12
+
10
13
  attr_reader :client, :source
11
14
 
12
15
  def initialize(client, source)
@@ -56,15 +59,33 @@ module Dato
56
59
 
57
60
  http.request(request)
58
61
 
59
- format_resource(upload_request)
62
+ uploads = client.uploads.create(
63
+ format_resource(upload_request)
64
+ )
65
+
66
+ uploads["id"]
60
67
  end
61
68
 
62
69
  def format_resource(upload_request)
63
- {
70
+ extension = ::File.extname(::File.basename(file.path)).delete('.')
71
+
72
+ base_format = {
64
73
  path: upload_request[:id],
65
74
  size: ::File.size(file.path),
66
- format: ::File.extname(::File.basename(file.path)).delete('.')
75
+ format: extension
67
76
  }
77
+
78
+ if IMAGE_FORMATS.include?(extension)
79
+ width, height = FastImage.size(file.path)
80
+
81
+ base_format.merge(
82
+ width: width,
83
+ height: height,
84
+ format: FastImage.type(file.path).to_s
85
+ )
86
+ else
87
+ base_format
88
+ end
68
89
  end
69
90
  end
70
91
  end
@@ -1,19 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  require 'dato/upload/file'
3
- require 'fastimage'
4
3
 
5
4
  module Dato
6
5
  module Upload
7
- class Image < Dato::Upload::File
8
- def format_resource(upload_request)
9
- width, height = FastImage.size(file.path)
10
-
11
- super(upload_request).merge(
12
- width: width,
13
- height: height,
14
- format: FastImage.type(file.path).to_s
15
- )
16
- end
17
- end
6
+ Image = Dato::Upload::File
18
7
  end
19
8
  end
@@ -20,10 +20,11 @@ module Dato
20
20
 
21
21
  def item_image
22
22
  item && item.fields
23
- .select { |field| field.field_type == 'image' }
23
+ .select { |field| field.field_type == 'file' }
24
24
  .map { |field| item.send(field.api_key) }
25
25
  .compact
26
26
  .find do |image|
27
+
27
28
  image.width && image.height &&
28
29
  image.width >= 200 && image.height >= 200
29
30
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Dato
3
- VERSION = '0.4.3'
3
+ VERSION = '0.5.0'
4
4
  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.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-05 00:00:00.000000000 Z
11
+ date: 2018-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -403,7 +403,6 @@ files:
403
403
  - lib/dato/local/field_type/float.rb
404
404
  - lib/dato/local/field_type/gallery.rb
405
405
  - lib/dato/local/field_type/global_seo.rb
406
- - lib/dato/local/field_type/image.rb
407
406
  - lib/dato/local/field_type/integer.rb
408
407
  - lib/dato/local/field_type/json.rb
409
408
  - lib/dato/local/field_type/lat_lon.rb
@@ -474,7 +473,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
474
473
  version: '0'
475
474
  requirements: []
476
475
  rubyforge_project:
477
- rubygems_version: 2.5.1
476
+ rubygems_version: 2.7.6
478
477
  signing_key:
479
478
  specification_version: 4
480
479
  summary: Ruby client for DatoCMS API
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'dato/local/field_type/file'
3
-
4
- module Dato
5
- module Local
6
- module FieldType
7
- class Image < Dato::Local::FieldType::File
8
- attr_reader :width, :height, :title, :alt
9
-
10
- def self.parse(value, repo)
11
- value && new(
12
- value[:path],
13
- value[:format],
14
- value[:size],
15
- value[:width],
16
- value[:height],
17
- value[:alt],
18
- value[:title],
19
- repo.site.entity.imgix_host
20
- )
21
- end
22
-
23
- def initialize(
24
- path,
25
- format,
26
- size,
27
- width,
28
- height,
29
- alt,
30
- title,
31
- imgix_host
32
- )
33
- super(path, format, size, imgix_host)
34
- @width = width
35
- @height = height
36
- @alt = alt
37
- @title = title
38
- end
39
-
40
- def to_hash(*args)
41
- super.merge(
42
- width: width,
43
- height: height,
44
- alt: alt,
45
- title: title
46
- )
47
- end
48
- end
49
- end
50
- end
51
- end