nylas 5.12.0 → 5.13.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: 3e5d0a27634342959eaddf47669543e1140fa7651b4e0a62bc438bfd0cfff4d0
4
- data.tar.gz: 18cd209379fc280946c1c5c1d07a5b5b1d430fda3cee0859bc72cc71a7108e60
3
+ metadata.gz: 4c270504996973ab93d5c1cac213a194f776fb27302010be6eee1a41570204ff
4
+ data.tar.gz: 01a2bcc7473080a9fad5c39bd1851487ed1d20f81fab68277a37c6fd5e31c195
5
5
  SHA512:
6
- metadata.gz: a8ad67acdb82c2e08cc988859bef6205677019619c3abaac63d3157b67d57eb491b5562c83ea80f8851749e028c827aa44e34be8d947de07002f89c2ea3e0a90
7
- data.tar.gz: 68511185782d9586bd3530fccd6e3c5e1a8744f6662f5f369040abce1a9c664ec08ae0a2ffeed94c5a086f7fef56369d8cca917e1be85c726a4241cf7b0f19b2
6
+ metadata.gz: '0485d5539c28e6626cef26ee3b34a3f61eab8c0436f6abddb017ead7034b644efac6502f32fc40236446d04fa7562d615c1fcfc732afbeeee852118874281492'
7
+ data.tar.gz: 63229ee0942e29703d6a4a2fd6feafd3f7ce639f13e5fd7387c01c195cd549e6b6cd6a6d931fa2ccf98871c1929b4c3c7cacfe46e1fa3d22ed454c8978f8810f
@@ -6,8 +6,14 @@ module Nylas
6
6
  class Calendar
7
7
  include Model
8
8
  self.resources_path = "/calendars"
9
- allows_operations(creatable: true, listable: true, filterable: true, showable: true, updatable: true,
10
- destroyable: true)
9
+ self.creatable = true
10
+ self.listable = true
11
+ self.showable = true
12
+ self.filterable = true
13
+ self.updatable = true
14
+ self.destroyable = true
15
+ self.id_listable = true
16
+ self.countable = true
11
17
 
12
18
  attribute :id, :string
13
19
  attribute :account_id, :string
@@ -23,6 +29,7 @@ module Nylas
23
29
  attribute :read_only, :boolean
24
30
  attribute :metadata, :hash
25
31
  attribute :job_status_id, :string, read_only: true
32
+ attribute :hex_color, :string, read_only: true
26
33
 
27
34
  def read_only?
28
35
  read_only == true
@@ -17,7 +17,7 @@ module Nylas
17
17
 
18
18
  # Instantiates a new model
19
19
  def new(**attributes)
20
- model.new(attributes.merge(api: api))
20
+ model.new(**attributes.merge(api: api))
21
21
  end
22
22
 
23
23
  def create(**attributes)
@@ -51,7 +51,14 @@ module Nylas
51
51
 
52
52
  # @return [Integer]
53
53
  def count
54
- self.class.new(model: model, api: api, constraints: constraints.merge(view: "count")).execute[:count]
54
+ collection = self.class.new(model: model, api: api, constraints: constraints)
55
+
56
+ if model.countable
57
+ collection.constraints = collection.constraints.merge(view: "count")
58
+ collection.execute[:count]
59
+ else
60
+ collection.find_each.map.count
61
+ end
55
62
  end
56
63
 
57
64
  # @return [Collection<Model>]
@@ -61,7 +68,14 @@ module Nylas
61
68
 
62
69
  # @return [Array<String>]
63
70
  def ids
64
- self.class.new(model: model, api: api, constraints: constraints.merge(view: "ids")).execute
71
+ collection = self.class.new(model: model, api: api, constraints: constraints)
72
+
73
+ if model.id_listable
74
+ collection.constraints = collection.constraints.merge(view: "ids")
75
+ collection.execute
76
+ else
77
+ collection.find_each.map(&:id)
78
+ end
65
79
  end
66
80
 
67
81
  # Iterates over a single page of results based upon current pagination settings
@@ -4,8 +4,12 @@ module Nylas
4
4
  # Structure to represent a the Component Schema.
5
5
  class Component
6
6
  include Model
7
- allows_operations(creatable: true, listable: true, filterable: true, showable: true, updatable: true,
8
- destroyable: true)
7
+ self.creatable = true
8
+ self.listable = true
9
+ self.showable = true
10
+ self.filterable = true
11
+ self.updatable = true
12
+ self.destroyable = true
9
13
  self.auth_method = HttpClient::AuthMethod::BASIC
10
14
 
11
15
  attribute :id, :string, read_only: true
