mailosaur 7.11.0 → 7.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: 6102a62b1dead548c4a915faaa7e5d11fefc16c10850ccee5482c9974ab656df
4
- data.tar.gz: 9005be36f38c933f9ada0df3312fc23dcffd74c6611d93ef300277ab9c78a0bb
3
+ metadata.gz: 0c417909e984bf0a87b874005ad64189ad558f7d84c684fb611f67acbb65e4c0
4
+ data.tar.gz: 14b33b02313b33441b8b81a38b20a076a4f4d4f3cf9d75c10bf647e19e7f9225
5
5
  SHA512:
6
- metadata.gz: 43b69b34cae04d096a6c2a7d16275d83b98cd3b9d9a876e6512b4c99ad85eb59c5c4830ca3c3b983e0988037c522e847c7297125175eb5e5240a1aabba857403
7
- data.tar.gz: f1cf79f34626e7645ac92a8eef78c9b7d535c5c765170318b03cde0e4385a3a5df82a00b71e3019cb2517b4021c0d5fde7ed7dfeaddeb7b289eff491eea2c029
6
+ metadata.gz: f3ee70bc3325a97b85affc84f2ed0e72ed6e7ec02bb684fed6894d88ad4a4b74b46e593ac07b6a6ba6e3a1458ef76576cfb715096c04f971a0c2c45a336bf355
7
+ data.tar.gz: e35f4d3da9895285738241c72f8aa0b40b7da76ed298f83cae7a007222386ec20bdaee136f4c3658f94823786568dc553db05418f8a4da56627fb14bb8412290
@@ -43,5 +43,21 @@ module Mailosaur
43
43
  @handle_http_error.call(response) unless response.status == 200
44
44
  response.body
45
45
  end
46
+
47
+ #
48
+ # Download an email preview
49
+ #
50
+ # Downloads a screenshot of your email rendered in a real email client. Simply supply
51
+ # the unique identifier for the required preview.
52
+ #
53
+ # @param id The identifier of the email preview to be downloaded.
54
+ #
55
+ # @return [NOT_IMPLEMENTED] operation results.
56
+ #
57
+ def get_preview(id)
58
+ response = conn.get "api/files/previews/#{id}"
59
+ @handle_http_error.call(response) unless response.status == 200
60
+ response.body
61
+ end
46
62
  end
47
63
  end
@@ -27,14 +27,16 @@ module Mailosaur
27
27
  # (in milliseconds).
28
28
  # @param received_after [DateTime] Limits results to only messages received
29
29
  # after this date/time.
30
+ # @param dir [String] Optionally limits results based on the direction (`Sent`
31
+ # or `Received`), with the default being `Received`.
30
32
  #
31
33
  # @return [Message] operation results.
32
34
  #
33
- def get(server, criteria, timeout: 10_000, received_after: DateTime.now - (1.0 / 24))
35
+ def get(server, criteria, timeout: 10_000, received_after: DateTime.now - (1.0 / 24), dir: nil)
34
36
  # Defaults timeout to 10s, receivedAfter to 1h
35
37
  raise Mailosaur::MailosaurError.new('Must provide a valid Server ID.', 'invalid_request') if server.length != 8
36
38
 
37
- result = search(server, criteria, page: 0, items_per_page: 1, timeout: timeout, received_after: received_after)
39
+ result = search(server, criteria, page: 0, items_per_page: 1, timeout: timeout, received_after: received_after, dir: dir)
38
40
  get_by_id(result.items[0].id)
39
41
  end
40
42
 
@@ -83,14 +85,17 @@ module Mailosaur
83
85
  # returned per page. Can be set between 1 and 1000 items, the default is 50.
84
86
  # @param received_after [DateTime] Limits results to only messages received
85
87
  # after this date/time.
88
+ # @param dir [String] Optionally limits results based on the direction (`Sent`
89
+ # or `Received`), with the default being `Received`.
86
90
  #
