nylas 6.2.0 → 6.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 66046a0bdf3cda4d6c782bba25fba8459223c97930d3bf0d15f46e000f04546a
4
- data.tar.gz: cf1e2a07df881e98a6087255c654078ceefcc2dca4b47a0cc79506edbbca63c1
3
+ metadata.gz: 51dfbc5793db11f12c6f01c13040346b5ec3cb272e30e3464363240e3e8ebf00
4
+ data.tar.gz: 3f76c739a761dfc92c8dfa12f71e0555e8d56399c61a297a7daeadfc861d019e
5
5
  SHA512:
6
- metadata.gz: fd94c45db1d031e7e431f7c6f09f2b6f0f8263787fd4a94c1c5978b14a8e57032febfdc5476705eb55f26c33ef3781554dcf3df9c2e4ea21b57764447cc4d7ed
7
- data.tar.gz: a2aa5c353495efbdf033131569c12f5166297c760ee10ef50911bb55a4aec98f4823c5779660ba57904eb65b06751021d51a579046938e2a445b382cfa188a19
6
+ metadata.gz: 77d860d38046bb599e43e7cc7b3460a20b512005d4fc4bb21704d7d1adbe5e5c81b5a01761f6050121b18bb68451d8e51f9f6e2b30c835ec6abc8d71f6cdb615
7
+ data.tar.gz: 58fb6f352d89b3b24328da83d07f6f823e4eb77e5b1bd078069294600ec5cea538e095aa437aa18ae69893045e6510ff66e2f3719e59adae70bacf6246a73e54
data/lib/nylas/client.rb CHANGED
@@ -8,6 +8,7 @@ require_relative "resources/auth"
8
8
  require_relative "resources/webhooks"
9
9
  require_relative "resources/applications"
10
10
  require_relative "resources/folders"
11
+ require_relative "resources/scheduler"
11
12
 
12
13
  module Nylas
13
14
  # Methods to retrieve data from the Nylas API as Ruby objects.
@@ -117,5 +118,11 @@ module Nylas
117
118
  def webhooks
118
119
  Webhooks.new(self)
119
120
  end
121
+
122
+ # The Scheduler resources for your Nylas application.
123
+ # @return [Nylas::Scheduler] Scheduler resources for your Nylas application.
124
+ def scheduler
125
+ Scheduler.new(self)
126
+ end
120
127
  end
121
128
  end
data/lib/nylas/errors.rb CHANGED
@@ -21,7 +21,7 @@ module Nylas
21
21
  # @param type [Hash] Error type.
22
22
  # @param message [String] Error message.
23
23
  # @param status_code [Integer] Error status code.
24
- # @param provider_error [String, nil] Provider error.
24
+ # @param provider_error [Hash, nil] The error from the provider.
25
25
  # @param request_id [Hash, nil] The ID of the request.
26
26
  def initialize(type, message, status_code, provider_error = nil, request_id = nil)
