mayaml 3.0.1 → 4.0.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 +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +2 -0
- data/bin/mayaml-check +1 -1
- data/lib/mayaml/error.rb +1 -1
- data/lib/mayaml/mail_account/builder.rb +5 -2
- data/lib/mayaml/mail_account/default_flag_validator.rb +14 -9
- data/lib/mayaml/mail_account/error.rb +1 -2
- data/lib/mayaml/mail_account/mailboxes_validator.rb +24 -13
- data/lib/mayaml/mail_account/port_validator.rb +15 -9
- data/lib/mayaml/mail_account/required_attributes_validator.rb +6 -2
- data/lib/mayaml/mail_account/smtp_protocol_validator.rb +22 -10
- data/lib/mayaml/mail_account/type_validator.rb +22 -9
- data/lib/mayaml/mail_account.rb +3 -3
- data/lib/mayaml/parser.rb +1 -1
- data/lib/mayaml/version.rb +2 -2
- data/lib/mayaml.rb +2 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74e3d6707b071d1f972bfb024d43eac1f5a1ca54
|
4
|
+
data.tar.gz: 088d0075bbb947df082e5477bf9ea97528511a5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b567d121147740c830bb684ec926607b35275bbc8ae328c6932fbfe56cbdb8e4e4a72363742861fc6ab8f4eaa92454a6f2da75ac81dbbfacb3740fa82d405c7
|
7
|
+
data.tar.gz: b5a057671e202871bfd38de08745055186b9653e1daa926dba0ef71436b7b2723c2a4c2f5ab1758605144fdee944eeec3c439c4ba8f4d5db12c5d19d50d8894c
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -47,6 +47,7 @@ Mayaml.accounts_from_file(yaml_path).each { |account| ... }
|
|
47
47
|
smtp_protocol: smtps
|
48
48
|
smtp_port: 587
|
49
49
|
smtp_authenticator: login
|
50
|
+
smtp_server: test.mailserver.com
|
50
51
|
```
|
51
52
|
|
52
53
|
#### Required attributes
|
@@ -61,6 +62,7 @@ Mayaml.accounts_from_file(yaml_path).each { |account| ... }
|
|
61
62
|
* `smtp_protocol` [smpt | smtps]
|
62
63
|
* `smtp_port`
|
63
64
|
* `smtp_authenticator`
|
65
|
+
* `smtp_server`
|
64
66
|
|
65
67
|
#### Default attributes
|
66
68
|
|
data/bin/mayaml-check
CHANGED
data/lib/mayaml/error.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
# Copyright (C)
|
3
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
4
|
#
|
6
5
|
# This file is part of Mayaml.
|
7
6
|
#
|
@@ -101,6 +100,10 @@ module Mayaml
|
|
101
100
|
@account.smtp_authenticator = str
|
102
101
|
end
|
103
102
|
|
103
|
+
def smtp_server(str)
|
104
|
+
@account.smtp_server = str
|
105
|
+
end
|
106
|
+
|
104
107
|
def account
|
105
108
|
obj = valid_account
|
106
109
|
@account = ::Mayaml::MailAccount.new
|
@@ -1,7 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
# Copyright (C)
|
3
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
4
|
#
|
6
5
|
# This file is part of Mayaml.
|
7
6
|
#
|
@@ -21,17 +20,23 @@
|
|
21
20
|
module Mayaml
|
22
21
|
class MailAccount
|
23
22
|
class DefaultFlagValidator
|
24
|
-
attr_reader :errors
|
25
|
-
|
26
23
|
def initialize(flag)
|
27
|
-
@
|
28
|
-
|
29
|
-
@errors << "Flag need to be 'true' or 'false'"
|
30
|
-
end
|
24
|
+
@flag = flag
|
25
|
+
errors << "Flag need to be 'true' or 'false'" unless valid_flag?
|
31
26
|
end
|
32
27
|
|
33
28
|
def valid?
|
34
|
-
|
29
|
+
errors.empty?
|
30
|
+
end
|
31
|
+
|
32
|
+
def errors
|
33
|
+
@errors ||= []
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def valid_flag?
|
39
|
+
[true, false, "true", "false"].include? @flag
|
35
40
|
end
|
36
41
|
end
|
37
42
|
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
# Copyright (C)
|
3
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
4
|
#
|
6
5
|
# This file is part of Mayaml.
|
7
6
|
#
|
@@ -21,21 +20,33 @@
|
|
21
20
|
module Mayaml
|
22
21
|
class MailAccount
|
23
22
|
class MailboxesValidator
|
24
|
-
attr_reader :errors
|
25
|
-
|
26
23
|
def initialize(mailboxes)
|
27
|
-
@
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
if mailboxes.instance_of?(Array) && !mailboxes.all? { |box| box.instance_of? String }
|
33
|
-
@errors << "Mailboxes should all be strings."
|
34
|
-
end
|
24
|
+
@mailboxes = mailboxes
|
25
|
+
errors << "Mailboxes should be array." unless right_mailboxes_type?
|
26
|
+
errors << "Mailboxes can not be empty." unless mailboxes_exists?
|
27
|
+
errors << "Mailboxes should all be strings." unless right_mailboxes_content?
|
35
28
|
end
|
36
29
|
|
37
30
|
def valid?
|
38
|
-
|
31
|
+
errors.empty?
|
32
|
+
end
|
33
|
+
|
34
|
+
def errors
|
35
|
+
@errors ||= []
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def right_mailboxes_type?
|
41
|
+
@mailboxes.instance_of? Array
|
42
|
+
end
|
43
|
+
|
44
|
+
def mailboxes_exists?
|
45
|
+
right_mailboxes_type? && !@mailboxes.empty?
|
46
|
+
end
|
47
|
+
|
48
|
+
def right_mailboxes_content?
|
49
|
+
right_mailboxes_type? && @mailboxes.all? { |box| box.instance_of? String }
|
39
50
|
end
|
40
51
|
end
|
41
52
|
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
# Copyright (C)
|
3
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
4
|
#
|
6
5
|
# This file is part of Mayaml.
|
7
6
|
#
|
@@ -21,17 +20,24 @@
|
|
21
20
|
module Mayaml
|
22
21
|
class MailAccount
|
23
22
|
class PortValidator
|
24
|
-
attr_reader :errors
|
25
|
-
|
26
23
|
def initialize(port)
|
27
|
-
|
28
|
-
port
|
29
|
-
|
30
|
-
@errors << "Mail account port could not be negative." if port < 0
|
24
|
+
port = conver_port(port)
|
25
|
+
errors << "Mail account port is invalid." if port.zero?
|
26
|
+
errors << "Mail account port could not be negative." if port.negative?
|
31
27
|
end
|
32
28
|
|
33
29
|
def valid?
|
34
|
-
|
30
|
+
errors.empty?
|
31
|
+
end
|
32
|
+
|
33
|
+
def errors
|
34
|
+
@errors ||= []
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def conver_port(port)
|
40
|
+
port.respond_to?(:to_i) ? port.to_i : 0
|
35
41
|
end
|
36
42
|
end
|
37
43
|
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
# Copyright (C)
|
3
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
4
|
#
|
6
5
|
# This file is part of Mayaml.
|
7
6
|
#
|
@@ -45,6 +44,7 @@ module Mayaml
|
|
45
44
|
check_missing_smtp_protocol
|
46
45
|
check_missing_smtp_port
|
47
46
|
check_missing_smtp_authenticator
|
47
|
+
check_missing_smtp_server
|
48
48
|
end
|
49
49
|
|
50
50
|
def check_missing_name
|
@@ -82,6 +82,10 @@ module Mayaml
|
|
82
82
|
def check_missing_smtp_authenticator
|
83
83
|
@errors << "Missing smtp_authenticator attribute." if @mail_account.smtp_authenticator.nil?
|
84
84
|
end
|
85
|
+
|
86
|
+
def check_missing_smtp_server
|
87
|
+
@errors << "Missing smtp_server attribute." if @mail_account.smtp_server.nil?
|
88
|
+
end
|
85
89
|
end
|
86
90
|
end
|
87
91
|
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
# Copyright (C)
|
3
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
4
|
#
|
6
5
|
# This file is part of Mayaml.
|
7
6
|
#
|
@@ -21,20 +20,33 @@
|
|
21
20
|
module Mayaml
|
22
21
|
class MailAccount
|
23
22
|
class SmtpProtocolValidator
|
24
|
-
attr_reader :errors
|
25
23
|
VALID_TYPES = [:smtp, :smtps].freeze
|
26
24
|
|
27
25
|
def initialize(type)
|
28
|
-
@
|
29
|
-
|
30
|
-
unless VALID_TYPES.include?(type)
|
31
|
-
types = VALID_TYPES.join(", ")
|
32
|
-
@errors << "Mail account smtp_protocol is invalid. Allowed types: #{types}."
|
33
|
-
end
|
26
|
+
@type = convert_type(type)
|
27
|
+
errors << "Mail account smtp_protocol is invalid. Allowed: #{types}." unless valid_type?
|
34
28
|
end
|
35
29
|
|
36
30
|
def valid?
|
37
|
-
|
31
|
+
errors.empty?
|
32
|
+
end
|
33
|
+
|
34
|
+
def errors
|
35
|
+
@errors ||= []
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def convert_type(type)
|
41
|
+
type.to_sym if type.respond_to? :to_sym
|
42
|
+
end
|
43
|
+
|
44
|
+
def valid_type?
|
45
|
+
VALID_TYPES.include? @type
|
46
|
+
end
|
47
|
+
|
48
|
+
def types
|
49
|
+
VALID_TYPES.join(", ")
|
38
50
|
end
|
39
51
|
end
|
40
52
|
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
# Copyright (C)
|
3
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
4
|
#
|
6
5
|
# This file is part of Mayaml.
|
7
6
|
#
|
@@ -21,19 +20,33 @@
|
|
21
20
|
module Mayaml
|
22
21
|
class MailAccount
|
23
22
|
class TypeValidator
|
24
|
-
attr_reader :errors
|
25
23
|
VALID_TYPES = [:imap, :pop3, :imapssl, :pop3ssl].freeze
|
26
24
|
|
27
25
|
def initialize(type)
|
28
|
-
@
|
29
|
-
type
|
30
|
-
unless VALID_TYPES.include?(type)
|
31
|
-
@errors << "Mail account type is invalid. Allowed types: #{VALID_TYPES.join(", ")}."
|
32
|
-
end
|
26
|
+
@type = convert_type(type)
|
27
|
+
errors << "Mail account type is invalid. Allowed types: #{valid_types}." unless valid_type?
|
33
28
|
end
|
34
29
|
|
35
30
|
def valid?
|
36
|
-
|
31
|
+
errors.empty?
|
32
|
+
end
|
33
|
+
|
34
|
+
def errors
|
35
|
+
@errors ||= []
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def convert_type(type)
|
41
|
+
type.to_sym if type.respond_to? :to_sym
|
42
|
+
end
|
43
|
+
|
44
|
+
def valid_type?
|
45
|
+
VALID_TYPES.include? @type
|
46
|
+
end
|
47
|
+
|
48
|
+
def valid_types
|
49
|
+
VALID_TYPES.join(", ")
|
37
50
|
end
|
38
51
|
end
|
39
52
|
end
|
data/lib/mayaml/mail_account.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
# Copyright (C)
|
4
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
5
|
#
|
6
6
|
# This file is part of Mayaml.
|
7
7
|
#
|
@@ -21,7 +21,7 @@
|
|
21
21
|
module Mayaml
|
22
22
|
class MailAccount
|
23
23
|
attr_accessor :name, :default, :realname, :type, :server, :port, :user, :pass, \
|
24
|
-
:mailboxes, :smtp_protocol, :smtp_port, :smtp_authenticator
|
24
|
+
:mailboxes, :smtp_protocol, :smtp_port, :smtp_authenticator, :smtp_server
|
25
25
|
|
26
26
|
def initialize
|
27
27
|
set_default_flag
|
@@ -41,7 +41,7 @@ module Mayaml
|
|
41
41
|
<<-DESC
|
42
42
|
Account#{default_mark}: #{@name}<#{@realname}> | user: #{@user}:#{@pass}
|
43
43
|
#{@type} - #{@server}:#{@port} [#{@mailboxes.join(",")}]
|
44
|
-
#{@smtp_protocol} - #{@
|
44
|
+
#{@smtp_protocol} - #{@smtp_server}:#{@smtp_port} [auth: #{@smtp_authenticator}]
|
45
45
|
DESC
|
46
46
|
end
|
47
47
|
end
|
data/lib/mayaml/parser.rb
CHANGED
data/lib/mayaml/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
# Copyright (C)
|
4
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
5
|
#
|
6
6
|
# This file is part of Mayaml.
|
7
7
|
#
|
@@ -19,5 +19,5 @@
|
|
19
19
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
20
20
|
|
21
21
|
module Mayaml
|
22
|
-
VERSION = "
|
22
|
+
VERSION = "4.0.0"
|
23
23
|
end
|
data/lib/mayaml.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
# Copyright (C)
|
4
|
+
# Copyright (C) 2017 Szymon Kopciewski
|
5
5
|
#
|
6
6
|
# This file is part of Mayaml.
|
7
7
|
#
|
@@ -44,6 +44,7 @@ module Mayaml
|
|
44
44
|
builder.smtp_protocol raw_account.fetch("smtp_protocol")
|
45
45
|
builder.smtp_port raw_account.fetch("smtp_port")
|
46
46
|
builder.smtp_authenticator raw_account.fetch("smtp_authenticator")
|
47
|
+
builder.smtp_server raw_account.fetch("smtp_server")
|
47
48
|
end
|
48
49
|
end
|
49
50
|
end
|