87
91
  # @return [MessageListResult] operation results.
88
92
  #
89
- def list(server, page: nil, items_per_page: nil, received_after: nil)
93
+ def list(server, page: nil, items_per_page: nil, received_after: nil, dir: nil)
90
94
  url = "api/messages?server=#{server}"
91
95
  url += page ? "&page=#{page}" : ''
92
96
  url += items_per_page ? "&itemsPerPage=#{items_per_page}" : ''
93
97
  url += received_after ? "&receivedAfter=#{CGI.escape(received_after.iso8601)}" : ''
98
+ url += dir ? "&dir=#{dir}" : ''
94
99
 
95
100
  response = conn.get url
96
101
 
@@ -134,14 +139,17 @@ module Mailosaur
134
139
  # after this date/time.
135
140
  # @param error_on_timeout [Boolean] When set to false, an error will not be
136
141
  # throw if timeout is reached (default: true).
142
+ # @param dir [String] Optionally limits results based on the direction (`Sent`
143
+ # or `Received`), with the default being `Received`.
137
144
  #
138
145
  # @return [MessageListResult] operation results.
139
146
  #
140
- def search(server, criteria, page: nil, items_per_page: nil, timeout: nil, received_after: nil, error_on_timeout: true)
147
+ def search(server, criteria, page: nil, items_per_page: nil, timeout: nil, received_after: nil, error_on_timeout: true, dir: nil)
141
148
  url = "api/messages/search?server=#{server}"
142
149
  url += page ? "&page=#{page}" : ''
143
150
  url += items_per_page ? "&itemsPerPage=#{items_per_page}" : ''
144
151
  url += received_after ? "&receivedAfter=#{CGI.escape(received_after.iso8601)}" : ''
152
+ url += dir ? "&dir=#{dir}" : ''
145
153
 
146
154
  poll_count = 0
147
155
  start_time = Time.now.to_f
@@ -226,5 +234,22 @@ module Mailosaur
226
234
  model = JSON.parse(response.body)
227
235
  Mailosaur::Models::Message.new(model)
228
236
  end
237
+
238
+ #
239
+ # Generate email previews.
240
+ #
241
+ # Generates screenshots of an email rendered in the specified email clients.
242
+ #
243
+ # @param id [String] The identifier of the email to preview.
244
+ # @param options [PreviewRequestOptions] The options with which to generate previews.
245
+ #
246
+ # @return [PreviewListResult] operation result.
247
+ #
248
+ def generate_previews(id, options)
249
+ response = conn.post "api/messages/#{id}/previews", options.to_json
250
+ @handle_http_error.call(response) unless response.status == 200
251
+ model = JSON.parse(response.body)
252
+ Mailosaur::Models::PreviewListResult.new(model)
253
+ end
229
254
  end
230
255
  end
@@ -3,20 +3,21 @@ module Mailosaur
3
3
  class Message < BaseModel
4
4
  def initialize(data = {})
5
5
  @id = data['id']
6
+ @type = data['type']
6
7
  @from = []
7
- (data['from'] || []).each do |i| @from << Mailosaur::Models::MessageAddress.new(i) end
8
+ (data['from'] || []).each { |i| @from << Mailosaur::Models::MessageAddress.new(i) }
8
9
  @to = []
9
- (data['to'] || []).each do |i| @to << Mailosaur::Models::MessageAddress.new(i) end
10
+ (data['to'] || []).each { |i| @to << Mailosaur::Models::MessageAddress.new(i) }
10
11
  @cc = []
11
- (data['cc'] || []).each do |i| @cc << Mailosaur::Models::MessageAddress.new(i) end
12
+ (data['cc'] || []).each { |i| @cc << Mailosaur::Models::MessageAddress.new(i) }
12
13
  @bcc = []
13
- (data['bcc'] || []).each do |i| @bcc << Mailosaur::Models::MessageAddress.new(i) end
14
+ (data['bcc'] || []).each { |i| @bcc << Mailosaur::Models::MessageAddress.new(i) }
14
15
  @received = DateTime.parse(data['received'])
