mail_jack 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/lib/mail_jack.rb CHANGED
@@ -56,6 +56,8 @@ module MailJack
56
56
 
57
57
  # return configuration if already configured
58
58
  return @@config if defined?(@@config) and @@config.kind_of?(Config)
59
+
60
+ raise ArgumentError, "you must configure MailJack to use it. call MailJack.config{|config| ...} from an initializer" unless block_given?
59
61
 
60
62
  # yield configuration
61
63
  @@config = Config.new
@@ -64,7 +66,7 @@ module MailJack
64
66
  # dynamically define the accessors onto Mail::Message
65
67
  # so we can assign them later in the Interceptor
66
68
  Mail::Message.class_eval do
67
- attr_accessor *@@config.trackables.keys
69
+ attr_accessor *@@config.trackables.keys if @@config.trackables
68
70
  end
69
71
 
70
72
  # include the module that decorates(ie monkey patches)
@@ -76,8 +78,13 @@ module MailJack
76
78
  # register the interceptor
77
79
  Mail.register_interceptor(MailJack::Interceptor)
78
80
 
81
+ @@config.configured = true
79
82
  end
80
83
 
84
+ def self.configured?
85
+ defined?(@@config) and @@config.configured?
86
+ end
87
+
81
88
  # Fetch attributes gets the dynamically defined attributes
82
89
  # off the object passed in, the object is ActionMailer::Base instance
83
90
  def self.fetch_attributes(mailer)
@@ -1,6 +1,6 @@
1
1
  module MailJack
2
2
  class Config
3
- attr_accessor :mailers, :href_filter, :trackables, :encode_to
3
+ attr_accessor :mailers, :href_filter, :trackables, :encode_to, :configured
4
4
  def trackable
5
5
 
6
6
  # use OpenStruct for sugary assignment
@@ -15,5 +15,8 @@ module MailJack
15
15
  self.encode_to.present?
16
16
  end
17
17
 
18
+ def configured?
19
+ @configured
20
+ end
18
21
  end
19
22
  end
@@ -5,6 +5,7 @@ module MailJack
5
5
  end
6
6
 
7
7
  def call(env)
8
+ return @app.call(env) unless MailJack.configured?
8
9
  decode_params(env) if MailJack.config.enable_encoding?
9
10
  @status, @headers, @response = @app.call(env)
10
11
  [@status, @headers, @response]
@@ -17,13 +18,14 @@ module MailJack
17
18
  params = {'QUERY_STRING' => env["QUERY_STRING"], 'REQUEST_URI' => env["REQUEST_URI"].split("?")[1]}
18
19
 
19
20
  params.each do |key, value|
20
- next unless value.present? and value.match(/#{param_name}\=/)
21
-
21
+ next unless value.present?
22
22
  hash = Rack::Utils.parse_query(value)
23
+ # next unless hash.has_key?(param_name.to_s)
24
+
23
25
  encoded = hash.delete(param_name.to_s)
24
- decoded = Base64.decode64(encoded)
26
+ decoded = Base64.decode64(encoded) if encoded
25
27
 
26
- env[key].gsub!("#{param_name}=#{encoded}", decoded)
28
+ env[key].gsub!("#{param_name}=#{encoded}", decoded) if decoded
27
29
  end
28
30
  end
29
31
  end
@@ -1,4 +1,4 @@
1
1
  module MailJack
2
2
  # The version of the gem
3
- VERSION = '0.2.4'.freeze unless defined?(::MailJack::VERSION)
3
+ VERSION = '0.2.5'.freeze unless defined?(::MailJack::VERSION)
4
4
  end
metadata CHANGED
@@ -1,23 +1,28 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mail_jack
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.4
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.2.5
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Peter Philips
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-18 00:00:00.000000000 Z
12
+
13
+ date: 2013-06-26 00:00:00 Z
13
14
  dependencies: []
15
+
14
16
  description: Autogenerate query parameters to links in emails to track click throughs
15
- email:
17
+ email:
16
18
  - pete@p373.net
17
19
  executables: []
20
+
18
21
  extensions: []
22
+
19
23
  extra_rdoc_files: []
20
- files:
24
+
25
+ files:
21
26
  - .document
22
27
  - .gitignore
23
28
  - Gemfile
@@ -34,26 +39,30 @@ files:
34
39
  - mail_jack.gemspec
35
40
  homepage: https://github.com/synth/mail_jack
36
41
  licenses: []
42
+
37
43
  post_install_message:
38
44
  rdoc_options: []
39
- require_paths:
45
+
46
+ require_paths:
40
47
  - lib
41
- required_ruby_version: !ruby/object:Gem::Requirement
48
+ required_ruby_version: !ruby/object:Gem::Requirement
42
49
  none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
55
  none: false
49
- requirements:
50
- - - ! '>='
51
- - !ruby/object:Gem::Version
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
52
59
  version: 1.3.6
53
60
  requirements: []
61
+
54
62
  rubyforge_project:
55
- rubygems_version: 1.8.25
63
+ rubygems_version: 1.8.19
56
64
  signing_key:
57
65
  specification_version: 3
58
66
  summary: Autogenerate query parameters to links in emails to track click throughs
59
67
  test_files: []
68
+