data/lib/nylas/deltas.rb CHANGED
@@ -8,7 +8,7 @@ module Nylas
8
8
  class Deltas
9
9
  include Model
10
10
  self.resources_path = "/delta"
11
- allows_operations(filterable: true)
11
+ self.filterable = true
12
12
  has_n_of_attribute :deltas, :delta
13
13
  attribute :cursor_start, :string
14
14
  attribute :cursor_end, :string
data/lib/nylas/draft.rb CHANGED
@@ -6,7 +6,13 @@ module Nylas
6
6
  class Draft
7
7
  include Model
8
8
  self.resources_path = "/drafts"
9
- allows_operations(creatable: true, showable: true, listable: true, updatable: true, destroyable: true)
9
+ self.creatable = true
10
+ self.listable = true
11
+ self.showable = true
12
+ self.updatable = true
13
+ self.destroyable = true
14
+ self.id_listable = true
15
+ self.countable = true
10
16
 
11
17
  attribute :id, :string
12
18
  attribute :object, :string
data/lib/nylas/event.rb CHANGED
@@ -6,8 +6,14 @@ module Nylas
6
6
  class Event
7
7
  include Model
8
8
  self.resources_path = "/events"
9
- allows_operations(creatable: true, listable: true, filterable: true, showable: true, updatable: true,
10
- destroyable: true)
9
+ self.creatable = true
10
+ self.listable = true
11
+ self.showable = true
12
+ self.filterable = true
13
+ self.updatable = true
14
+ self.destroyable = true
15
+ self.id_listable = true
16
+ self.countable = true
11
17
 
12
18
  attribute :id, :string, read_only: true
13
19
  attribute :object, :string, read_only: true
@@ -37,6 +43,7 @@ module Nylas
37
43
  attribute :reminder_minutes, :string
38
44
  attribute :reminder_method, :string
39
45
  attribute :job_status_id, :string, read_only: true
46
+ attribute :visibility, :string
40
47
 
41
48
  attr_accessor :notify_participants
42
49
 
data/lib/nylas/file.rb CHANGED
@@ -6,7 +6,13 @@ module Nylas
6
6
  class File
7
7
  include Model
8
8
  self.resources_path = "/files"
9
- allows_operations(listable: true, showable: true, filterable: true, creatable: true, destroyable: true)
9
+ self.creatable = true
10
+ self.listable = true
11
+ self.showable = true
12
+ self.filterable = true
13
+ self.destroyable = true
14
+ self.id_listable = true
15
+ self.countable = true
10
16
 
11
17
  attribute :id, :string
12
18
  attribute :account_id, :string
data/lib/nylas/folder.rb CHANGED
@@ -12,6 +12,8 @@ module Nylas
12
12
  self.filterable = false
13
13
  self.updatable = true
14
14
  self.destroyable = true
15
+ self.id_listable = true
16
+ self.countable = true
15
17
 
16
18
  attribute :id, :string, read_only: true
17
19
  attribute :account_id, :string, read_only: true
@@ -6,7 +6,7 @@ module Nylas
6
6
  class JobStatus
7
7
  include Model
8
8
  self.resources_path = "/job-statuses"
9
- allows_operations(listable: true)
9
+ self.listable = true
10
10
 
11
11
  attribute :id, :string, read_only: true
12
12
  attribute :account_id, :string, read_only: true
data/lib/nylas/label.rb CHANGED
@@ -12,6 +12,8 @@ module Nylas
12
12
  self.filterable = false
13
13
  self.updatable = true
14
14
  self.destroyable = true
15
+ self.id_listable = true
16
+ self.countable = true
15
17
 
16
18
  attribute :id, :string
17
19
  attribute :account_id, :string
data/lib/nylas/message.rb CHANGED
@@ -7,7 +7,13 @@ module Nylas
7
7
  include Model
8
8
  self.raw_mime_type = "message/rfc822"
9
9
  self.resources_path = "/messages"
10
- allows_operations(showable: true, listable: true, filterable: true, searchable: true, updatable: true)
10
+ self.listable = true
11
+ self.showable = true
12
+ self.filterable = true
13
+ self.updatable = true
14
+ self.searchable = true
15
+ self.id_listable = true
16
+ self.countable = true
11
17
  UPDATABLE_ATTRIBUTES = %i[label_ids folder_id starred unread metadata].freeze
12
18
 
13
19
  attribute :id, :string
data/lib/nylas/model.rb CHANGED
@@ -20,8 +20,8 @@ module Nylas
20
20
  model.extend(ClassMethods)
21
21
  model.extend(Forwardable)
