tuktuk 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- require 'tuktuk/tuktuk'
1
+ require './lib/tuktuk/tuktuk'
@@ -0,0 +1,39 @@
1
+ begin
2
+ require 'resolv'
3
+ rescue
4
+ require 'net/dns/resolve'
5
+ end
6
+
7
+ module DNS
8
+
9
+ class << self
10
+
11
+ def get_mx(host)
12
+ if defined?(Resolv::DNS)
13
+ get_using_resolve(host)
14
+ else
15
+ get_using_net_dns(host)
16
+ end
17
+ end
18
+
19
+ def get_using_resolve(host)
20
+ Resolv::DNS.open do |dns|
21
+ if res = dns.getresources(host, Resolv::DNS::Resource::IN::MX)
22
+ sort_mx(res)
23
+ end
24
+ end
25
+ end
26
+
27
+ def get_using_net_dns(host)
28
+ if res = Net::DNS::Resolver.new.mx(host)
29
+ sort_mx(res)
30
+ end
31
+ end
32
+
33
+ def sort_mx(res)
34
+ res.sort {|x,y| x.preference <=> y.preference}.map { |rr| rr.exchange.to_s }
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -1,9 +1,8 @@
1
1
  require 'net/smtp'
2
- require 'net/dns/resolver'
3
2
  require 'dkim'
4
3
  require 'logger'
5
- require 'tuktuk/package'
6
- require 'tuktuk/cache'
4
+ %w(package cache dns).each { |lib| require "./lib/tuktuk/#{lib}" }
5
+ require './lib/tuktuk/version' unless defined?(Tuktuk::VERSION)
7
6
 
8
7
  DEFAULTS = {
9
8
  :retry_sleep => 10,
@@ -81,21 +80,15 @@ module Tuktuk
81
80
 
82
81
  def smtp_servers_for_domain(domain)
83
82
  unless servers = cache.get(domain)
84
- if servers = lookup_smtp_servers(domain) and servers.any?
83
+ if servers = DNS.get_mx(domain) and servers.any?
85
84
  cache.set(domain, servers)
85
+ else
86
+ raise DNSError, "No MX records found for domain #{domain}."
86
87
  end
87
88
  end
88
89
  servers
89
90
  end
90
91
 
91
- def lookup_smtp_servers(domain)
92
- if mx = Net::DNS::Resolver.new.mx(domain)
93
- mx.sort {|x,y| x.preference <=> y.preference}.map {|rr| rr.exchange}
94
- else
95
- raise DNSError, "No MX records found for domain #{domain}."
96
- end
97
- end
98
-
99
92
  def lookup_and_deliver(mail, attempt = 1)
100
93
  raise MissingFieldsError, "No destinations found! You need to pass a :to field." if mail.destinations.empty?
101
94
 
@@ -1,7 +1,7 @@
1
1
  module Tuktuk
2
2
  MAJOR = 0
3
- MINOR = 2
4
- PATCH = 3
3
+ MINOR = 3
4
+ PATCH = 0
5
5
 
6
6
  VERSION = [MAJOR, MINOR, PATCH].join('.')
7
7
  end
metadata CHANGED
@@ -1,139 +1,120 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: tuktuk
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 3
10
- version: 0.2.3
11
6
  platform: ruby
12
- authors:
13
- - "Tom\xC3\xA1s Pollak"
7
+ authors:
8
+ - Tomás Pollak
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-07-13 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-10-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: bundler
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 23
29
- segments:
30
- - 1
31
- - 0
32
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
33
21
  version: 1.0.0
34
22
  type: :development
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: net-dns
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: net-dns
32
+ requirement: !ruby/object:Gem::Requirement
40
33
  none: false
41
- requirements:
42
- - - "="
43
- - !ruby/object:Gem::Version
44
- hash: 5
45
- segments:
46
- - 0
47
- - 6
48
- - 1
34
+ requirements:
35
+ - - '='
36
+ - !ruby/object:Gem::Version
49
37
  version: 0.6.1
50
38
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: mail
54
39
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - '='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.6.1
46
+ - !ruby/object:Gem::Dependency
47
+ name: mail
48
+ requirement: !ruby/object:Gem::Requirement
56
49
  none: false
57
- requirements:
50
+ requirements:
58
51
  - - ~>
59
- - !ruby/object:Gem::Version
60
- hash: 5
61
- segments:
62
- - 2
63
- - 3
64
- version: "2.3"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.3'
65
54
  type: :runtime
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: dkim
69
55
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.3'
62
+ - !ruby/object:Gem::Dependency
63
+ name: dkim
64
+ requirement: !ruby/object:Gem::Requirement
71
65
  none: false
72
- requirements:
66
+ requirements:
73
67
  - - ~>
74
- - !ruby/object:Gem::Version
75
- hash: 27
76
- segments:
77
- - 0
78
- - 0
79
- - 2
68
+ - !ruby/object:Gem::Version
80
69
  version: 0.0.2
81
70
  type: :runtime
82
- version_requirements: *id004
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.0.2
83
78
  description: Easy way of sending DKIM-signed emails from Ruby, no dependencies needed.
84
- email:
79
+ email:
85
80
  - tomas@forkhq.com
86
81
  executables: []
87
-
88
82
  extensions: []
89
-
90
83
  extra_rdoc_files: []
91
-
92
- files:
84
+ files:
93
85
  - .gitignore
94
86
  - Gemfile
95
87
  - README.md
96
88
  - Rakefile
97
89
  - lib/tuktuk.rb
98
90
  - lib/tuktuk/cache.rb
91
+ - lib/tuktuk/dns.rb
99
92
  - lib/tuktuk/package.rb
100
93
  - lib/tuktuk/tuktuk.rb
101
94
  - lib/tuktuk/version.rb
102
95
  - tuktuk.gemspec
103
96
  homepage: https://github.com/tomas/tuktuk
104
97
  licenses: []
105
-
106
98
  post_install_message:
107
99
  rdoc_options: []
108
-
109
- require_paths:
100
+ require_paths:
110
101
  - lib
111
- required_ruby_version: !ruby/object:Gem::Requirement
102
+ required_ruby_version: !ruby/object:Gem::Requirement
112
103
  none: false
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- hash: 3
117
- segments:
118
- - 0
119
- version: "0"
120
- required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
109
  none: false
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- hash: 23
126
- segments:
127
- - 1
128
- - 3
129
- - 6
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
130
113
  version: 1.3.6
131
114
  requirements: []
132
-
133
115
  rubyforge_project: tuktuk
134
- rubygems_version: 1.8.15
116
+ rubygems_version: 1.8.23
135
117
  signing_key:
136
118
  specification_version: 3
137
119
  summary: SMTP client for Ruby with DKIM support.
138
120
  test_files: []
139
-