mailosaur 7.0.0 → 7.2.1
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 +4 -4
- data/README.md +33 -10
- data/lib/Mailosaur/messages.rb +6 -2
- data/lib/Mailosaur/models/search_criteria.rb +11 -0
- data/lib/Mailosaur/models/server.rb +0 -10
- data/lib/Mailosaur/servers.rb +19 -2
- data/lib/Mailosaur/version.rb +1 -1
- data/lib/mailosaur.rb +0 -1
- metadata +3 -4
- data/lib/Mailosaur/models/forwarding_rule.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27d013e44169ed1c8b0881334b94ce03d76177c35b48202058683a271a7920a8
|
4
|
+
data.tar.gz: 3fd514240ac76ddfe02296e7a67b97f10b9d5fc711e1c7d321a1222cc1caef0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 173665bfe6e3ac1b5eacc99f8e4e3b8bf6e7e9487e4852be057473468b56c00c9f53d38ac95218587fd07d86301efcf98b7ce04f234c93dff5df66aa6c8db402
|
7
|
+
data.tar.gz: 81b04fd97abcfaf0784973d7cf9e1b627d6f28664b1c38a43133f47a001f743a128102520d764d52fba0e7ca825625219b41121feb207b5f489eff569c1dac25
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Mailosaur Ruby Client Library
|
2
2
|
|
3
|
-
[Mailosaur](https://mailosaur.com)
|
3
|
+
[Mailosaur](https://mailosaur.com) lets you automate email and SMS tests, like account verification and password resets, and integrate these into your CI/CD pipeline.
|
4
4
|
|
5
5
|
[](https://github.com/mailosaur/mailosaur-ruby/actions)
|
6
6
|
|
@@ -10,29 +10,52 @@
|
|
10
10
|
gem install mailosaur
|
11
11
|
```
|
12
12
|
|
13
|
-
## Documentation
|
13
|
+
## Documentation
|
14
14
|
|
15
|
-
[
|
15
|
+
Please see the [Ruby client reference](https://mailosaur.com/docs/email-testing/ruby/client-reference/) for the most up-to-date documentation.
|
16
16
|
|
17
|
-
##
|
17
|
+
## Usage
|
18
18
|
|
19
|
-
|
19
|
+
example.rb
|
20
20
|
|
21
|
+
```ruby
|
22
|
+
require "mailosaur"
|
23
|
+
mailosaur = Mailosaur::MailosaurClient.new("YOUR_API_KEY")
|
24
|
+
|
25
|
+
result = mailosaur.servers.list()
|
26
|
+
|
27
|
+
print("You have a server called: " + result.items[0].name)
|
21
28
|
```
|
29
|
+
|
30
|
+
## Development
|
31
|
+
|
32
|
+
You must have the following prerequisites installed:
|
33
|
+
|
34
|
+
* [Bundler](https://bundler.io/)
|
35
|
+
|
36
|
+
Install all development dependencies:
|
37
|
+
|
38
|
+
```sh
|
22
39
|
bundle install
|
40
|
+
```
|
41
|
+
|
42
|
+
The test suite requires the following environment variables to be set:
|
23
43
|
|
44
|
+
```sh
|
45
|
+
export MAILOSAUR_BASE_URL=https://mailosaur.com/
|
24
46
|
export MAILOSAUR_API_KEY=your_api_key
|
25
47
|
export MAILOSAUR_SERVER=server_id
|
48
|
+
```
|
49
|
+
|
50
|
+
Run all tests:
|
26
51
|
|
52
|
+
```sh
|
27
53
|
bundle exec rake test
|
28
54
|
```
|
29
55
|
|
30
|
-
|
56
|
+
Lint code (via Rubocop):
|
31
57
|
|
32
|
-
|
33
|
-
|
34
|
-
```
|
35
|
-
bundle install
|
58
|
+
```sh
|
36
59
|
bundle exec rubocop
|
37
60
|
```
|
38
61
|
|
data/lib/Mailosaur/messages.rb
CHANGED
@@ -34,7 +34,7 @@ module Mailosaur
|
|
34
34
|
# Defaults timeout to 10s, receivedAfter to 1h
|
35
35
|
raise Mailosaur::MailosaurError.new('Must provide a valid Server ID.', 'invalid_request') if server.length != 8
|
36
36
|
|
37
|
-
result = search(server, criteria, timeout: timeout, received_after: received_after)
|
37
|
+
result = search(server, criteria, page: 0, items_per_page: 1, timeout: timeout, received_after: received_after)
|
38
38
|
get_by_id(result.items[0].id)
|
39
39
|
end
|
40
40
|
|
@@ -132,10 +132,12 @@ module Mailosaur
|
|
132
132
|
# (in milliseconds).
|
133
133
|
# @param received_after [DateTime] Limits results to only messages received
|
134
134
|
# after this date/time.
|
135
|
+
# @param error_on_timeout [Boolean] When set to false, an error will not be
|
136
|
+
# throw if timeout is reached (default: true).
|
135
137
|
#
|
136
138
|
# @return [MessageListResult] operation results.
|
137
139
|
#
|
138
|
-
def search(server, criteria, page: nil, items_per_page: nil, timeout: nil, received_after: nil) # rubocop:disable all
|
140
|
+
def search(server, criteria, page: nil, items_per_page: nil, timeout: nil, received_after: nil, error_on_timeout: true) # rubocop:disable all
|
139
141
|
url = 'api/messages/search?server=' + server
|
140
142
|
url += page ? '&page=' + page.to_s : ''
|
141
143
|
url += items_per_page ? '&itemsPerPage=' + items_per_page.to_s : ''
|
@@ -160,6 +162,8 @@ module Mailosaur
|
|
160
162
|
|
161
163
|
## Stop if timeout will be exceeded
|
162
164
|
if ((1000 * (Time.now.to_f - start_time).to_i) + delay) > timeout
|
165
|
+
return Mailosaur::Models::MessageListResult.new(model) unless error_on_timeout
|
166
|
+
|
163
167
|
raise Mailosaur::MailosaurError.new('No matching messages found in time. By default, only messages received in the last hour are checked (use receivedAfter to override this).', 'search_timeout')
|
164
168
|
end
|
165
169
|
|
@@ -2,11 +2,17 @@ module Mailosaur
|
|
2
2
|
module Models
|
3
3
|
class SearchCriteria < BaseModel
|
4
4
|
def initialize(data = {})
|
5
|
+
@sent_from = data['sentFrom']
|
5
6
|
@sent_to = data['sentTo']
|
6
7
|
@subject = data['subject']
|
7
8
|
@body = data['body']
|
9
|
+
@match = data['match'] || 'ALL'
|
8
10
|
end
|
9
11
|
|
12
|
+
# @return [String] The full email address from which the target email was
|
13
|
+
# sent.
|
14
|
+
attr_accessor :sent_from
|
15
|
+
|
10
16
|
# @return [String] The full email address to which the target email was
|
11
17
|
# sent.
|
12
18
|
attr_accessor :sent_to
|
@@ -18,6 +24,11 @@ module Mailosaur
|
|
18
24
|
# @return [String] The value to seek within the target email's HTML or
|
19
25
|
# text body.
|
20
26
|
attr_accessor :body
|
27
|
+
|
28
|
+
# @return [String] If set to ALL (default), then only results that match all
|
29
|
+
# specified criteria will be returned. If set to ANY, results that match any of the
|
30
|
+
# specified criteria will be returned.
|
31
|
+
attr_accessor :match
|
21
32
|
end
|
22
33
|
end
|
23
34
|
end
|
@@ -3,21 +3,15 @@ module Mailosaur
|
|
3
3
|
class Server < BaseModel
|
4
4
|
def initialize(data = {})
|
5
5
|
@id = data['id']
|
6
|
-
@password = data['password']
|
7
6
|
@name = data['name']
|
8
7
|
@users = data['users']
|
9
8
|
@messages = data['messages']
|
10
|
-
@forwarding_rules = []
|
11
|
-
(data['forwardingRules'] || []).each do |i| @forwarding_rules << Mailosaur::Models::ForwardingRule.new(i) end
|
12
9
|
end
|
13
10
|
|
14
11
|
# @return [String] Unique identifier for the server. Used as username for
|
15
12
|
# SMTP/POP3 authentication.
|
16
13
|
attr_accessor :id
|
17
14
|
|
18
|
-
# @return [String] SMTP/POP3 password.
|
19
|
-
attr_accessor :password
|
20
|
-
|
21
15
|
# @return [String] A name used to identify the server.
|
22
16
|
attr_accessor :name
|
23
17
|
|
@@ -26,10 +20,6 @@ module Mailosaur
|
|
26
20
|
|
27
21
|
# @return [Integer] The number of messages currently in the server.
|
28
22
|
attr_accessor :messages
|
29
|
-
|
30
|
-
# @return [Array<ForwardingRule>] The rules used to manage email
|
31
|
-
# forwarding for this server.
|
32
|
-
attr_accessor :forwarding_rules
|
33
23
|
end
|
34
24
|
end
|
35
25
|
end
|
data/lib/Mailosaur/servers.rb
CHANGED
@@ -60,6 +60,23 @@ module Mailosaur
|
|
60
60
|
Mailosaur::Models::Server.new(model)
|
61
61
|
end
|
62
62
|
|
63
|
+
#
|
64
|
+
# Retrieve server password
|
65
|
+
#
|
66
|
+
# Retrieves the password for use with SMTP and POP3 for a single server.
|
67
|
+
# Simply supply the unique identifier for the required server.
|
68
|
+
#
|
69
|
+
# @param id [String] The identifier of the server.
|
70
|
+
#
|
71
|
+
# @return [String] Server password.
|
72
|
+
#
|
73
|
+
def get_password(id)
|
74
|
+
response = conn.get 'api/servers/' + id + '/password'
|
75
|
+
@handle_http_error.call(response) unless response.status == 200
|
76
|
+
model = JSON.load(response.body)
|
77
|
+
model['value']
|
78
|
+
end
|
79
|
+
|
63
80
|
#
|
64
81
|
# Update a server
|
65
82
|
#
|
@@ -92,8 +109,8 @@ module Mailosaur
|
|
92
109
|
end
|
93
110
|
|
94
111
|
def generate_email_address(server)
|
95
|
-
host = ENV['MAILOSAUR_SMTP_HOST'] || 'mailosaur.
|
96
|
-
'%s.%s
|
112
|
+
host = ENV['MAILOSAUR_SMTP_HOST'] || 'mailosaur.net'
|
113
|
+
'%s@%s.%s' % [SecureRandom.hex(3), server, host]
|
97
114
|
end
|
98
115
|
end
|
99
116
|
end
|
data/lib/Mailosaur/version.rb
CHANGED
data/lib/mailosaur.rb
CHANGED
@@ -27,7 +27,6 @@ module Mailosaur
|
|
27
27
|
autoload :MessageListResult, 'Mailosaur/models/message_list_result.rb'
|
28
28
|
autoload :Attachment, 'Mailosaur/models/attachment.rb'
|
29
29
|
autoload :SearchCriteria, 'Mailosaur/models/search_criteria.rb'
|
30
|
-
autoload :ForwardingRule, 'Mailosaur/models/forwarding_rule.rb'
|
31
30
|
autoload :MessageContent, 'Mailosaur/models/message_content.rb'
|
32
31
|
autoload :Server, 'Mailosaur/models/server.rb'
|
33
32
|
autoload :Link, 'Mailosaur/models/link.rb'
|
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.2.1
|
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: 2021-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -159,7 +159,6 @@ files:
|
|
159
159
|
- lib/Mailosaur/messages.rb
|
160
160
|
- lib/Mailosaur/models/attachment.rb
|
161
161
|
- lib/Mailosaur/models/base_model.rb
|
162
|
-
- lib/Mailosaur/models/forwarding_rule.rb
|
163
162
|
- lib/Mailosaur/models/image.rb
|
164
163
|
- lib/Mailosaur/models/link.rb
|
165
164
|
- lib/Mailosaur/models/message.rb
|
@@ -204,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
203
|
- !ruby/object:Gem::Version
|
205
204
|
version: '0'
|
206
205
|
requirements: []
|
207
|
-
rubygems_version: 3.
|
206
|
+
rubygems_version: 3.2.15
|
208
207
|
signing_key:
|
209
208
|
specification_version: 4
|
210
209
|
summary: The Mailosaur Ruby library
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Mailosaur
|
2
|
-
module Models
|
3
|
-
class ForwardingRule < BaseModel
|
4
|
-
def initialize(data = {})
|
5
|
-
@field = data['field']
|
6
|
-
@operator = data['operator']
|
7
|
-
@value = data['value']
|
8
|
-
@forward_to = data['forwardTo']
|
9
|
-
end
|
10
|
-
|
11
|
-
# @return [Enum] Possible values include: 'from', 'to', 'subject'
|
12
|
-
attr_accessor :field
|
13
|
-
|
14
|
-
# @return [Enum] Possible values include: 'endsWith', 'startsWith',
|
15
|
-
# 'contains'
|
16
|
-
attr_accessor :operator
|
17
|
-
|
18
|
-
# @return [String]
|
19
|
-
attr_accessor :value
|
20
|
-
|
21
|
-
# @return [String]
|
22
|
-
attr_accessor :forward_to
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|