mailosaur 7.11.0 → 7.13.0

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: 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