15
16
  @subject = data['subject']
16
17
  @html = Mailosaur::Models::MessageContent.new(data['html'])
17
18
  @text = Mailosaur::Models::MessageContent.new(data['text'])
18
19
  @attachments = []
19
- (data['attachments'] || []).each do |i| @attachments << Mailosaur::Models::Attachment.new(i) end
20
+ (data['attachments'] || []).each { |i| @attachments << Mailosaur::Models::Attachment.new(i) }
20
21
  @metadata = Mailosaur::Models::Metadata.new(data['metadata'])
21
22
  @server = data['server']
22
23
  end
@@ -24,6 +25,9 @@ module Mailosaur
24
25
  # @return Unique identifier for the message.
25
26
  attr_accessor :id
26
27
 
28
+ # @return The type of message.
29
+ attr_accessor :type
30
+
27
31
  # @return [Array<MessageAddress>] The sender of the message.
28
32
  attr_accessor :from
29
33
 
@@ -3,15 +3,16 @@ module Mailosaur
3
3
  class MessageSummary < BaseModel
4
4
  def initialize(data = {})
5
5
  @id = data['id']
6
+ @type = data['type']
6
7
  @server = data['server']
7
8
  @from = []
8
- (data['from'] || []).each do |i| @from << Mailosaur::Models::MessageAddress.new(i) end
9
+ (data['from'] || []).each { |i| @from << Mailosaur::Models::MessageAddress.new(i) }
9
10
  @to = []
10
- (data['to'] || []).each do |i| @to << Mailosaur::Models::MessageAddress.new(i) end
11
+ (data['to'] || []).each { |i| @to << Mailosaur::Models::MessageAddress.new(i) }
11
12
  @cc = []
12
- (data['cc'] || []).each do |i| @cc << Mailosaur::Models::MessageAddress.new(i) end
13
+ (data['cc'] || []).each { |i| @cc << Mailosaur::Models::MessageAddress.new(i) }
13
14
  @bcc = []
14
- (data['bcc'] || []).each do |i| @bcc << Mailosaur::Models::MessageAddress.new(i) end
15
+ (data['bcc'] || []).each { |i| @bcc << Mailosaur::Models::MessageAddress.new(i) }
15
16
  @received = DateTime.parse(data['received'])
16
17
  @subject = data['subject']
17
18
  @summary = data['summary']
@@ -21,6 +22,9 @@ module Mailosaur
21
22
  # @return
22
23
  attr_accessor :id
23
24
 
25
+ # @return
26
+ attr_accessor :type
27
+
24
28
  # @return [String]
25
29
  attr_accessor :server
26
30
 
