-
-
Notifications
You must be signed in to change notification settings - Fork 64
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Implemented Truemail::Logger class * Implemented Truemail::Log::Event class * Implemented Truemail::Log::Serializer::Base class * Implemented Truemail::Log::Serializer::Text class * Implemented Truemail::Log::Serializer::Json class * Updated Truemail::Configuration * Updated Truemail::Validator * Updated Truemail::Validate::Regex * Added changelog * Updated gem version * Updated gem description * Updated readme
- Loading branch information
Showing
28 changed files
with
1,847 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,350 @@ | ||
# Changelog | ||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
|
||
## [1.4.0] - 2019-10-28 | ||
### Added | ||
- Event logger (ability to output validation logs to stdout/file) | ||
- JSON serializer for validator instance | ||
- [Changelog](CHANGELOG.md) | ||
- [Logo](https://repository-images.githubusercontent.com/173723932/6dffee00-e88e-11e9-94b6-c97aacc0df00) | ||
|
||
Truemail gem allows to output tracking events to stdout/file or both of these. Please note, at least one of the outputs must exist. Tracking event by default is `:error` | ||
|
||
**Available tracking events** | ||
|
||
- `:all`, all detected events including success validation cases | ||
- `:unrecognized_error`, unrecognized errors only (when `smtp_safe_check = true` and SMTP server does not return an exact answer that the email does not exist) | ||
- `:recognized_error`, recognized errors only | ||
- `:error`, recognized and unrecognized errors only | ||
|
||
```ruby | ||
Truemail.configure do |config| | ||
config.logger = { tracking_event: :all, stdout: true, log_absolute_path: '/home/app/log/truemail.log' } | ||
end | ||
``` | ||
|
||
Also starting from this version Truemail has built in JSON serializer for `Truemail::Validator` instance, so you can represent your email validation result as json. | ||
|
||
```ruby | ||
Truemail::Log::Serializer::Json.call(Truemail.validate('[email protected]')) | ||
``` | ||
|
||
### Changed | ||
- `Truemail::Configuration` | ||
- `Truemail::Validator` | ||
- `Truemail::Validate::Regex` | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
- gem description | ||
|
||
## [1.3.0] - 2019-09-16 | ||
### Added | ||
- Ability to create new `Truemail::Configuration` instance with block | ||
- `Truemail::Validate::Smtp::Request::Configuration` | ||
|
||
### Changed | ||
- `Truemail::Wrapper` | ||
- `Truemail::Validate::Base` | ||
- `Truemail::Validator` | ||
- `Truemail::Validator::Result` | ||
- `Truemail::Validate::Regex` | ||
- `Truemail::Validate::Mx` | ||
- `Truemail::Validate::Smtp` | ||
- `Truemail::Validate::Smtp::Request` | ||
- `Truemail::Audit::Base` | ||
- `Truemail::Auditor` | ||
- `Truemail::Audit::Ptr` | ||
- `::Truemail` module | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
- gem description | ||
|
||
## [1.2.1] - 2019-06-27 | ||
### Fixed | ||
- Removed memoization from ```DomainListMatch#whitelisted_domain?``` | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [1.2.0] - 2019-06-26 | ||
### Added | ||
- Configurable option: validation for whitelisted domains only. | ||
|
||
When email domain in whitelist and ```whitelist_validation``` is sets equal to ```true``` validation type will be passed to other validators. Validation of email which not contains whitelisted domain always will return ```false```. | ||
|
||
```ruby | ||
Truemail.configure do |config| | ||
config.verifier_email = '[email protected]' | ||
config.whitelisted_domains = ['white-domain.com'] | ||
config.whitelist_validation = true | ||
end | ||
``` | ||
|
||
**Email has whitelisted domain** | ||
|
||
```ruby | ||
Truemail.validate('[email protected]', with: :regex) | ||
|
||
#<Truemail::Validator:0x000055b8429f3490 | ||
@result=#<struct Truemail::Validator::Result | ||
success=true, | ||
email="[email protected]", | ||
domain=nil, | ||
mail_servers=[], | ||
errors={}, | ||
smtp_debug=nil>, | ||
@validation_type=:regex> | ||
``` | ||
**Email hasn't whitelisted domain** | ||
|
||
```ruby | ||
Truemail.validate('[email protected]', with: :regex) | ||
|
||
#<Truemail::Validator:0x000055b8429f3490 | ||
@result=#<struct Truemail::Validator::Result | ||
success=false, | ||
email="[email protected]", | ||
domain=nil, | ||
mail_servers=[], | ||
errors={}, | ||
smtp_debug=nil>, | ||
@validation_type=:blacklist> | ||
``` | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [1.1.0] - 2019-06-18 | ||
### Added | ||
- Configurable default validation type, [issue details](https://github.com/rubygarage/truemail/issues/48) | ||
|
||
You can predefine default validation type for ```Truemail.validate('[email protected]')``` call without with-parameter. Available validation types: ```:regex```, ```:mx```, ```:smtp```. By default validation type still remains ```:smtp``` | ||
|
||
```ruby | ||
Truemail.configure do |config| | ||
config.verifier_email = '[email protected]' | ||
config.default_validation_type = :mx | ||
end | ||
``` | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [1.0.1] - 2019-06-08 | ||
### Added | ||
- Result validation type marker for domain list match check | ||
|
||
```ruby | ||
Truemail.validate('[email protected]') | ||
|
||
#<Truemail::Validator:0x000055b8429f3490 | ||
@result=#<struct Truemail::Validator::Result | ||
success=true, | ||
email="[email protected]", | ||
domain=nil, | ||
mail_servers=[], | ||
errors={}, | ||
smtp_debug=nil>, | ||
@validation_type=:whitelist> | ||
|
||
Truemail.validate('[email protected]') | ||
|
||
#<Truemail::Validator:0x000023y8429f3493 | ||
@result=#<struct Truemail::Validator::Result | ||
success=false, | ||
email="[email protected]", | ||
domain=nil, | ||
mail_servers=[], | ||
errors={}, | ||
smtp_debug=nil>, | ||
@validation_type=:blacklist> | ||
``` | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [1.0] - 2019-06-04 | ||
### Added | ||
- Feature domain whitelist blacklist. Other validations will not processed even if it was defined in ```validation_type_for```. | ||
|
||
```ruby | ||
Truemail.configure do |config| | ||
# Optional parameter. Validation of email which contains whitelisted domain | ||
# always will return true. | ||
config.whitelisted_domains = ['somedomain1.com', 'somedomain2.com'] | ||
|
||
# Optional parameter. Validation of email which contains whitelisted domain | ||
# always will return false. | ||
config.blacklisted_domains = ['somedomain1.com', 'somedomain2.com'] | ||
end | ||
``` | ||
and | ||
|
||
```ruby | ||
Truemail.configuration.whitelisted_domains = ['somedomain1.com', 'somedomain2.com'] | ||
Truemail.configuration.blacklisted_domains = ['somedomain1.com', 'somedomain2.com'] | ||
``` | ||
|
||
### Removed | ||
- ```:skip``` validation type for ```validation_type_for``` | ||
|
||
### Fixed | ||
- error key in `lower_snake_case` | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.2] - 2019-05-23 | ||
### Added | ||
- skip validation by domain for validation_type_for configuration option: | ||
|
||
```ruby | ||
Truemail.configure do |config| | ||
config.validation_type_for = { 'somedomain.com' => :skip } | ||
end | ||
``` | ||
and | ||
```ruby | ||
Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip } | ||
``` | ||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.1.10] - 2019-05-10 | ||
### Added | ||
- SMTP error body configurable option, [issue details](https://github.com/rubygarage/truemail/issues/19) | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.1.9] - 2019-04-29 | ||
### Fixed | ||
- Empty ptr constant | ||
|
||
## [0.1.8] - 2019-04-29 | ||
### Added | ||
- Reverse trace, [issue details](https://github.com/rubygarage/truemail/issues/18) | ||
|
||
### Fixed | ||
- Behaviour of current host address resolver, [issue details](https://github.com/rubygarage/truemail/issues/18) | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.1.7] - 2019-04-17 | ||
### Added | ||
- PTR record audit, [issue details](https://github.com/rubygarage/truemail/issues/18) | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.1.6] - 2019-04-08 | ||
### Added | ||
- MX gem logic with [RFC 7505](https://tools.ietf.org/html/rfc7505), null MX record supporting, [issue details](https://github.com/rubygarage/truemail/issues/27) | ||
- [Contributing guideline](CONTRIBUTING.md) | ||
|
||
### Fixed | ||
- Multihomed MX records supporting, [issue details](https://github.com/rubygarage/truemail/issues/28) | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.1.5] - 2019-04-05 | ||
### Added | ||
- Retries for ```Truemail::Validate::Smtp``` for cases when one mx server | ||
|
||
### Changed | ||
- ```Truemail::Configuration``` class, please use ```.connection_attempts``` instead ```.retry_count``` | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.1.4] - 2019-04-01 | ||
### Added | ||
- Checking A record presence if ```MX``` and ```CNAME``` records not exist, [issue details](https://github.com/rubygarage/truemail/issues/10) | ||
- Handling of ```CNAME``` records, [issue details](https://github.com/rubygarage/truemail/issues/11) | ||
- Checking A record if ```MX``` and ```CNAME``` records not found, [issue details](https://github.com/rubygarage/truemail/issues/12) | ||
- Supporting of multihomed MX records, conversion host names to ips, [issue details](https://github.com/rubygarage/truemail/issues/17) | ||
- Timeout configuration for DNS resolver, [issue details](https://github.com/rubygarage/truemail/issues/13) | ||
- ```.valid?``` helper | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.1.3] - 2019-03-27 | ||
### Added | ||
- Independent domain name extractor to ```Truemail::Validate::Mx#run``` | ||
|
||
### Fixed | ||
- Default ```REGEX_EMAIL_PATTERN```, [issue details](https://github.com/rubygarage/truemail/issues/7) | ||
* local part of address can't start with a dot or special symbol | ||
* local part of address can include ```+``` symbol | ||
- Default ```REGEX_DOMAIN_PATTERN```, [issue details](https://github.com/rubygarage/truemail/issues/8) | ||
* TLD size increased up to 63 characters | ||
- Case sensitive domain names, [issue details](https://github.com/rubygarage/truemail/issues/9) | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation | ||
|
||
## [0.1.0] - 2019-03-26 | ||
### Added | ||
- 'SMTP safe check' option for cases when SMTP server does not return an exact answer that the email does not exist. | ||
|
||
```ruby | ||
Truemail.configure do |config| | ||
config.verifier_email = '[email protected]' | ||
config.smtp_safe_check = true | ||
end | ||
|
||
Truemail.validate('[email protected]') | ||
|
||
# Successful SMTP validation | ||
=> #<Truemail::Validator:0x0000000002ca2c70 | ||
@result= | ||
#<struct Truemail::Validator::Result | ||
success=true, | ||
email="[email protected]", | ||
domain="example.com", | ||
mail_servers=["mx1.example.com"], | ||
errors={}, | ||
smtp_debug= | ||
[#<Truemail::Validate::Smtp::Request:0x0000000002c95d40 | ||
@configuration= | ||
#<Truemail::Configuration:0x0000000002c95b38 | ||
@connection_timeout=2, | ||
@email_pattern=/regex_pattern/, | ||
@response_timeout=2, | ||
@smtp_safe_check=true, | ||
@validation_type_by_domain={}, | ||
@verifier_domain="example.com", | ||
@verifier_email="[email protected]">, | ||
@email="[email protected]", | ||
@host="mx1.example.com", | ||
@response= | ||
#<struct Truemail::Validate::Smtp::Response | ||
port_opened=true, | ||
connection=false, | ||
helo= | ||
#<Net::SMTP::Response:0x0000000002c934c8 | ||
@status="250", | ||
@string="250 mx1.example.com\n">, | ||
mailfrom=false, | ||
rcptto=nil, | ||
errors={:mailfrom=>"554 5.7.1 Client host blocked\n", :connection=>"server dropped connection after response"}>>,]>, | ||
@validation_type=:smtp> | ||
``` | ||
|
||
### Changed | ||
- `Truemail::VERSION` | ||
- gem documentation |
Oops, something went wrong.