dato 0.3.28 → 0.3.29

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: d302526098db939d94ffa7579ad99155bd13cfa3
4
- data.tar.gz: 29290a0a6f3f6dccbc9a91e7c8dc67beb06f9f3a
3
+ metadata.gz: a1061c027f8e5c25e3c419ea494c95fe1f794181
4
+ data.tar.gz: 59252bf63438b2456a0174e260776fb8447bd53e
5
5
  SHA512:
6
- metadata.gz: 522527bbfa6fbab102087645d7c554d300dd6f55a63053461a229aa6df23fef8fdd80e4b5eda2f6d257da3bdf152f2e6cb1c570b2dacec35781447a51a093e82
7
- data.tar.gz: b3bdcd08808c3203101cdcbac03a05260c6b45133c7d94ed96e0d32fb4b8fe8479b1a591da8aa662ae0a7fb8448a193f0f693f43a62d423c43a8b0b79ebf3b8c
6
+ metadata.gz: 4ff063b70d83e36ac695744531146bc37b0ee36d8d53a223ec23d3fa675e6a286f1d2df5bc15a00c54cdd71228df89167755f5139af1a262105ff922a37ea000
7
+ data.tar.gz: bc13fa98fadc1f254002432318e80f377b635f99f91c38d8c029f006535560c07a288d550e0f5e41caaad9ada82a88fd8883d397f731d643f5399c1a128610e1
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ task :regenerate do
14
14
  BuildClient.new(
15
15
  open('https://site-api.datocms.com/docs/site-api-hyperschema.json').read,
16
16
  'site',
17
- %w(session item user#update)
17
+ %w(session item upload user#update)
18
18
  ).build
19
19
 
20
20
  BuildClient.new(
@@ -31,7 +31,7 @@ module Dato
31
31
  end
32
32
 
33
33
  def all_items
34
- client.items.all({}, false)
34
+ client.items.all({}, deserialize_response: false, all_pages: true)
35
35
  end
36
36
  end
37
37
  end
@@ -0,0 +1,35 @@
1
+ module Dato
2
+ module Site
3
+ class Paginator
4
+ def initialize(client, base_endpoint, filters)
5
+ @client, @base_endpoint, @filters = client, base_endpoint, filters
6
+ end
7
+
8
+ def response
9
+ items_per_page = 500
10
+
11
+ base_response = @client.request(
12
+ :get, @base_endpoint, @filters.dup.merge('page[limit]' => items_per_page)
13
+ )
14
+
15
+ extra_pages = (
16
+ base_response[:meta][:total_count] / items_per_page.to_f
17
+ ).ceil - 1
18
+
19
+ extra_pages.times do |page|
20
+ base_response[:data] += @client.request(
21
+ :get,
22
+ @base_endpoint,
23
+ @filters.dup.merge(
24
+ 'page[offset]' => items_per_page * (page + 1),
25
+ 'page[limit]' => items_per_page
26
+ )
27
+ )[:data]
28
+ end
29
+
30
+ base_response
31
+ end
32
+ end
33
+ end
34
+ end
35
+
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  require 'dato/site/repo/base'
3
+ require 'dato/site/paginator'
3
4
  require 'active_support/core_ext/hash/except'
5
+ require 'active_support/core_ext/hash/keys'
4
6
 
5
7
  module Dato
6
8
  module Site
@@ -37,32 +39,22 @@ module Dato
37
39
  put_request "/items/#{item_id}", body
38
40
  end
39
41
 
40
- def all(filters = {}, deserialize_response = true)
41
- items_per_page = 500
42
+ def all(filters = {}, options = {})
43
+ options.symbolize_keys!
42
44
 
43
- base_response = client.request(
44
- :get, '/items', filters.dup.merge('page[limit]' => items_per_page)
45
- )
46
-
47
- extra_pages = (
48
- base_response[:meta][:total_count] / items_per_page.to_f
49
- ).ceil - 1
45
+ deserialize_response = options.fetch(:deserialize_response, true)
46
+ all_pages = options.fetch(:all_pages, false)
50
47
 
51
- extra_pages.times do |page|
52
- base_response[:data] += client.request(
53
- :get,
54
- '/items',
55
- filters.dup.merge(
56
- 'page[offset]' => items_per_page * (page + 1),
57
- 'page[limit]' => items_per_page
58
- )
59
- )[:data]
48
+ response = if all_pages
49
+ Paginator.new(client, '/items', filters).response
50
+ else
51
+ client.request(:get, '/items', filters)
60
52
  end
61
53
 
62
54
  if deserialize_response
63
- JsonApiDeserializer.new.deserialize(base_response)
55
+ JsonApiDeserializer.new.deserialize(response)
64
56
  else
65
- base_response
57
+ response
66
58
  end
67
59
  end
68
60
 
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  require 'dato/site/repo/base'
3
+ require 'dato/site/paginator'
4
+ require 'active_support/core_ext/hash/except'
5
+ require 'active_support/core_ext/hash/keys'
3
6
 
4
7
  module Dato
5
8
  module Site
@@ -15,8 +18,23 @@ module Dato
15
18
  post_request '/uploads', body
16
19
  end
17
20
 
18
- def all(query)
19
- get_request '/uploads', query
21
+ def all(filters = {}, options = {})
22
+ options.symbolize_keys!
23
+
24
+ deserialize_response = options.fetch(:deserialize_response, true)
25
+ all_pages = options.fetch(:all_pages, false)
26
+
27
+ response = if all_pages
28
+ Paginator.new(client, '/uploads', filters).response
29
+ else
30
+ client.request(:get, '/uploads', filters)
31
+ end
32
+
33
+ if deserialize_response
34
+ JsonApiDeserializer.new.deserialize(response)
35
+ else
36
+ response
37
+ end
20
38
  end
21
39
 
22
40
  def find(upload_id)
data/lib/dato/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Dato
3
- VERSION = '0.3.28'
3
+ VERSION = '0.3.29'
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.3.28
4
+ version: 0.3.29
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-01-19 00:00:00.000000000 Z
11
+ date: 2018-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -422,6 +422,7 @@ files:
422
422
  - lib/dato/local/site.rb
423
423
  - lib/dato/migrate_slugs/runner.rb
424
424
  - lib/dato/site/client.rb
425
+ - lib/dato/site/paginator.rb
425
426
  - lib/dato/site/repo/access_token.rb
426
427
  - lib/dato/site/repo/base.rb
427
428
  - lib/dato/site/repo/deploy_event.rb