@@ -0,0 +1,20 @@
1
+ module Mailosaur
2
+ module Models
3
+ class Preview < BaseModel
4
+ def initialize(data = {})
5
+ @id = data['id']
6
+ @email_client = data['emailClient']
7
+ @disable_images = data['disableImages']
8
+ end
9
+
10
+ # @return [String] Unique identifier for the email preview.
11
+ attr_accessor :id
12
+
13
+ # @return [String] The email client the preview was generated with.
14
+ attr_accessor :email_client
15
+
16
+ # @return [Boolean] True if images were disabled in the preview.
17
+ attr_accessor :disable_images
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,36 @@
1
+ module Mailosaur
2
+ module Models
3
+ class PreviewEmailClient < BaseModel
4
+ def initialize(data = {})
5
+ @id = data['id']
6
+ @name = data['id']
7
+ @platform_group = data['id']
8
+ @platform_type = data['id']
9
+ @platform_version = data['id']
10
+ @can_disable_images = data['canDisableImages']
11
+ @status = data['status']
12
+ end
13
+
14
+ # @return [String] Unique identifier for the email preview.
15
+ attr_accessor :id
16
+
17
+ # @return [String] The display name of the email client.
18
+ attr_accessor :name
19
+
20
+ # @return [String] Whether the platform is desktop, mobile, or web-based.
21
+ attr_accessor :platform_group
22
+
23
+ # @return [String] The type of platform on which the email client is running.
24
+ attr_accessor :platform_type
25
+
26
+ # @return [String] The platform version number.
27
+ attr_accessor :platform_version
28
+
29
+ # @return [Boolean] If true, images can be disabled when generating previews.
30
+ attr_accessor :can_disable_images
31
+
32
+ # @return [String] The current status of the email client.
33
+ attr_accessor :status
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,14 @@
1
+ module Mailosaur
2
+ module Models
3
+ class PreviewEmailClientListResult < BaseModel
4
+ def initialize(data = {})
5
+ @items = []
6
+ (data['items'] || []).each { |i| @items << Mailosaur::Models::PreviewEmailClient.new(i) }
7
+ end
8
+
9
+ # @return [Array<PreviewEmailClient>] A list of available email clients with which to generate email previews.
10
+ # A list of available email clients.
11
+ attr_accessor :items
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Mailosaur
2
+ module Models
3
+ class PreviewListResult < BaseModel
4
+ def initialize(data = {})
5
+ @items = []
6
+ (data['items'] || []).each { |i| @items << Mailosaur::Models::Preview.new(i) }
7
+ end
8
+
9
+ # @return [Array<Preview>] A list of requested email previews.
10
+ # The summaries for each requested preview.
11
+ attr_accessor :items
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ module Mailosaur
2
+ module Models
3
+ class PreviewRequest < BaseModel
4
+ def initialize(email_client, disable_images: false)
5
+ @email_client = email_client
6
+ @disable_images = disable_images
7
+ end
8
+
9
+ # @return [String] The email client the preview was generated with.
10
+ attr_accessor :email_client
11
+
12
+ # @return [Boolean] True if images were disabled in the preview.
13
+ attr_accessor :disable_images
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ module Mailosaur
2
+ module Models
3
+ class PreviewRequestOptions < BaseModel
4
+ def initialize(previews)
5
+ @previews = previews
6
+ end
7
+
8
+ # @return [PreviewRequest] The list of email preview requests.
9
+ attr_accessor :previews
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,29 @@
1
+ module Mailosaur
2
+ class Previews
3
+ #
4
+ # Creates and initializes a new instance of the Previews class.
5
+ # @param client connection.
6
+ #
7
+ def initialize(conn, handle_http_error)
8
+ @conn = conn
9
+ @handle_http_error = handle_http_error
10
+ end
11
+
12
+ # @return [Connection] the client connection.
13
+ attr_reader :conn
14
+
15
+ #
16
+ # List all email clients that can be used to generate email previews.
17
+ #
18
+ # Returns a list of available email clients.
19
+ #
20
+ # @return [PreviewEmailClientListResult] operation results.
21
+ #
22
+ def list_email_clients
23
+ response = conn.get 'api/previews/clients'
24
+ @handle_http_error.call(response) unless response.status == 200
25
+ model = JSON.parse(response.body)
26
+ Mailosaur::Models::PreviewEmailClientListResult.new(model)
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Mailosaur
2
- VERSION = '7.11.0'.freeze
2
+ VERSION = '7.13.0'.freeze
3
3
  end
data/lib/mailosaur.rb CHANGED
@@ -15,6 +15,7 @@ module Mailosaur
15
15
  autoload :Servers, 'Mailosaur/servers.rb'
16
16
  autoload :Usage, 'Mailosaur/usage.rb'
17
17
  autoload :Devices, 'Mailosaur/devices.rb'
18
+ autoload :Previews, 'Mailosaur/previews.rb'
18
19
  autoload :MailosaurError, 'Mailosaur/mailosaur_error.rb'
19
20
 
20
21
  module Models