27
27
  super(message)
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "resource"
4
+ require_relative "../handler/api_operations"
5
+
6
+ module Nylas
7
+ # Nylas Messages API
8
+ class Availability < Resource
9
+ include ApiOperations::Get
10
+
11
+ # Return availabilities for a configuration.
12
+ # @param query_params [Hash, nil] Query params to pass to the request.
13
+ # @return [Array(Array(Hash), String, String)] The list of configurations, API Request ID,
14
+ # and next cursor.
15
+ def list(query_params: nil)
16
+ get_list(
17
+ path: "#{api_uri}/v3/scheduling/availability",
18
+ query_params: query_params
19
+ )
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "resource"
4
+ require_relative "../handler/api_operations"
5
+
6
+ module Nylas
7
+ # Nylas Messages API
8
+ class Bookings < Resource
9
+ include ApiOperations::Get
10
+ include ApiOperations::Post
11
+ include ApiOperations::Put
12
+ include ApiOperations::Delete
13
+ include ApiOperations::Patch
14
+
15
+ # Return a booking.
16
+ # @param booking_id [String] The id of the booking to return.
17
+ # @param query_params [Hash, nil] Query params to pass to the request.
18
+ # @return [Array(Hash, String)] The booking and API request ID.
19
+ def find(booking_id:, query_params: nil)
20
+ get(
21
+ path: "#{api_uri}/v3/scheduling/bookings/#{booking_id}",
22
+ query_params: query_params
23
+ )
24
+ end
25
+
26
+ # Create a booking.
27
+ # @param request_body [Hash] The values to create the booking with.
28
+ # @param query_params [Hash, nil] Query params to pass to the request.
29
+ # @return [Array(Hash, String)] The created booking and API Request ID.
30
+ def create(request_body:, query_params: nil)
31
+ post(
32
+ path: "#{api_uri}/v3/scheduling/bookings",
33
+ request_body: request_body,
34
+ query_params: query_params
35
+ )
36
+ end
37
+
38
+ # Create a booking.
39
+ # @param request_body [Hash] The values to update the booking with.
40
+ # @param booking_id [String] The id of the booking to update.
41
+ # @param query_params [Hash, nil] Query params to pass to the request.
42
+ # @return [Array(Hash, String)] The created booking and API Request ID.
43
+ def update(request_body:, booking_id:, query_params: nil)
44
+ patch(
45
+ path: "#{api_uri}/v3/scheduling/bookings/#{booking_id}",
46
+ request_body: request_body,
47
+ query_params: query_params
48
+ )
49
+ end
50
+
51
+ # Confirm a booking.
52
+ # @param booking_id [String] The id of the booking to confirm.
53
+ # @param request_body [Hash] The values to update the booking with
54
+ # @param query_params [Hash, nil] Query params to pass to the request.
55
+ # @return [Array(Hash, String)] The updated booking and API Request ID.
56
+ def confirm(booking_id:, request_body:, query_params: nil)
57
+ put(
58
+ path: "#{api_uri}/v3/scheduling/bookings/#{booking_id}",
59
+ request_body: request_body,
60
+ query_params: query_params
61
+ )
62
+ end
63
+
64
+ # Delete a booking.
65
+ # @param booking_id [String] The id of the booking to delete.
66
+ # @param query_params [Hash, nil] Query params to pass to the request.
67
+ # @return [Array(TrueClass, String)] True and the API Request ID for the delete operation.
68
+ def destroy(booking_id:, query_params: nil)
69
+ _, request_id = delete(
70
+ path: "#{api_uri}/v3/scheduling/bookings/#{booking_id}",
71
+ query_params: query_params
72
+ )
73
+
74
+ [true, request_id]
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "resource"
4
+ require_relative "../handler/api_operations"
5
+
6
+ module Nylas
7
+ # Nylas Scheduler Configurations API
8
+ class Configurations < Resource
9
+ include ApiOperations::Get
10
+ include ApiOperations::Post
11
+ include ApiOperations::Put
12
+ include ApiOperations::Delete
13
+
14
+ # Return all Scheduler Configurations.
15
+ #
16
+ # @param identifier [String] Grant ID or email account to query.
17
+ # @param query_params [Hash, nil] Query params to pass to the request.
18
+ # @return [Array(Array(Hash), String, String)] The list of configurations, API Request ID,
19
+ # and next cursor.
20
+ def list(identifier:, query_params: nil)
21
+ get_list(
22
+ path: "#{api_uri}/v3/grants/#{identifier}/scheduling/configurations",
23
+ query_params: query_params
24
+ )
25
+ end
26
+
27
+ # Return a Configuration.
28
+ #
29
+ # @param identifier [String] Grant ID or email account to query.
30
+ # @param configuration_id [String] The id of the configuration to return.
31
+ # @return [Array(Hash, String)] The configuration and API request ID.
32
+ def find(identifier:, configuration_id:)
33
+ get(
34
+ path: "#{api_uri}/v3/grants/#{identifier}/scheduling/configurations/#{configuration_id}"
35
+ )
36
+ end
37
+
38
+ # Create a configuration.
39
+ #
40
+ # @param identifier [String] Grant ID or email account in which to create the object.
41
+ # @param request_body [Hash] The values to create the configuration with.
42
+ # @return [Array(Hash, String)] The created configuration and API Request ID.
43
+ def create(identifier:, request_body:)
44
+ post(
45
+ path: "#{api_uri}/v3/grants/#{identifier}/scheduling/configurations",
46
+ request_body: request_body
47
+ )
48
+ end
49
+
50
+ # Update a configuration.
51
+ #
52
+ # @param identifier [String] Grant ID or email account in which to update an object.
53
+ # @param configuration_id [String] The id of the configuration to update.
54
+ # @param request_body [Hash] The values to update the configuration with
55
+ # @return [Array(Hash, String)] The updated configuration and API Request ID.
56
+ def update(identifier:, configuration_id:, request_body:)
57
+ put(
58
+ path: "#{api_uri}/v3/grants/#{identifier}/scheduling/configurations/#{configuration_id}",
59
+ request_body: request_body
60
+ )
61
+ end
62
+
63
+ # Delete a configuration.
64
+ #
65
+ # @param identifier [String] Grant ID or email account from which to delete an object.
66
+ # @param configuration_id [String] The id of the configuration to delete.
67
+ # @return [Array(TrueClass, String)] True and the API Request ID for the delete operation.
68
+ def destroy(identifier:, configuration_id:)
69
+ _, request_id = delete(
70
+ path: "#{api_uri}/v3/grants/#{identifier}/scheduling/configurations/#{configuration_id}"
71
+ )
72
+
73
+ [true, request_id]
74
+ end
75
+ end
76
+ end
@@ -27,10 +27,12 @@ module Nylas
27
27
  #
