ruby-lokalise-api 9.0.1 → 9.1.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
2
  SHA256:
3
- metadata.gz: 757096e9bd784d9fbb217a9f5717b22e76fc33789cb7afbc64c0dc40d1e5cae0
4
- data.tar.gz: b1ef581136fae9704cc4acf570b7b29dbe2bcb757229594a98954aefae5229d8
3
+ metadata.gz: 1f104ba9751dfab41967f0a7c766d4cb631a9219ae6a7d6f791b48dd3f68b171
4
+ data.tar.gz: 25416c89c5b24ca8439050a7adec02568eb5a6ed1379b6703957706dd33b4431
5
5
  SHA512:
6
- metadata.gz: 929cae40ddbeffd97804beea0751dfd4e35bb2a5a76643c8da8cd4ce3148e9d0ed457d58a81e4f550ddb4dfb7c009b49bdbd4009392a13e10dfcf0f1c709a8fb
7
- data.tar.gz: 98ea093d57d3ad8126e895da2a6a964d21a83eaed661dadb74c848e947162dea75605f3381c93a10ffe05245bae65629b1813076adddcb4ed6f3931e1a7a1adb
6
+ metadata.gz: 9787b6d1bd962049fa0c1963a348dffa370dc03c23dfc1799688999128d5552f7bad9cc149cd204020ae04e5ff1301ca7a87208eb9cbd40f7fa78dbf2131e32e
7
+ data.tar.gz: 26e9576d4b8f554954f7d1486c8abad86bab2c1cdde67aa7d57c8f8aa71b6eef3a3477e467e081d6b12c618d6239ea9c585e19e16a7d8f5633a91d3e7c7fc60c
@@ -18,7 +18,7 @@ module RubyLokaliseApi
18
18
  def_delegators :collection, :[], :last, :each
19
19
 
20
20
  attr_reader :total_pages, :total_results, :results_per_page, :current_page,
21
- :collection
21
+ :collection, :next_cursor
22
22
 
23
23
  def initialize(response)
24
24
  @self_endpoint = response.endpoint
@@ -32,9 +32,25 @@ module RubyLokaliseApi
32
32
  def next_page
33
33
  return nil if last_page?
34
34
 
35
+ override_params = { page: current_page + 1 }
36
+
35
37
  self.class.new(
36
38
  reinit_endpoint(
37
- override_req_params: { page: current_page + 1 }
39
+ override_req_params: override_params
40
+ ).do_get
41
+ )
42
+ end
43
+
44
+ # Tries to fetch the next cursor for paginated collection
45
+ # Returns a new collection or nil if the next cursor is not available
46
+ def load_next_cursor
47
+ return nil unless next_cursor?
48
+
49
+ override_params = { cursor: next_cursor }
50
+
51
+ self.class.new(
52
+ reinit_endpoint(
53
+ override_req_params: override_params
38
54
  ).do_get
39
55
  )
40
56
  end
@@ -75,6 +91,12 @@ module RubyLokaliseApi
75
91
  !prev_page?
76
92
  end
77
93
 
94
+ # Checks whether the next cursor is available
95
+ # @return [Boolean]
96
+ def next_cursor?
97
+ !next_cursor.nil? && next_cursor != ''
98
+ end
99
+
78
100
  private
79
101
 
80
102
  # This method is utilized to recreate an endpoint for the current collection
@@ -89,14 +111,17 @@ module RubyLokaliseApi
89
111
  instance_variable_set :"@#{attrib}", response.content[attrib]
90
112
  end
91
113
 
92
- headers = response.headers
114
+ extract_common_from_headers(response.headers)
115
+ end
93
116
 
117
+ def extract_common_from_headers(headers)
94
118
  return unless headers.any?
95
119
 
96
- @total_results = headers[:'x-pagination-total-count']
97
- @total_pages = headers[:'x-pagination-page-count']
98
- @results_per_page = headers[:'x-pagination-limit']
99
- @current_page = headers[:'x-pagination-page']
120
+ @total_results = headers[:'x-pagination-total-count'].to_i
121
+ @total_pages = headers[:'x-pagination-page-count'].to_i
122
+ @results_per_page = headers[:'x-pagination-limit'].to_i
123
+ @current_page = headers[:'x-pagination-page'].to_i
124
+ @next_cursor = headers[:'x-pagination-next-cursor']
100
125
  end
101
126
 
102
127
  def produce_collection_from(response)
@@ -5,7 +5,7 @@ module RubyLokaliseApi
5
5
  class Response
6
6
  # Lokalise returns pagination info in special headers
7
7
  PAGINATION_HEADERS = %w[x-pagination-total-count x-pagination-page-count x-pagination-limit
8
- x-pagination-page].freeze
8
+ x-pagination-page x-pagination-next-cursor].freeze
9
9
 
10
10
  attr_reader :content, :endpoint, :headers
11
11
 
@@ -43,8 +43,7 @@ module RubyLokaliseApi
43
43
  raw_headers.
44
44
  to_h.
45
45
  keep_if { |header, _value| pagination_headers.include?(header) }.
46
- transform_keys(&:to_sym).
47
- transform_values(&:to_i)
46
+ transform_keys(&:to_sym)
48
47
  end
49
48
  end
50
49
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyLokaliseApi
4
- VERSION = '9.0.1'
4
+ VERSION = '9.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lokalise-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.1
4
+ version: 9.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Krukowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-13 00:00:00.000000000 Z
11
+ date: 2024-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -397,7 +397,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
397
397
  - !ruby/object:Gem::Version
398
398
  version: '0'
399
399
  requirements: []
400
- rubygems_version: 3.5.6
400
+ rubygems_version: 3.5.10
401
401
  signing_key:
402
402
  specification_version: 4
403
403
  summary: Ruby interface to the Lokalise API