nylas 3.1.1 → 3.2.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
  SHA1:
3
- metadata.gz: 41c8c438902de18f4e0c5e1ddc74ef7c9d18c581
4
- data.tar.gz: fae20e1e60b2e51e2d0d0e2708c5a4c8baaa9d0c
3
+ metadata.gz: 9418683f9825515764e97bf23b26d8221583c9ca
4
+ data.tar.gz: 0b6b65e34c35da57205f4b58de3f2e27ded1ae36
5
5
  SHA512:
6
- metadata.gz: b6fabb5ee2f0ea1ae049c7a8787d37b917d9d7562998cbe993239f04abde6a2debce83d0bf9780bcf429d6494b0325a2934da6f82d66627d1b1e1886b6c25939
7
- data.tar.gz: 27b9f41b9aad72e169b805cc37f8b873f764813e4922ff6b8ac3a97abaa350bf6b582494adf016079b3719090f6ec1ce730e5f81f56876e13554c17db6a5beee
6
+ metadata.gz: 75d304cd89b172f67956a4b942ded7fa25c40cb6b330fa3e7123a5daf3ae1e8c132217fd236925db6898f3870c0fc41a0b611db8dfc013433708525cdeeb7954
7
+ data.tar.gz: 97d3c77893776e5d6d8aa6b5590179db2a97e50300d2b1488d7e0f03b59f9e2b001203ed925287ce64252e133440a8d043e567a32665225611468f6559a1acdb
@@ -268,32 +268,30 @@ module Nylas
268
268
  "message" => Nylas::ExpandedMessage,
269
269
  }
270
270
 
271
- def _build_exclude_types(exclude_types)
272
- exclude_string = "&exclude_types="
271
+ def _build_types_filter_string(filter, types)
272
+ return "" if types.empty?
273
+ query_string = "&#{filter}_types="
273
274
 
274
- exclude_types.each do |value|
275
+ types.each do |value|
275
276
  count = 0
276
277
  if OBJECTS_TABLE.has_value?(value)
277
278
  param_name = OBJECTS_TABLE.key(value)
278
- exclude_string += "#{param_name},"
279
+ query_string += "#{param_name},"
279
280
  end
280
281
  end
281
282
 
282
- exclude_string = exclude_string[0..-2]
283
+ query_string = query_string[0..-2]
283
284
  end
284
285
 
285
- def deltas(cursor, exclude_types=[], expanded_view=false)
286
- return enum_for(:deltas, cursor, exclude_types, expanded_view) unless block_given?
286
+ def deltas(cursor, exclude_types=[], expanded_view=false, include_types=[])
287
+ return enum_for(:deltas, cursor, exclude_types, expanded_view, include_types) unless block_given?
287
288
 
288
- exclude_string = ""
289
-
290
- if exclude_types.any?
291
- exclude_string = _build_exclude_types(exclude_types)
292
- end
289
+ exclude_string = _build_types_filter_string(:exclude, exclude_types)
290
+ include_string = _build_types_filter_string(:include, include_types)
293
291
 
294
292
  # loop and yield deltas until we've come to the end.
295
293
  loop do
296
- path = self.url_for_path("/delta?exclude_folders=false&cursor=#{cursor}#{exclude_string}")
294
+ path = self.url_for_path("/delta?exclude_folders=false&cursor=#{cursor}#{exclude_string}#{include_string}")
297
295
  if expanded_view
298
296
  path += '&view=expanded'
299
297
  end
@@ -336,17 +334,14 @@ module Nylas
336
334
  end
337
335
  end
338
336
 
339
- def delta_stream(cursor, exclude_types=[], timeout=0, expanded_view=false)
337
+ def delta_stream(cursor, exclude_types=[], timeout=0, expanded_view=false, include_types=[])
340
338
  raise 'Please provide a block for receiving the delta objects' if !block_given?
341
339
 
342
- exclude_string = ""
343
-
344
- if exclude_types.any?
345
- exclude_string = _build_exclude_types(exclude_types)
346
- end
340
+ exclude_string = _build_types_filter_string(:exclude, exclude_types)
341
+ include_string = _build_types_filter_string(:include, include_types)
347
342
 
348
343
  # loop and yield deltas indefinitely.
