redsquirrel-mad_mimi_mailer 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/mad_mimi_mailer.rb +52 -16
  2. metadata +2 -2
@@ -3,26 +3,45 @@ require "net/http"
3
3
  require "net/https"
4
4
 
5
5
  class MadMimiMailer < ActionMailer::Base
6
- VERSION = '0.0.1'
6
+ VERSION = '0.0.5'
7
7
  SINGLE_SEND_URL = 'https://madmimi.com/mailer'
8
8
 
9
9
  @@api_settings = {}
10
10
  cattr_accessor :api_settings
11
11
 
12
+ # Custom Mailer attributes
13
+
12
14
  def promotion(promotion = nil)
13
- if promotion.present?
15
+ if promotion.nil?
16
+ @promotion
17
+ else
14
18
  @promotion = promotion
19
+ end
20
+ end
21
+
22
+ def use_erb(use_erb = nil)
23
+ if use_erb.nil?
24
+ @use_erb
15
25
  else
16
- @promotion
26
+ @use_erb = use_erb
27
+ end
28
+ end
29
+
30
+ def hidden(hidden = nil)
31
+ if hidden.nil?
32
+ @hidden
33
+ else
34
+ @hidden = hidden
17
35
  end
18
36
  end
19
37
 
38
+ # Class methods
39
+
20
40
  class << self
21
41
 
22
42
  def method_missing(method_symbol, *parameters)
23
43
  if method_symbol.id2name.match(/^deliver_(mimi_[_a-z]\w*)/)
24
44
  deliver_mimi_mail($1, *parameters)
25
-
26
45
  else
27
46
  super
28
47
  end
@@ -31,7 +50,11 @@ class MadMimiMailer < ActionMailer::Base
31
50
  def deliver_mimi_mail(method, *parameters)
32
51
  mail = new
33
52
  mail.__send__(method, *parameters)
34
-
53
+
54
+ if mail.use_erb
55
+ mail.create!(method, *parameters)
56
+ end
57
+
35
58
  return unless perform_deliveries
36
59
 
37
60
  if delivery_method == :test
@@ -42,18 +65,29 @@ class MadMimiMailer < ActionMailer::Base
42
65
  end
43
66
 
44
67
  def call_api!(mail, method)
68
+ params = {
69
+ 'username' => api_settings[:username],
70
+ 'api_key' => api_settings[:api_key],
71
+
72
+ 'promotion_name' => mail.promotion || method.to_s.sub(/^mimi_/, ''),
73
+ 'recipients' => serialize(mail.recipients),
74
+ 'subject' => mail.subject,
75
+ 'bcc' => serialize(mail.bcc),
76
+ 'from' => mail.from,
77
+ 'hidden' => serialize(mail.hidden)
78
+ }
79
+
80
+ if mail.use_erb
81
+ unless mail.body.include?("[[peek_image]]")
82
+ raise ValidationError, "You must include a web beacon in your Mimi email: [[peek_image]]"
83
+ end
84
+ params['raw_html'] = mail.body
85
+ else
86
+ params['body'] = mail.body.to_yaml
87
+ end
88
+
45
89
  response = post_request do |request|
46
- request.set_form_data(
47
- 'username' => api_settings[:username],
48
- 'api_key' => api_settings[:api_key],
49
-
50
- 'promotion_name' => mail.promotion || method.to_s.sub(/^mimi_/, ''),
51
- 'recipients' => serialize(mail.recipients),
52
- 'subject' => mail.subject,
53
- 'bcc' => serialize(mail.bcc),
54
- 'from' => mail.from,
55
- 'body' => mail.body.to_yaml
56
- )
90
+ request.set_form_data(params)
57
91
  end
58
92
 
59
93
  case response
@@ -88,4 +122,6 @@ class MadMimiMailer < ActionMailer::Base
88
122
  end
89
123
  end
90
124
  end
125
+
126
+ class ValidationError < StandardError; end
91
127
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redsquirrel-mad_mimi_mailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Hoover
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-28 00:00:00 -07:00
12
+ date: 2009-09-15 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15