22
22
  model.def_delegators :model_class, :creatable?, :filterable?, :listable?, :searchable?, :showable?,
23
- :updatable?, :destroyable?
24
- model.allows_operations
23
+ :updatable?, :destroyable?, :id_listable?, :countable?
24
+ model.init_operations
25
25
  end
26
26
 
27
27
  def save
@@ -141,19 +141,19 @@ module Nylas
141
141
  # Allows you to narrow in exactly what kind of model you're working with
142
142
  module ClassMethods
143
143
  attr_accessor :raw_mime_type, :creatable, :showable, :filterable, :searchable, :listable, :updatable,
144
- :destroyable
144
+ :destroyable, :id_listable, :countable
145
145
  attr_writer :resources_path, :auth_method
146
146
 
147
- def allows_operations(creatable: false, showable: false, listable: false, filterable: false,
148
- searchable: false, updatable: false, destroyable: false)
149
-
150
- self.creatable ||= creatable
151
- self.showable ||= showable
152
- self.listable ||= listable
153
- self.filterable ||= filterable
154
- self.searchable ||= searchable
155
- self.updatable ||= updatable
156
- self.destroyable ||= destroyable
147
+ def init_operations
148
+ self.creatable = false
149
+ self.showable = false
150
+ self.listable = false
151
+ self.filterable = false
152
+ self.searchable = false
153
+ self.updatable = false
154
+ self.destroyable = false
155
+ self.id_listable = false
156
+ self.countable = false
157
157
  end
158
158
 
159
159
  def creatable?
@@ -184,6 +184,14 @@ module Nylas
184
184
  destroyable
185
185
  end
186
186
 
187
+ def id_listable?
188
+ id_listable
189
+ end
190
+
191
+ def countable?
192
+ countable
193
+ end
194
+
187
195
  def resources_path(*)
188
196
  @resources_path
189
197
  end
@@ -6,7 +6,7 @@ module Nylas
6
6
  class NeuralCategorizer < Message
7
7
  include Model
8
8
  self.resources_path = "/neural/categorize"
9
- allows_operations(listable: true)
9
+ self.listable = true
10
10
 
11
11
  attribute :categorizer, :categorize
12
12
  # Overrides Message's label attribute as currently categorize returns
@@ -6,7 +6,7 @@ module Nylas
6
6
  class NeuralCleanConversation < Message
7
7
  include Model
8
8
  self.resources_path = "/neural/conversation"