349
- path = self.url_for_path("/delta/streaming?exclude_folders=false&cursor=#{cursor}#{exclude_string}")
344
+ path = self.url_for_path("/delta/streaming?exclude_folders=false&cursor=#{cursor}#{exclude_string}#{include_string}")
350
345
  if expanded_view
351
346
  path += '&view=expanded'
352
347
  end
@@ -15,16 +15,10 @@ module Nylas
15
15
  def each
16
16
  return enum_for(:each) unless block_given?
17
17
 
18
- offset = 0
19
- chunk_size = 100
20
- finished = false
21
- while (!finished) do
22
- results = get_model_collection(offset, chunk_size)
23
- results.each { |item|
18
+ get_model_collection do |items|
19
+ items.each do |item|
24
20
  yield item
25
- }
26
- offset += results.length
27
- finished = results.length < chunk_size
21
+ end
28
22
  end
29
23
  end
30
24
 
@@ -60,21 +54,8 @@ module Nylas
60
54
  end
61
55
 
62
56
  def range(offset = 0, limit = 100)
63
- accumulated = []
64
- finished = false
65
- chunk_size = 100
66
-
67
- if limit < chunk_size
68
- chunk_size = limit
69
- end
70
-
71
- while (!finished && accumulated.length < limit) do
72
- results = get_model_collection(offset + accumulated.length, chunk_size)
73
- accumulated = accumulated.concat(results)
74
57
 
75
- # we're done if we have more than 'limit' items, or if we asked for 50 and got less than 50...
76
- finished = accumulated.length >= limit || results.length == 0 || (results.length % chunk_size != 0)
77
- end
58
+ accumulated = get_model_collection(offset, limit)
78
59
 
79
60
  accumulated = accumulated[0..limit] if limit < Float::INFINITY
80
61
  accumulated
@@ -136,21 +117,38 @@ module Nylas
136
117
  model
137
118
  end
138
119
 
139
- def get_model_collection(offset = 0, limit = 100)
120
+ def get_model_collection(offset = nil, limit = nil, pagination_options = { per_page: 100 })
140
121
  filters = @filters.clone
141
- filters[:offset] = offset
142
- filters[:limit] = limit
143
- models = []
122
+ filters[:offset] = offset || filters[:offset] || 0
123
+ filters[:limit] = limit || filters[:limit] || 100
144
124
 
145
- RestClient.get(url, :params => filters){ |response,request,result|
146
- items = Nylas.interpret_response(result, response, {:expected_class => Array})
147
- models = inflate_collection(items)
148
- }
149
- models
125
+ accumulated = []
126
+
127
+ finished = false
128
+
129
+ current_calls_filters = filters.clone
130
+ while (!finished) do
131
+ current_calls_filters[:limit] = pagination_options[:per_page] > filters[:limit] ? filters[:limit] : pagination_options[:per_page]
132
+ RestClient.get(url, :params => current_calls_filters) do |response, request, result|
133
+ items = Nylas.interpret_response(result, response, { :expected_class => Array })
134
+ new_items = inflate_collection(items)
135
+ yield new_items if block_given?
136
+ accumulated = accumulated.concat(new_items)
137
+ finished = no_more_pages?(accumulated, items, filters, pagination_options)
138
+ end
139
+
140
+ current_calls_filters[:offset] += pagination_options[:per_page]
141
+ end
142
+
143
+ accumulated
150
144
  end
151
145
 
146
+ def no_more_pages?(accumulated, items, filters, pagination_options)
147
+ accumulated.length >= filters[:limit] || items.length < pagination_options[:per_page]
148
+ end
152
149
  end
153
150
 
151
+
154
152
  # a ManagementModelCollection is similar to a RestfulModelCollection except
155
153
  # it's used by models under the /a/<app_id> namespace (mostly account status
156
154
  # and billing methods).
@@ -1,3 +1,3 @@
1
1
  module Nylas
2
- VERSION = "3.1.1"
2
+ VERSION = "3.2.0"
3
3
  end
metadata CHANGED
@@ -1,72 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nylas
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
- - Ben Gotow
8
- - Karim Hamidou
9
- - Jennie Lees
10
- - Michael Pfister
7
+ - Nylas, Inc.
11
8
  autorequire:
