dato 0.3.28 → 0.3.29

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
  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