28
28
  # @param identifier [String] Grant ID or email account to query.
29
29
  # @param folder_id [String] The id of the folder to return.
30
+ # @param query_params [Hash, nil] Query params to pass to the request.
30
31
  # @return [Array(Hash, String)] The folder and API request ID.
31
- def find(identifier:, folder_id:)
32
+ def find(identifier:, folder_id:, query_params: nil)
32
33
  get(
33
- path: "#{api_uri}/v3/grants/#{identifier}/folders/#{folder_id}"
34
+ path: "#{api_uri}/v3/grants/#{identifier}/folders/#{folder_id}",
35
+ query_params: query_params
34
36
  )
35
37
  end
36
38
 
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./configurations"
4
+ require_relative "./sessions"
5
+ require_relative "./bookings"
6
+ require_relative "./availability"
7
+
8
+ module Nylas
9
+ # Nylas Scheduler API
10
+ # This class provides access to the Scheduler resources, including
11
+ # configurations, bookings, sessions, and availability.
12
+ #
13
+ # @attr_reader [Nylas::Configurations] configurations The Scheduler configurations resource for your
14
+ # Nylas application.
15
+ # @attr_reader [Nylas::Bookings] bookings The Scheduler bookings resource for your
16
+ # Nylas application.
17
+ # @attr_reader [Nylas::Sessions] sessions The Scheduler sessions resource for your
18
+ # Nylas application.
19
+ # @attr_reader [Nylas::Availability] availability The Scheduler availability resource for your
20
+ # Nylas application.
21
+ class Scheduler
22
+ attr_reader :configurations, :sessions, :bookings, :availability
23
+
24
+ # Initializes the Scheduler class.
25
+ #
26
+ # @param api_client [APIClient] The Nylas API client instance for making requests.
27
+ def initialize(api_client)
28
+ @api_client = api_client
29
+ @configurations = Configurations.new(@api_client)
30
+ @bookings = Bookings.new(@api_client)
31
+ @sessions = Sessions.new(@api_client)
32
+ @availability = Availability.new(@api_client)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "resource"
4
+ require_relative "../handler/api_operations"
5
+
6
+ module Nylas
7
+ # Nylas Messages API
8
+ class Sessions < Resource
9
+ include ApiOperations::Post
10
+ include ApiOperations::Delete
11
+
12
+ # Create a session for a configuration.
13
+ # @param request_body [Hash] The values to create a configuration sessions.
14
+ # @return [Array(Hash, String)] The created configuration and API Request ID.
15
+ def create(request_body:)
16
+ post(
17
+ path: "#{api_uri}/v3/scheduling/sessions",
18
+ request_body: request_body
19
+ )
20
+ end
21
+
22
+ # Delete a session for a configuration.
23
+ # @param session_id [String] The id of the session to delete.
24
+ # @return [Array(TrueClass, String)] True and the API Request ID for the delete operation.
25
+ def destroy(session_id:)
26
+ _, request_id = delete(
27
+ path: "#{api_uri}/v3/scheduling/sessions/#{session_id}"
28
+ )
29
+
30
+ [true, request_id]
31
+ end
32
+ end
33
+ end
@@ -26,10 +26,12 @@ module Nylas
26
26
  #