12
9
  bindir: bin
13
10
  cert_chain: []
14
- date: 2017-07-08 00:00:00.000000000 Z
11
+ date: 2017-11-17 00:00:00.000000000 Z
15
12
  dependencies:
16
13
  - !ruby/object:Gem::Dependency
17
14
  name: rest-client
18
15
  requirement: !ruby/object:Gem::Requirement
19
16
  requirements:
20
- - - "~>"
17
+ - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: '1.6'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.6'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: yajl-ruby
32
29
  requirement: !ruby/object:Gem::Requirement
33
30
  requirements:
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 1.2.1
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
33
  version: '1.2'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.2.1
40
37
  type: :runtime
41
38
  prerelease: false
42
39
  version_requirements: !ruby/object:Gem::Requirement
43
40
  requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 1.2.1
47
41
  - - "~>"
48
42
  - !ruby/object:Gem::Version
49
43
  version: '1.2'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.2.1
50
47
  - !ruby/object:Gem::Dependency
51
48
  name: em-http-request
52
49
  requirement: !ruby/object:Gem::Requirement
53
50
  requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 1.1.3
57
51
  - - "~>"
58
52
  - !ruby/object:Gem::Version
59
53
  version: '1.1'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.1.3
60
57
  type: :runtime
61
58
  prerelease: false
62
59
  version_requirements: !ruby/object:Gem::Requirement
63
60
  requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: 1.1.3
67
61
  - - "~>"
68
62
  - !ruby/object:Gem::Version
69
63
  version: '1.1'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.1.3
70
67
  - !ruby/object:Gem::Dependency
71
68
  name: rspec
72
69
  requirement: !ruby/object:Gem::Requirement
@@ -74,9 +71,6 @@ dependencies:
74
71
  - - ">="
75
72
  - !ruby/object:Gem::Version
76
73
  version: 3.5.0
77
- - - "~>"
78
- - !ruby/object:Gem::Version
79
- version: '3.5'
80
74
  type: :development
81
75
  prerelease: false
82
76
  version_requirements: !ruby/object:Gem::Requirement
@@ -84,9 +78,6 @@ dependencies:
84
78
  - - ">="
85
79
  - !ruby/object:Gem::Version
86
80
  version: 3.5.0
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.5'
90
81
  - !ruby/object:Gem::Dependency
91
82
  name: shoulda
92
83
  requirement: !ruby/object:Gem::Requirement
@@ -94,9 +85,6 @@ dependencies:
94
85
  - - ">="
95
86
  - !ruby/object:Gem::Version
96
87
  version: 3.4.0
97
- - - "~>"
98
- - !ruby/object:Gem::Version
99
- version: '3.5'
100
88
  type: :development
101
89
  prerelease: false
102
90
  version_requirements: !ruby/object:Gem::Requirement
@@ -104,21 +92,18 @@ dependencies:
104
92
  - - ">="
105
93
  - !ruby/object:Gem::Version
106
94
  version: 3.4.0
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '3.5'
110
95
  - !ruby/object:Gem::Dependency
111
96
  name: rdoc
112
97
  requirement: !ruby/object:Gem::Requirement
113
98
  requirements:
114
- - - "~>"
99
+ - - ">="
115
100
  - !ruby/object:Gem::Version
116
101
  version: '3.12'
117
102
  type: :development
118
103
  prerelease: false
119
104
  version_requirements: !ruby/object:Gem::Requirement
120
105
  requirements:
121
- - - "~>"
106
+ - - ">="
122
107
  - !ruby/object:Gem::Version
123
108
  version: '3.12'
124
109
  - !ruby/object:Gem::Dependency
@@ -128,9 +113,6 @@ dependencies:
128
113
  - - ">="
129
114
  - !ruby/object:Gem::Version
130
115
  version: 1.3.5
131
- - - "~>"
132
- - !ruby/object:Gem::Version
133
- version: '1.3'
134
116
  type: :development
135
117
  prerelease: false
136
118
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,9 +120,6 @@ dependencies:
138
120
  - - ">="
139
121
  - !ruby/object:Gem::Version
140
122
  version: 1.3.5
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: '1.3'
144
123
  - !ruby/object:Gem::Dependency
145
124
  name: jeweler
