nylas-streaming 4.0.0.rc1 → 4.0.0.rc2
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 +4 -4
- data/lib/nylas-streaming.rb +61 -62
- metadata +96 -110
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe263b385c3cc76e3f50cd3ba445a52f6134cd3a
|
4
|
+
data.tar.gz: c7a03fa56ce03bb183c2831f2bd0b59fcfeeef33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a5b98b98f964a7e744fee8dc6bf8abe67ab6ee700bc5f4cc149bf88e44f5a33251ab0d76f70aeefad54a13bea2246cb36f5d49b6d6ee3abddd4b3eb1476bae4
|
7
|
+
data.tar.gz: a12b61694914c59c9a22df1e3d1b0e5fcd7038040cb0d7f2b84c27cea0a5528946af4e3d6b648013a57236984b7121a958c59f653f3bc0cef9c3084cc8137ff5
|
data/lib/nylas-streaming.rb
CHANGED
@@ -1,81 +1,80 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "yajl"
|
2
|
+
require "em-http"
|
3
|
+
require "nylas"
|
4
4
|
|
5
5
|
module Nylas
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
# Provides methods to work with the Nylas Streaming Deltas API
|
7
|
+
# @see https://docs.nylas.com/reference#streaming-delta-updates
|
8
|
+
module Streaming
|
9
|
+
# @see Nylas::Streaming::DeltaStream#initialize
|
10
|
+
def self.deltas(**kwargs, &callback)
|
11
|
+
DeltaStream.new(**kwargs).stream(&callback)
|
10
12
|
end
|
11
|
-
end
|
12
13
|
|
13
|
-
|
14
|
-
class
|
15
|
-
|
16
|
-
|
17
|
-
attr_accessor :api, :timeout, :expanded_view, :include_types, :exclude_types, :cursor
|
14
|
+
# A live stream of deltas that stays open until explicitely closed
|
15
|
+
class DeltaStream
|
16
|
+
attr_accessor :cursor, :api, :exclude_types, :include_types, :expanded,
|
17
|
+
:connect_timeout, :inactivity_timeout
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
# @param cursor [String] Cursor to start listening for changes on
|
20
|
+
# @param api [Nylas::API]
|
21
|
+
# @param expanded [Boolean] Expands threads and messages
|
22
|
+
# @param exclude_types [Array<String>] List of Object types *not* to include in the stream
|
23
|
+
# @param include_types [Array<String>] List of Object types to exclusively include in the stream
|
24
|
+
# @param connect_timeout [Integer] How long to wait before timing out on attempted connection
|
25
|
+
# @param inactivity_timeout [Integer] How long to wait before timing out on inactivity
|
26
|
+
# rubocop:disable Metrics/ParameterLists
|
27
|
+
def initialize(cursor:, api:, exclude_types: [], include_types: [], expanded: false, connect_timeout: 0,
|
28
|
+
inactivity_timeout: 0)
|
21
29
|
self.cursor = cursor
|
22
|
-
self.
|
23
|
-
self.
|
24
|
-
self.include_types =
|
25
|
-
self.
|
30
|
+
self.api = api
|
31
|
+
self.exclude_types = exclude_types
|
32
|
+
self.include_types = include_types
|
33
|
+
self.expanded = expanded
|
34
|
+
self.connect_timeout = connect_timeout
|
35
|
+
self.inactivity_timeout = inactivity_timeout
|
26
36
|
end
|
37
|
+
# rubocop:enable Metrics/ParameterLists
|
27
38
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
path = self.url_for_path("/delta/streaming?exclude_folders=false&cursor=#{cursor}#{exclude_string}#{include_string}")
|
36
|
-
if expanded_view
|
37
|
-
path += '&view=expanded'
|
38
|
-
end
|
39
|
-
|
40
|
-
parser = Yajl::Parser.new(:symbolize_keys => false)
|
41
|
-
parser.on_parse_complete = proc do |data|
|
42
|
-
delta = Nylas.interpret_response(OpenStruct.new(:code => '200'), data, {:expected_class => Object, :result_parsed => true})
|
43
|
-
|
44
|
-
if not OBJECTS_TABLE.has_key?(delta['object'])
|
45
|
-
next
|
39
|
+
def stream
|
40
|
+
parser.on_parse_complete = lambda do |data|
|
41
|
+
begin
|
42
|
+
yield(Types.registry[:delta].cast(data.merge(api: api)))
|
43
|
+
rescue Nylas::Error => e
|
44
|
+
Nylas::Logging.logger.error(e)
|
45
|
+
raise e
|
46
46
|
end
|
47
|
+
end
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
cls = EXPANDED_OBJECTS_TABLE[delta['object']]
|
51
|
-
end
|
49
|
+
listener.stream { |chunk| parser << chunk }
|
50
|
+
end
|
52
51
|
|
53
|
-
|
52
|
+
def url
|
53
|
+
"#{api.client.url_for_path('/delta/streaming')}?#{query}"
|
54
|
+
end
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
obj.cursor = delta["cursor"]
|
63
|
-
yield delta["event"], obj
|
64
|
-
end
|
65
|
-
end
|
56
|
+
def query
|
57
|
+
query = ["cursor=#{cursor}"]
|
58
|
+
query << "view=expanded" if expanded
|
59
|
+
query << "include_types=#{include_types.join(',')}" unless include_types.empty?
|
60
|
+
query << "exclude_types=#{exclude_types.join(',')}" unless exclude_types.empty?
|
61
|
+
query.join("&")
|
62
|
+
end
|
66
63
|
|
67
|
-
|
64
|
+
def listener
|
65
|
+
@listener ||= EventMachine::HttpRequest.new(url, connect_timeout: connect_timeout,
|
66
|
+
inactivity_timeout: inactivity_timeout).get
|
67
|
+
end
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
end
|
69
|
+
def http_error_handler(client)
|
70
|
+
raise Nylas::Error, client.error
|
71
|
+
end
|
73
72
|
|
74
|
-
|
75
|
-
|
76
|
-
|
73
|
+
def parser
|
74
|
+
return @parser if @parser
|
75
|
+
@parser = Yajl::Parser.new(symbolize_keys: true)
|
76
|
+
@parser
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
81
|
-
|
metadata
CHANGED
@@ -1,209 +1,197 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nylas-streaming
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nylas, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: jeweler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1
|
34
|
-
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 1.2.1
|
37
|
-
type: :runtime
|
33
|
+
version: '2.1'
|
34
|
+
type: :development
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
38
|
- - "~>"
|
42
39
|
- !ruby/object:Gem::Version
|
43
|
-
version: '1
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 1.2.1
|
40
|
+
version: '2.1'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
42
|
+
name: yard
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
-
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 1.1.3
|
57
|
-
type: :runtime
|
47
|
+
version: 0.9.0
|
48
|
+
type: :development
|
58
49
|
prerelease: false
|
59
50
|
version_requirements: !ruby/object:Gem::Requirement
|
60
51
|
requirements:
|
61
52
|
- - "~>"
|
62
53
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 1.1.3
|
54
|
+
version: 0.9.0
|
67
55
|
- !ruby/object:Gem::Dependency
|
68
|
-
name:
|
56
|
+
name: awesome_print
|
69
57
|
requirement: !ruby/object:Gem::Requirement
|
70
58
|
requirements:
|
71
|
-
- - "
|
59
|
+
- - "~>"
|
72
60
|
- !ruby/object:Gem::Version
|
73
|
-
version: 0
|
61
|
+
version: '1.0'
|
74
62
|
type: :development
|
75
63
|
prerelease: false
|
76
64
|
version_requirements: !ruby/object:Gem::Requirement
|
77
65
|
requirements:
|
78
|
-
- - "
|
66
|
+
- - "~>"
|
79
67
|
- !ruby/object:Gem::Version
|
80
|
-
version: 0
|
68
|
+
version: '1.0'
|
81
69
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
70
|
+
name: rubocop
|
83
71
|
requirement: !ruby/object:Gem::Requirement
|
84
72
|
requirements:
|
85
|
-
- - "
|
73
|
+
- - "~>"
|
86
74
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
75
|
+
version: 0.52.0
|
88
76
|
type: :development
|
89
77
|
prerelease: false
|
90
78
|
version_requirements: !ruby/object:Gem::Requirement
|
91
79
|
requirements:
|
92
|
-
- - "
|
80
|
+
- - "~>"
|
93
81
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
82
|
+
version: 0.52.0
|
95
83
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
84
|
+
name: rubocop-rspec
|
97
85
|
requirement: !ruby/object:Gem::Requirement
|
98
86
|
requirements:
|
99
|
-
- - "
|
87
|
+
- - "~>"
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
89
|
+
version: 1.20.1
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
93
|
requirements:
|
106
|
-
- - "
|
94
|
+
- - "~>"
|
107
95
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
96
|
+
version: 1.20.1
|
109
97
|
- !ruby/object:Gem::Dependency
|
110
|
-
name:
|
98
|
+
name: overcommit
|
111
99
|
requirement: !ruby/object:Gem::Requirement
|
112
100
|
requirements:
|
113
|
-
- - "
|
101
|
+
- - "~>"
|
114
102
|
- !ruby/object:Gem::Version
|
115
|
-
version: 0.
|
103
|
+
version: '0.41'
|
116
104
|
type: :development
|
117
105
|
prerelease: false
|
118
106
|
version_requirements: !ruby/object:Gem::Requirement
|
119
107
|
requirements:
|
120
|
-
- - "
|
108
|
+
- - "~>"
|
121
109
|
- !ruby/object:Gem::Version
|
122
|
-
version: 0.
|
110
|
+
version: '0.41'
|
123
111
|
- !ruby/object:Gem::Dependency
|
124
|
-
name: pry
|
112
|
+
name: pry
|
125
113
|
requirement: !ruby/object:Gem::Requirement
|
126
114
|
requirements:
|
127
|
-
- - "
|
115
|
+
- - "~>"
|
128
116
|
- !ruby/object:Gem::Version
|
129
|
-
version: 0.
|
117
|
+
version: 0.10.4
|
130
118
|
type: :development
|
131
119
|
prerelease: false
|
132
120
|
version_requirements: !ruby/object:Gem::Requirement
|
133
121
|
requirements:
|
134
|
-
- - "
|
122
|
+
- - "~>"
|
135
123
|
- !ruby/object:Gem::Version
|
136
|
-
version: 0.
|
124
|
+
version: 0.10.4
|
137
125
|
- !ruby/object:Gem::Dependency
|
138
|
-
name: pry-
|
126
|
+
name: pry-nav
|
139
127
|
requirement: !ruby/object:Gem::Requirement
|
140
128
|
requirements:
|
141
|
-
- - "
|
129
|
+
- - "~>"
|
142
130
|
- !ruby/object:Gem::Version
|
143
|
-
version: 0.4
|
131
|
+
version: 0.2.4
|
144
132
|
type: :development
|
145
133
|
prerelease: false
|
146
134
|
version_requirements: !ruby/object:Gem::Requirement
|
147
135
|
requirements:
|
148
|
-
- - "
|
136
|
+
- - "~>"
|
149
137
|
- !ruby/object:Gem::Version
|
150
|
-
version: 0.4
|
138
|
+
version: 0.2.4
|
151
139
|
- !ruby/object:Gem::Dependency
|
152
|
-
name:
|
140
|
+
name: pry-stack_explorer
|
153
141
|
requirement: !ruby/object:Gem::Requirement
|
154
142
|
requirements:
|
155
|
-
- - "
|
143
|
+
- - "~>"
|
156
144
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
145
|
+
version: 0.4.9
|
158
146
|
type: :development
|
159
147
|
prerelease: false
|
160
148
|
version_requirements: !ruby/object:Gem::Requirement
|
161
149
|
requirements:
|
162
|
-
- - "
|
150
|
+
- - "~>"
|
163
151
|
- !ruby/object:Gem::Version
|
164
|
-
version:
|
152
|
+
version: 0.4.9
|
165
153
|
- !ruby/object:Gem::Dependency
|
166
|
-
name:
|
154
|
+
name: rspec
|
167
155
|
requirement: !ruby/object:Gem::Requirement
|
168
156
|
requirements:
|
169
|
-
- - "
|
157
|
+
- - "~>"
|
170
158
|
- !ruby/object:Gem::Version
|
171
|
-
version: 3.
|
159
|
+
version: '3.7'
|
172
160
|
type: :development
|
173
161
|
prerelease: false
|
174
162
|
version_requirements: !ruby/object:Gem::Requirement
|
175
163
|
requirements:
|
176
|
-
- - "
|
164
|
+
- - "~>"
|
177
165
|
- !ruby/object:Gem::Version
|
178
|
-
version: 3.
|
166
|
+
version: '3.7'
|
179
167
|
- !ruby/object:Gem::Dependency
|
180
168
|
name: webmock
|
181
169
|
requirement: !ruby/object:Gem::Requirement
|
182
170
|
requirements:
|
183
|
-
- - "
|
171
|
+
- - "~>"
|
184
172
|
- !ruby/object:Gem::Version
|
185
|
-
version:
|
173
|
+
version: '3.0'
|
186
174
|
type: :development
|
187
175
|
prerelease: false
|
188
176
|
version_requirements: !ruby/object:Gem::Requirement
|
189
177
|
requirements:
|
190
|
-
- - "
|
178
|
+
- - "~>"
|
191
179
|
- !ruby/object:Gem::Version
|
192
|
-
version:
|
180
|
+
version: '3.0'
|
193
181
|
- !ruby/object:Gem::Dependency
|
194
|
-
name:
|
182
|
+
name: faker
|
195
183
|
requirement: !ruby/object:Gem::Requirement
|
196
184
|
requirements:
|
197
|
-
- - "
|
185
|
+
- - "~>"
|
198
186
|
- !ruby/object:Gem::Version
|
199
|
-
version: 1.
|
187
|
+
version: '1.8'
|
200
188
|
type: :development
|
201
189
|
prerelease: false
|
202
190
|
version_requirements: !ruby/object:Gem::Requirement
|
203
191
|
requirements:
|
204
|
-
- - "
|
192
|
+
- - "~>"
|
205
193
|
- !ruby/object:Gem::Version
|
206
|
-
version: 1.
|
194
|
+
version: '1.8'
|
207
195
|
- !ruby/object:Gem::Dependency
|
208
196
|
name: informed
|
209
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,83 +207,81 @@ dependencies:
|
|
219
207
|
- !ruby/object:Gem::Version
|
220
208
|
version: '1.0'
|
221
209
|
- !ruby/object:Gem::Dependency
|
222
|
-
name:
|
210
|
+
name: simplecov
|
223
211
|
requirement: !ruby/object:Gem::Requirement
|
224
212
|
requirements:
|
225
213
|
- - "~>"
|
226
214
|
- !ruby/object:Gem::Version
|
227
|
-
version: '
|
215
|
+
version: '0.15'
|
228
216
|
type: :development
|
229
217
|
prerelease: false
|
230
218
|
version_requirements: !ruby/object:Gem::Requirement
|
231
219
|
requirements:
|
232
220
|
- - "~>"
|
233
221
|
- !ruby/object:Gem::Version
|
234
|
-
version: '
|
222
|
+
version: '0.15'
|
235
223
|
- !ruby/object:Gem::Dependency
|
236
|
-
name:
|
224
|
+
name: em-http-request
|
237
225
|
requirement: !ruby/object:Gem::Requirement
|
238
226
|
requirements:
|
239
227
|
- - "~>"
|
240
228
|
- !ruby/object:Gem::Version
|
241
|
-
version: '1.
|
242
|
-
|
243
|
-
prerelease: false
|
244
|
-
version_requirements: !ruby/object:Gem::Requirement
|
245
|
-
requirements:
|
246
|
-
- - "~>"
|
247
|
-
- !ruby/object:Gem::Version
|
248
|
-
version: '1.0'
|
249
|
-
- !ruby/object:Gem::Dependency
|
250
|
-
name: simplecov
|
251
|
-
requirement: !ruby/object:Gem::Requirement
|
252
|
-
requirements:
|
253
|
-
- - "~>"
|
229
|
+
version: '1.1'
|
230
|
+
- - ">="
|
254
231
|
- !ruby/object:Gem::Version
|
255
|
-
version:
|
256
|
-
type: :
|
232
|
+
version: 1.1.3
|
233
|
+
type: :runtime
|
257
234
|
prerelease: false
|
258
235
|
version_requirements: !ruby/object:Gem::Requirement
|
259
236
|
requirements:
|
260
237
|
- - "~>"
|
261
238
|
- !ruby/object:Gem::Version
|
262
|
-
version: '
|
239
|
+
version: '1.1'
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: 1.1.3
|
263
243
|
- !ruby/object:Gem::Dependency
|
264
|
-
name:
|
244
|
+
name: nylas
|
265
245
|
requirement: !ruby/object:Gem::Requirement
|
266
246
|
requirements:
|
267
247
|
- - "~>"
|
268
248
|
- !ruby/object:Gem::Version
|
269
|
-
version: '0
|
270
|
-
type: :
|
249
|
+
version: '4.0'
|
250
|
+
type: :runtime
|
271
251
|
prerelease: false
|
272
252
|
version_requirements: !ruby/object:Gem::Requirement
|
273
253
|
requirements:
|
274
254
|
- - "~>"
|
275
255
|
- !ruby/object:Gem::Version
|
276
|
-
version: '0
|
256
|
+
version: '4.0'
|
277
257
|
- !ruby/object:Gem::Dependency
|
278
|
-
name:
|
258
|
+
name: yajl-ruby
|
279
259
|
requirement: !ruby/object:Gem::Requirement
|
280
260
|
requirements:
|
281
261
|
- - "~>"
|
282
262
|
- !ruby/object:Gem::Version
|
283
|
-
version: '1.
|
284
|
-
|
263
|
+
version: '1.2'
|
264
|
+
- - ">="
|
265
|
+
- !ruby/object:Gem::Version
|
266
|
+
version: 1.2.1
|
267
|
+
type: :runtime
|
285
268
|
prerelease: false
|
286
269
|
version_requirements: !ruby/object:Gem::Requirement
|
287
270
|
requirements:
|
288
271
|
- - "~>"
|
289
272
|
- !ruby/object:Gem::Version
|
290
|
-
version: '1.
|
291
|
-
|
273
|
+
version: '1.2'
|
274
|
+
- - ">="
|
275
|
+
- !ruby/object:Gem::Version
|
276
|
+
version: 1.2.1
|
277
|
+
description: Gem for interacting with the Nylas Deltas Streaming API.
|
292
278
|
email: support@nylas.com
|
293
279
|
executables: []
|
294
280
|
extensions: []
|
295
281
|
extra_rdoc_files: []
|
296
282
|
files:
|
297
283
|
- lib/nylas-streaming.rb
|
298
|
-
homepage:
|
284
|
+
homepage:
|
299
285
|
licenses:
|
300
286
|
- MIT
|
301
287
|
metadata:
|
@@ -311,9 +297,9 @@ require_paths:
|
|
311
297
|
- lib
|
312
298
|
required_ruby_version: !ruby/object:Gem::Requirement
|
313
299
|
requirements:
|
314
|
-
- - "
|
300
|
+
- - "~>"
|
315
301
|
- !ruby/object:Gem::Version
|
316
|
-
version: '
|
302
|
+
version: '2.2'
|
317
303
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
318
304
|
requirements:
|
319
305
|
- - ">"
|
@@ -324,5 +310,5 @@ rubyforge_project:
|
|
324
310
|
rubygems_version: 2.6.13
|
325
311
|
signing_key:
|
326
312
|
specification_version: 4
|
327
|
-
summary: Gem for interacting with the Nylas API
|
313
|
+
summary: Gem for interacting with the Nylas Deltas Streaming API
|
328
314
|
test_files: []
|