@@ -47,6 +48,12 @@ module Mailosaur
47
48
  autoload :DeviceListResult, 'Mailosaur/models/device_list_result.rb'
48
49
  autoload :DeviceCreateOptions, 'Mailosaur/models/device_create_options.rb'
49
50
  autoload :OtpResult, 'Mailosaur/models/otp_result.rb'
51
+ autoload :Preview, 'Mailosaur/models/preview.rb'
52
+ autoload :PreviewEmailClient, 'Mailosaur/models/preview_email_client.rb'
53
+ autoload :PreviewEmailClientListResult, 'Mailosaur/models/preview_email_client_list_result.rb'
54
+ autoload :PreviewListResult, 'Mailosaur/models/preview_list_result.rb'
55
+ autoload :PreviewRequest, 'Mailosaur/models/preview_request.rb'
56
+ autoload :PreviewRequestOptions, 'Mailosaur/models/preview_request_options.rb'
50
57
  autoload :BaseModel, 'Mailosaur/models/base_model.rb'
51
58
  end
52
59
 
@@ -86,11 +93,16 @@ module Mailosaur
86
93
  @usage ||= Usage.new(connection, method(:handle_http_error))
87
94
  end
88
95
 
89
- # @return [Devices] usage
96
+ # @return [Devices] devices
90
97
  def devices
91
98
  @devices ||= Devices.new(connection, method(:handle_http_error))
92
99
  end
93
100
 
101
+ # @return [Previews] previews
102
+ def previews
103
+ @previews ||= Previews.new(connection, method(:handle_http_error))
104
+ end
105
+
94
106
  private
95
107
 
96
108
  def connection
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailosaur
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.11.0
4
+ version: 7.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mailosaur
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-06 00:00:00.000000000 Z
11
+ date: 2023-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -56,20 +56,14 @@ dependencies:
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '2.7'
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 2.7.1
59
+ version: '2.8'
63
60
  type: :development
64
61
  prerelease: false
65
62
  version_requirements: !ruby/object:Gem::Requirement
66
63
  requirements:
67
64
  - - "~>"
68
65
  - !ruby/object:Gem::Version
69
- version: '2.7'
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: 2.7.1
66
+ version: '2.8'
73
67
  - !ruby/object:Gem::Dependency
74
68
  name: rake
75
69
  requirement: !ruby/object:Gem::Requirement
@@ -171,6 +165,12 @@ files:
171
165
  - lib/Mailosaur/models/message_summary.rb
172
166
  - lib/Mailosaur/models/metadata.rb
173
167
  - lib/Mailosaur/models/otp_result.rb
168
+ - lib/Mailosaur/models/preview.rb
169
+ - lib/Mailosaur/models/preview_email_client.rb
170
+ - lib/Mailosaur/models/preview_email_client_list_result.rb
171
+ - lib/Mailosaur/models/preview_list_result.rb
172
+ - lib/Mailosaur/models/preview_request.rb
173
+ - lib/Mailosaur/models/preview_request_options.rb
174
174
  - lib/Mailosaur/models/search_criteria.rb
175
175
  - lib/Mailosaur/models/server.rb
176
176
  - lib/Mailosaur/models/server_create_options.rb
@@ -183,6 +183,7 @@ files:
183
183
  - lib/Mailosaur/models/usage_transaction.rb
184
184
  - lib/Mailosaur/models/usage_transaction_list_result.rb
185
185
  - lib/Mailosaur/module_definition.rb
186
+ - lib/Mailosaur/previews.rb
186
187
  - lib/Mailosaur/servers.rb
187
188
  - lib/Mailosaur/usage.rb
188
189
  - lib/Mailosaur/version.rb
@@ -211,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
212
  - !ruby/object:Gem::Version
212
213
  version: '0'
213
214
  requirements: []
214
- rubygems_version: 3.3.7
215
+ rubygems_version: 3.3.26
215
216
  signing_key:
216
217
  specification_version: 4
217
218
  summary: The Mailosaur Ruby library