nylas 6.0.2 → 6.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: 4210ab41b7981d0dee78c6c08cad413063e621f0142909ef9e156e477092c572
4
- data.tar.gz: 8845808ca7a7a993676b02373ab89d9db702742f2f3ad89678b529392e9596b0
3
+ metadata.gz: 02d4ddf22b4a6d57beca4b1f0d9fe0628c3d118e62dcee6e7c8ec38695035b5b
4
+ data.tar.gz: 6393d443a2c9d4f45ffff8d8094929ba767bec0f27414aa5f47eb3914dab16f5
5
5
  SHA512:
6
- metadata.gz: 47e3479b8c975bd0bb4d5d25dd336abb1f8fa469e06d2eeda5b039ae4d09d7a3f5cab3efb7f2d9ec4b9124a991ccdd531766a32b6a89b70c6a26b878f6f03792
7
- data.tar.gz: c69da1ded4c8f953009b747b999e743e6bc6ef1418d88544f3d33991a655ad40a9c95a94db6ed2f13a0bf2bda133858f35f738e4e2cdfa0c9130061e5a35098b
6
+ metadata.gz: d815d22e5bf051d16465ea4985ac231ac99f61f8de9e728cb73750ca7ed325e2bbebf7d03ac3e7465d2a0abf42be31925df52f48db2a5fff2a4572d4c537498f
7
+ data.tar.gz: 6cb20979b66c86fad147bba710cd10cb1a1323712eb8986863f603c98f5c9fe11f11b3cc85384733fcd5193bce0c622e2df1ac41a2388bb7b7bf59bb4baa7d4e
data/lib/nylas/client.rb CHANGED
@@ -24,7 +24,7 @@ module Nylas
24
24
  timeout: nil)
25
25
  @api_key = api_key
26
26
  @api_uri = api_uri
27
- @timeout = timeout || 30
27
+ @timeout = timeout || 90
28
28
  end
29
29
 
30
30
  # The application resources for your Nylas application.
@@ -16,6 +16,18 @@ module Nylas
16
16
  include ApiOperations::Post
17
17
  include ApiOperations::Get
18
18
 
19
+ # Get info about a specific token based on the identifier you include.
20
+ # Use either the ID Token or Access Token.
21
+ #
22
+ # @param ID of the request.
23
+ # @return [Hash] Token Info.
24
+ def access_token_info(query_params: nil)
25
+ get(
26
+ path: "#{api_uri}/v3/connect/tokeninfo",
27
+ query_params: query_params
28
+ )
29
+ end
30
+
19
31
  # Builds the URL for authenticating users to your application with OAuth 2.0.
20
32
  #
21
33
  # @param config [Hash] Configuration for building the URL.
@@ -118,7 +130,7 @@ module Nylas
118
130
  # @return [String] Updated list of parameters, including those specific to admin
119
131
  # consent.
120
132
  def build_query_with_admin_consent(config)
121
- params = build_query(config)
133
+ params = build_http_query(config)
122
134
 
123
135
  # Appends new params specific for admin consent.
124
136
  params[:provider] = "microsoft"
@@ -135,7 +147,7 @@ module Nylas
135
147
  # @return [String] Updated list of encoded parameters, including those specific
136
148
  # to PKCE.
137
149
  def build_query_with_pkce(config, secret_hash)
138
- params = build_query(config)
150
+ params = build_http_query(config)
139
151
 
140
152
  # Appends new PKCE specific params.
141
153
  params[:code_challenge_method] = "s256"
@@ -151,7 +163,7 @@ module Nylas
151
163
  def url_auth_builder(config)
152
164
  builder = URI.parse(api_uri)
153
165
  builder.path = "/v3/connect/auth"
154
- builder.query = URI.encode_www_form(build_query(config)).gsub(/\+/, "%20")
166
+ builder.query = URI.encode_www_form(build_http_query(config)).gsub(/\+/, "%20")
155
167
 
156
168
  builder
157
169
  end
@@ -160,7 +172,7 @@ module Nylas
160
172
  #
161
173
  # @param config [Hash] Configuration for the query.
162
174
  # @return [Hash] List of parameters to encode in the query.
