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 +4 -4
- data/lib/Mailosaur/files.rb +16 -0
- data/lib/Mailosaur/messages.rb +29 -4
- data/lib/Mailosaur/models/message.rb +9 -5
- data/lib/Mailosaur/models/message_summary.rb +8 -4
- data/lib/Mailosaur/models/preview.rb +20 -0
- data/lib/Mailosaur/models/preview_email_client.rb +36 -0
- data/lib/Mailosaur/models/preview_email_client_list_result.rb +14 -0
- data/lib/Mailosaur/models/preview_list_result.rb +14 -0
- data/lib/Mailosaur/models/preview_request.rb +16 -0
- data/lib/Mailosaur/models/preview_request_options.rb +12 -0
- data/lib/Mailosaur/previews.rb +29 -0
- data/lib/Mailosaur/version.rb +1 -1
- data/lib/mailosaur.rb +13 -1
- metadata +12 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c417909e984bf0a87b874005ad64189ad558f7d84c684fb611f67acbb65e4c0
|
4
|
+
data.tar.gz: 14b33b02313b33441b8b81a38b20a076a4f4d4f3cf9d75c10bf647e19e7f9225
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3ee70bc3325a97b85affc84f2ed0e72ed6e7ec02bb684fed6894d88ad4a4b74b46e593ac07b6a6ba6e3a1458ef76576cfb715096c04f971a0c2c45a336bf355
|
7
|
+
data.tar.gz: e35f4d3da9895285738241c72f8aa0b40b7da76ed298f83cae7a007222386ec20bdaee136f4c3658f94823786568dc553db05418f8a4da56627fb14bb8412290
|
data/lib/Mailosaur/files.rb
CHANGED
@@ -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
|
data/lib/Mailosaur/messages.rb
CHANGED
@@ -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
|
8
|
+
(data['from'] || []).each { |i| @from << Mailosaur::Models::MessageAddress.new(i) }
|
8
9
|
@to = []
|
9
|
-
(data['to'] || []).each
|
10
|
+
(data['to'] || []).each { |i| @to << Mailosaur::Models::MessageAddress.new(i) }
|
10
11
|
@cc = []
|
11
|
-
(data['cc'] || []).each
|
12
|
+
(data['cc'] || []).each { |i| @cc << Mailosaur::Models::MessageAddress.new(i) }
|
12
13
|
@bcc = []
|
13
|
-
(data['bcc'] || []).each
|
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
|
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
|
9
|
+
(data['from'] || []).each { |i| @from << Mailosaur::Models::MessageAddress.new(i) }
|
9
10
|
@to = []
|
10
|
-
(data['to'] || []).each
|
11
|
+
(data['to'] || []).each { |i| @to << Mailosaur::Models::MessageAddress.new(i) }
|
11
12
|
@cc = []
|
12
|
-
(data['cc'] || []).each
|
13
|
+
(data['cc'] || []).each { |i| @cc << Mailosaur::Models::MessageAddress.new(i) }
|
13
14
|
@bcc = []
|
14
|
-
(data['bcc'] || []).each
|
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,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
|
data/lib/Mailosaur/version.rb
CHANGED
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]
|
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.
|
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:
|
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.
|
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.
|
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.
|
215
|
+
rubygems_version: 3.3.26
|
215
216
|
signing_key:
|
216
217
|
specification_version: 4
|
217
218
|
summary: The Mailosaur Ruby library
|