27
27
  # @param identifier [String] Grant ID or email account to query.
28
28
  # @param thread_id [String] The id of the thread to return.
29
+ # @param query_params [Hash, nil] Query params to pass to the request.
29
30
  # @return [Array(Hash, String)] The thread and API request ID.
30
- def find(identifier:, thread_id:)
31
+ def find(identifier:, thread_id:, query_params: nil)
31
32
  get(
32
- path: "#{api_uri}/v3/grants/#{identifier}/threads/#{thread_id}"
33
+ path: "#{api_uri}/v3/grants/#{identifier}/threads/#{thread_id}",
34
+ query_params: query_params
33
35
  )
34
36
  end
35
37
 
@@ -36,7 +36,16 @@ module Nylas
36
36
  file = File.open(attachment[:file_path], "rb")
37
37
  end
38
38
 
39
- form_data.merge!({ "file#{index}" => file })
39
+ # Setting original filename and content type if available. See rest-client#lib/restclient/payload.rb
40
+ filename = attachment[:filename] || attachment["filename"]
41
+ file.define_singleton_method(:original_filename) { filename } if filename
42
+
43
+ content_type = attachment[:content_type] || attachment["content_type"]
44
+ file.define_singleton_method(:content_type) { content_type } if content_type
45
+
46
+ content_id = attachment[:content_id] || attachment["content_id"] || "file#{index}"
47
+
48
+ form_data.merge!({ content_id => file })
40
49
  opened_files << file
41
50
  end
42
51
 
@@ -91,9 +100,10 @@ module Nylas
91
100
 
92
101
  # Build the request to attach a file to a message/draft object.
93
102
  # @param file_path [String] The path to the file to attach.
103
+ # @param filename [String] The name of the attached file. Optional, derived from file_path by default.
94
104
  # @return [Hash] The request that will attach the file to the message/draft
95
- def self.attach_file_request_builder(file_path)
96
- filename = File.basename(file_path)
105
+ def self.attach_file_request_builder(file_path, filename = nil, content_id = nil)
106
+ filename ||= File.basename(file_path)
97
107
  content_type = MIME::Types.type_for(file_path)
98
108
  content_type = if !content_type.nil? && !content_type.empty?
99
109
  content_type.first.to_s
@@ -102,12 +112,12 @@ module Nylas
102
112
  end
103
113
  size = File.size(file_path)
104
114
  content = File.new(file_path, "rb")
105
-
106
115
  {
107
116
  filename: filename,
108
117
  content_type: content_type,
109
118
  size: size,
110
119
  content: content,
120
+ content_id: content_id,
111
121
  file_path: file_path
112
122
  }