163
- def build_query(config)
175
+ def build_http_query(config)
164
176
  params = {
165
177
  client_id: config[:client_id],
166
178
  redirect_uri: config[:redirect_uri],
@@ -43,10 +43,20 @@ module Nylas
43
43
  # you can use {FileUtils::attach_file_request_builder} to build each object attach.
44
44
  # @return [Array(Hash, String)] The created draft and API Request ID.
45
45
  def create(identifier:, request_body:)
46
- form_body, opened_files = FileUtils.build_form_request(request_body)
46
+ payload = request_body
47
+ opened_files = []
48
+
49
+ # Use form data only if the attachment size is greater than 3mb
50
+ attachments = request_body[:attachments] || request_body["attachments"] || []
51
+ attachment_size = attachments&.sum { |attachment| attachment[:size] || 0 } || 0
52
+
53
+ if attachment_size >= FileUtils::FORM_DATA_ATTACHMENT_SIZE
54
+ payload, opened_files = FileUtils.build_form_request(request_body)
55
+ end
56
+
47
57
  response = post(
48
58
  path: "#{api_uri}/v3/grants/#{identifier}/drafts",
49
- request_body: form_body
59
+ request_body: payload
50
60
  )
51
61
 
52
62
  opened_files.each(&:close)
@@ -63,11 +73,20 @@ module Nylas
63
73
  # you can use {FileUtils::attach_file_request_builder} to build each object attach.
64
74
  # @return [Array(Hash, String)] The updated draft and API Request ID.
65
75
  def update(identifier:, draft_id:, request_body:)
66
- form_body, opened_files = FileUtils.build_form_request(request_body)
76
+ payload = request_body
77
+ opened_files = []
78
+
79
+ # Use form data only if the attachment size is greater than 3mb
80
+ attachments = request_body[:attachments] || request_body["attachments"] || []
81
+ attachment_size = attachments&.sum { |attachment| attachment[:size] || 0 } || 0
82
+
83
+ if attachment_size >= FileUtils::FORM_DATA_ATTACHMENT_SIZE
84
+ payload, opened_files = FileUtils.build_form_request(request_body)
85
+ end
67
86
 
68
87
  response = put(
69
88
  path: "#{api_uri}/v3/grants/#{identifier}/drafts/#{draft_id}",
70
- request_body: form_body
89
+ request_body: payload
71
90
  )
72
91
 
73
92
  opened_files.each(&:close)
@@ -38,10 +38,12 @@ module Nylas
38
38
  #
39
39
  # @param identifier [String] Grant ID or email account to query.
40
40
  # @param message_id [String] The id of the message to return.
41
+ # @param query_params [Hash, nil] Query params to pass to the request.
41
42
  # @return [Array(Hash, String)] The message and API request ID.
42
- def find(identifier:, message_id:)
43
+ def find(identifier:, message_id:, query_params: nil)
43
44
  get(
44
- path: "#{api_uri}/v3/grants/#{identifier}/messages/#{message_id}"
45
+ path: "#{api_uri}/v3/grants/#{identifier}/messages/#{message_id}",
46
+ query_params: query_params
45
47
  )
46
48
  end
47
49
 
@@ -50,11 +52,13 @@ module Nylas
50
52
  # @param identifier [String] Grant ID or email account in which to update an object.
51
53
  # @param message_id [String] The id of the message to update.
52
54
  # @param request_body [Hash] The values to update the message with
55
+ # @param query_params [Hash, nil] Query params to pass to the request.
53
56
  # @return [Array(Hash, String)] The updated message and API Request ID.
54
- def update(identifier:, message_id:, request_body:)
57
+ def update(identifier:, message_id:, request_body:, query_params: nil)
55
58
  put(
56
59
  path: "#{api_uri}/v3/grants/#{identifier}/messages/#{message_id}",
57
- request_body: request_body
60
+ request_body: request_body,
61
+ query_params: query_params
58
62
  )
59
63
  end
60
64
 
@@ -71,6 +75,18 @@ module Nylas
71
75
  [true, request_id]
72
76
  end
73
77
 
78
+ # Clean a message.
79
+ #
80
+ # @param identifier [String] Grant ID or email account from which to clean a message.
81
+ # @param request_body [Hash] The options to clean a message with
82
+ # @return [Array(Hash)] The list of clean messages.
83
+ def clean_messages(identifier:, request_body:)
84
+ put(
85
+ path: "#{api_uri}/v3/grants/#{identifier}/messages/clean",
86
+ request_body: request_body
87
+ )
88
+ end
89
+
74
90
  # Send a message.
75
91
  #
76
92
  # @param identifier [String] Grant ID or email account from which to delete an object.
@@ -79,11 +95,20 @@ module Nylas
79
95
  # you can use {FileUtils::attach_file_request_builder} to build each object attach.
80
96
  # @return [Array(Hash, String)] The sent message and the API Request ID.
81
97
  def send(identifier:, request_body:)
82
- form_body, opened_files = FileUtils.build_form_request(request_body)
98
+ payload = request_body
99
+ opened_files = []
100
+
101
+ # Use form data only if the attachment size is greater than 3mb
102
+ attachments = request_body[:attachments] || request_body["attachments"] || []
103
+ attachment_size = attachments&.sum { |attachment| attachment[:size] || 0 } || 0
104
+
105
+ if attachment_size >= FileUtils::FORM_DATA_ATTACHMENT_SIZE
106
+ payload, opened_files = FileUtils.build_form_request(request_body)
107
+ end
83
108
 
84
109
  response = post(
85
110
  path: "#{api_uri}/v3/grants/#{identifier}/messages/send",
86
- request_body: form_body
111
+ request_body: payload
87
112
  )
88
113
 
89
114
  opened_files.each(&:close)
@@ -19,9 +19,14 @@ module Nylas
19
19
  GRANT_EXPIRED = "grant.expired"
20
20
  MESSAGE_SEND_SUCCESS = "message.send_success"
21
21
  MESSAGE_SEND_FAILED = "message.send_failed"
22
+ MESSAGE_CREATED = "message.created"
23
+ MESSAGE_UPDATED = "message.updated"
22
24
  MESSAGE_OPENED = "message.opened"
23
25
  MESSAGE_LINK_CLICKED = "message.link_clicked"
24
26
  THREAD_REPLIED = "thread.replied"
27
+ FOLDER_CREATED = "folder.created"
28
+ FOLDER_UPDATE = "folder.updated"
29
+ FOLDER_DELETED = "folder.deleted"
25
30
  end
26
31
 
27
32
  # Nylas Webhooks API
@@ -5,6 +5,9 @@ require "mime/types"
5
5
  module Nylas
6
6
  # A collection of file-related utilities.
7
7
  module FileUtils
8
+ # The maximum size of an attachment that can be sent using json
9
+ FORM_DATA_ATTACHMENT_SIZE = 3 * 1024 * 1024
10
+
8
11
  # Build a form request for the API.
9
12
  # @param request_body The values to create the message with.
10
13
  # @return The form data to send to the API and the opened files.
data/lib/nylas/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nylas
4
- VERSION = "6.0.2"
4
+ VERSION = "6.1.0"
5
5
  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: 6.0.2
4
+ version: 6.1.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: 2024-02-27 00:00:00.000000000 Z
11
+ date: 2024-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types