9
- allows_operations(listable: true)
9
+ self.listable = true
10
10
  IMAGE_REGEX = /[(']cid:(.*?)[)']/.freeze
11
11
 
12
12
  attribute :conversation, :string
@@ -6,7 +6,7 @@ module Nylas
6
6
  class NeuralOcr < File
7
7
  include Model
8
8
  self.resources_path = "/neural/ocr"
9
- allows_operations(listable: true)
9
+ self.listable = true
10
10
 
11
11
  has_n_of_attribute :ocr, :string
12
12
  attribute :processed_pages, :integer
@@ -6,7 +6,7 @@ module Nylas
6
6
  class NeuralSentimentAnalysis
7
7
  include Model
8
8
  self.resources_path = "/neural/sentiment"
9
- allows_operations(listable: true)
9
+ self.listable = true
10
10
 
11
11
  attribute :account_id, :string
12
12
  attribute :sentiment, :string
@@ -6,7 +6,7 @@ module Nylas
6
6
  class RoomResource
7
7
  include Model
8
8
  self.resources_path = "/resources"
9
- allows_operations(listable: true)
9
+ self.listable = true
10
10
 
11
11
  attribute :object, :string, read_only: true
12
12
  attribute :email, :string, read_only: true
data/lib/nylas/rsvp.rb CHANGED
@@ -5,7 +5,7 @@ module Nylas
5
5
  # @see https://docs.nylas.com/reference#rsvping-to-invitations
6
6
  class Rsvp
7
7
  include Model
8
- allows_operations(creatable: true)
8
+ self.creatable = true
9
9
 
10
10
  attribute :account_id, :string
11
11
  attribute :event_id, :string
@@ -6,8 +6,12 @@ module Nylas
6
6
  class Scheduler
7
7
  include Model
8
8
  self.resources_path = "/manage/pages"
9
- allows_operations(creatable: true, listable: true, filterable: true, showable: true, updatable: true,
10
- destroyable: true)
9
+ self.creatable = true
10
+ self.listable = true
11
+ self.showable = true
12
+ self.filterable = true
13
+ self.updatable = true
14
+ self.destroyable = true
11
15
 
12
16
  attribute :id, :integer, read_only: true
13
17
  attribute :app_client_id, :string
data/lib/nylas/thread.rb CHANGED
@@ -5,7 +5,12 @@ module Nylas
5
5
  # @see https://docs.nylas.com/reference#threads
6
6
  class Thread
7
7
  include Model
8
- allows_operations(searchable: true, filterable: true, listable: true, updatable: true)
8
+ self.searchable = true
9
+ self.listable = true
10
+ self.filterable = true
11
+ self.updatable = true
12
+ self.id_listable = true
13
+ self.countable = true
9
14
 
10
15
  self.resources_path = "/threads"
11
16
 
data/lib/nylas/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nylas
4
- VERSION = "5.12.0"
4
+ VERSION = "5.13.0"
5
5
  end
data/lib/nylas/webhook.rb CHANGED
@@ -41,8 +41,11 @@ module Nylas
41
41
  # @see https://docs.nylas.com/reference#webhooks
42
42
  class Webhook
43
43
  include Model
44
- allows_operations(creatable: true, listable: true, showable: true, updatable: true,
45
- destroyable: true)
44
+ self.creatable = true
45
+ self.listable = true
46
+ self.showable = true
47
+ self.updatable = true
48
+ self.destroyable = true
46
49
  self.auth_method = HttpClient::AuthMethod::BASIC
47
50
  attribute :id, :string, read_only: true
48
51
  attribute :application_id, :string, read_only: true
data/lib/nylas/when.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nylas
4
+ require "tzinfo"
5
+
4
6
  # Structure to represent all the Nylas time types.
5
7
  # @see https://docs.nylas.com/reference#section-time
6
8
  class When
@@ -19,10 +21,15 @@ module Nylas
19
21
 
20
22
  # when object == 'time'
21
23
  attribute :time, :unix_timestamp
24
+ # Timezone must be set to a valid IANA database timezone name
25
+ attribute :timezone, :string
22
26
 
23
27
  # when object == 'timespan'
24
28
  attribute :start_time, :unix_timestamp
25
29
  attribute :end_time, :unix_timestamp
30
+ # Both timezone fields must be set to a valid IANA database timezone name
31
+ attribute :start_timezone, :string
32
+ attribute :end_timezone, :string
26
33
 
27
34
  def_delegators :range, :cover?
28
35
 
@@ -44,5 +51,25 @@ module Nylas
44
51
  Range.new(time, time)
45
52
  end
46
53
  end
54
+
55
+ # Validates the When object
56
+ # @return [Boolean] True if the When is valid
57
+ # @raise [ArgumentError] If any of the timezone fields are not valid IANA database names
58
+ def valid?
59
+ validate_timezone(timezone) if timezone
60
+ validate_timezone(start_timezone) if start_timezone
61
+ validate_timezone(end_timezone) if end_timezone
62
+
63
+ true
64
+ end
65
+
66
+ private
67
+
68
+ def validate_timezone(timezone_var)
69
+ return if TZInfo::Timezone.all_identifiers.include?(timezone_var)
70
+
71
+ raise ArgumentError,
72
+ format("The timezone provided (%s) is not a valid IANA timezone database name", timezone_var)
73
+ end
47
74
  end
48
75
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nylas
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.12.0
4
+ version: 5.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nylas, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-29 00:00:00.000000000 Z
11
+ date: 2022-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 2.7.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: tzinfo
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 2.0.5
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 2.0.5
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: overcommit
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -212,14 +226,28 @@ dependencies:
212
226
  requirements:
213
227
  - - "~>"
214
228
  - !ruby/object:Gem::Version
215
- version: '0.15'
229
+ version: 0.21.2
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: 0.21.2
237
+ - !ruby/object:Gem::Dependency
238
+ name: simplecov-cobertura
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: 2.1.0
216
244
  type: :development
217
245
  prerelease: false
218
246
  version_requirements: !ruby/object:Gem::Requirement
219
247
  requirements:
220
248
  - - "~>"
221
249
  - !ruby/object:Gem::Version
222
- version: '0.15'
250
+ version: 2.1.0
223
251
  - !ruby/object:Gem::Dependency
224
252
  name: rest-client
225
253
  requirement: !ruby/object:Gem::Requirement
@@ -380,7 +408,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
380
408
  - !ruby/object:Gem::Version
381
409
  version: '0'
382
410
  requirements: []
383
- rubygems_version: 3.3.7
411
+ rubygems_version: 3.0.9
384
412
  signing_key:
385
413
  specification_version: 4
386
414
  summary: Gem for interacting with the Nylas API