113
123
  end
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.2.0"
4
+ VERSION = "6.2.2"
5
5
  end
data/lib/nylas.rb CHANGED
@@ -43,5 +43,6 @@ require_relative "nylas/resources/smart_compose"
43
43
  require_relative "nylas/resources/threads"
44
44
  require_relative "nylas/resources/redirect_uris"
45
45
  require_relative "nylas/resources/webhooks"
46
+ require_relative "nylas/resources/scheduler"
46
47
 
47
48
  require_relative "nylas/utils/file_utils"
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.2.0
4
+ version: 6.2.2
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-09-24 00:00:00.000000000 Z
11
+ date: 2024-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types
@@ -251,7 +251,10 @@ files:
251
251
  - lib/nylas/resources/applications.rb
252
252
  - lib/nylas/resources/attachments.rb
253
253
  - lib/nylas/resources/auth.rb
254
+ - lib/nylas/resources/availability.rb
255
+ - lib/nylas/resources/bookings.rb
254
256
  - lib/nylas/resources/calendars.rb
257
+ - lib/nylas/resources/configurations.rb
255
258
  - lib/nylas/resources/connectors.rb
256
259
  - lib/nylas/resources/contacts.rb
257
260
  - lib/nylas/resources/credentials.rb
@@ -262,10 +265,11 @@ files:
262
265
  - lib/nylas/resources/messages.rb
263
266
  - lib/nylas/resources/redirect_uris.rb
264
267
  - lib/nylas/resources/resource.rb
268
+ - lib/nylas/resources/scheduler.rb
269
+ - lib/nylas/resources/sessions.rb
265
270
  - lib/nylas/resources/smart_compose.rb
266
271
  - lib/nylas/resources/threads.rb
267
272
  - lib/nylas/resources/webhooks.rb
268
- - lib/nylas/test.rb
269
273
  - lib/nylas/utils/file_utils.rb
270
274
  - lib/nylas/version.rb
271
275
  homepage:
@@ -293,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
293
297
  - !ruby/object:Gem::Version
294
298
  version: '0'
295
299
  requirements: []
296
- rubygems_version: 3.4.10
300
+ rubygems_version: 3.5.22
297
301
  signing_key:
298
302
  specification_version: 4
299
303
  summary: Gem for interacting with the Nylas API
data/lib/nylas/test.rb DELETED
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'nylas'
4
-
5
- nylas = Nylas::Client.new(
6
- api_key: "nyk_v0_tRgvnXpqESPGVaaf5QTDzoSYet94natpftScKTT8auH6Www49RJUQ1WJ5VAWplqu"
7
- )
8
-
9
- # file = Nylas::FileUtils.attach_file_request_builder("/Users/mostafa.r@nylas.com/Downloads/05i7gc9wvgv51.jpg")
10
- file = Nylas::FileUtils.attach_file_request_builder("/Users/mostafa.r@nylas.com/Downloads/zara_reciept.pdf")
11
-
12
- request_body = {
13
- subject: "Ruby SDK attachment test - 8.30.24 x1",
14
- to: [{email: "mostafa.r@nylas.com"}],
15
- attachments: [file],
16
- }
17
-
18
- puts "Before request"
19
- puts request_body
20
-
21
- begin
22
- email, _ = nylas.messages.send(identifier: "mostafa.r@nylas.com", request_body: request_body)
23
- puts "Email sent successfully: #{email}"
24
- rescue StandardError => e
25
- puts "An error occurred: #{e.message}"
26
- end
27
-
28
- puts "After request"
29
- puts request_body
30
-
31
- # begin
32
- # email, _ = nylas.messages.send(identifier: "mostafa.r@nylas.com", request_body: request_body)
33
- # puts "Email sent successfully: #{email}"
34
- # rescue StandardError => e1
35
- # puts "An error occurred: #{e1.message}"
36
- # end