146
125
  requirement: !ruby/object:Gem::Requirement
@@ -148,9 +127,6 @@ dependencies:
148
127
  - - ">="
149
128
  - !ruby/object:Gem::Version
150
129
  version: 2.1.2
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '2.1'
154
130
  type: :development
155
131
  prerelease: false
156
132
  version_requirements: !ruby/object:Gem::Requirement
@@ -158,49 +134,46 @@ dependencies:
158
134
  - - ">="
159
135
  - !ruby/object:Gem::Version
160
136
  version: 2.1.2
161
- - - "~>"
162
- - !ruby/object:Gem::Version
163
- version: '2.1'
164
137
  - !ruby/object:Gem::Dependency
165
138
  name: pry
166
139
  requirement: !ruby/object:Gem::Requirement
167
140
  requirements:
168
- - - "~>"
141
+ - - ">="
169
142
  - !ruby/object:Gem::Version
170
143
  version: 0.10.4
171
144
  type: :development
172
145
  prerelease: false
173
146
  version_requirements: !ruby/object:Gem::Requirement
174
147
  requirements:
175
- - - "~>"
148
+ - - ">="
176
149
  - !ruby/object:Gem::Version
177
150
  version: 0.10.4
178
151
  - !ruby/object:Gem::Dependency
179
152
  name: pry-nav
180
153
  requirement: !ruby/object:Gem::Requirement
181
154
  requirements:
182
- - - "~>"
155
+ - - ">="
183
156
  - !ruby/object:Gem::Version
184
157
  version: 0.2.4
185
158
  type: :development
186
159
  prerelease: false
187
160
  version_requirements: !ruby/object:Gem::Requirement
188
161
  requirements:
189
- - - "~>"
162
+ - - ">="
190
163
  - !ruby/object:Gem::Version
191
164
  version: 0.2.4
192
165
  - !ruby/object:Gem::Dependency
193
166
  name: pry-stack_explorer
194
167
  requirement: !ruby/object:Gem::Requirement
195
168
  requirements:
196
- - - "~>"
169
+ - - ">="
197
170
  - !ruby/object:Gem::Version
198
171
  version: 0.4.9.2
199
172
  type: :development
200
173
  prerelease: false
201
174
  version_requirements: !ruby/object:Gem::Requirement
202
175
  requirements:
203
- - - "~>"
176
+ - - ">="
204
177
  - !ruby/object:Gem::Version
205
178
  version: 0.4.9.2
206
179
  - !ruby/object:Gem::Dependency
@@ -210,9 +183,6 @@ dependencies:
210
183
  - - ">="
211
184
  - !ruby/object:Gem::Version
212
185
  version: 2.1.0
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '2.1'
216
186
  type: :development
217
187
  prerelease: false
218
188
  version_requirements: !ruby/object:Gem::Requirement
@@ -220,9 +190,6 @@ dependencies:
220
190
  - - ">="
221
191
  - !ruby/object:Gem::Version
222
192
  version: 2.1.0
223
- - - "~>"
224
- - !ruby/object:Gem::Version
225
- version: '2.1'
226
193
  - !ruby/object:Gem::Dependency
227
194
  name: sinatra
228
195
  requirement: !ruby/object:Gem::Requirement
@@ -230,9 +197,6 @@ dependencies:
230
197
  - - ">="
231
198
  - !ruby/object:Gem::Version
232
199
  version: 1.4.7
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: '1.4'
236
200
  type: :development
237
201
  prerelease: false
238
202
  version_requirements: !ruby/object:Gem::Requirement
@@ -240,9 +204,6 @@ dependencies:
240
204
  - - ">="
241
205
  - !ruby/object:Gem::Version
242
206
  version: 1.4.7
243
- - - "~>"
244
- - !ruby/object:Gem::Version
245
- version: '1.4'
246
207
  description: Gem for interacting with the Nylas API.
247
208
  email: support@nylas.com
248
209
  executables: []
@@ -288,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
288
249
  version: '0'
289
250
  requirements: []
290
251
  rubyforge_project:
291
- rubygems_version: 2.6.12
252
+ rubygems_version: 2.6.13
292
253
  signing_key:
293
254
  specification_version: 4
294
255
  summary: Gem for interacting with the Nylas API