mad_mimi_two 0.5.9 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +5 -0
- data/bin/check_mimi_status.rb +38 -0
- data/lib/mad_mimi_two/mad_mimi_mailer.rb +32 -1
- data/test/test_mad_mimi_two.rb +16 -1
- metadata +6 -4
data/README.rdoc
CHANGED
@@ -108,6 +108,11 @@ warning: peer certificate won't be verified in this SSL session
|
|
108
108
|
|
109
109
|
returns a hash of promotions on your account
|
110
110
|
|
111
|
+
== Add email address to list (eg for drip lists)
|
112
|
+
|
113
|
+
t=MadMimiTwo::MadMimiMessage.new
|
114
|
+
r=t.add_email('driplisttest',"ttt@email2.com")
|
115
|
+
|
111
116
|
== LICENSE:
|
112
117
|
|
113
118
|
(The MIT License)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
# == Synopsis
|
3
|
+
# send mad mimi email
|
4
|
+
# == Usage
|
5
|
+
# send_mimi.rb -e email -p promotion -k key -u mimiusername -h hashvalues -s subject
|
6
|
+
# == Author
|
7
|
+
# Scott Sproule --- Ficonab.com (scott.sproule@ficonab.com)
|
8
|
+
# == Example
|
9
|
+
# send_mimi.rb -k xxxx -u xxxx@estormtech.com -s ID
|
10
|
+
# == Copyright
|
11
|
+
# Copyright (c) 2010 Ficonab Pte. Ltd.
|
12
|
+
# See license for license details
|
13
|
+
require 'yaml'
|
14
|
+
require 'rubygems'
|
15
|
+
gem 'mad_mimi_two'
|
16
|
+
require 'mad_mimi_two'
|
17
|
+
require 'optparse'
|
18
|
+
require 'rdoc/usage'
|
19
|
+
#require 'java' if RUBY_PLATFORM =~ /java/
|
20
|
+
# start the processing
|
21
|
+
arg_hash=MadMimiTwo::Options.parse_options(ARGV)
|
22
|
+
RDoc::usage if arg_hash[:help]==true
|
23
|
+
require 'pp'
|
24
|
+
|
25
|
+
options = arg_hash
|
26
|
+
# set up variables using hash
|
27
|
+
# note the strange spacing needed to put the ' in the string
|
28
|
+
MadMimiTwo::MadMimiMessage.api_settings = {
|
29
|
+
:username => options[:username].to_s,
|
30
|
+
:api_key => options[:key].to_s
|
31
|
+
}
|
32
|
+
|
33
|
+
t=MadMimiTwo::MadMimiMessage.new
|
34
|
+
r= t.check_status(options[:subject])
|
35
|
+
puts "Status #{r}"
|
36
|
+
# t.email_placeholders(thash)
|
37
|
+
# r=t.deliver_mimi_message
|
38
|
+
# puts r
|
@@ -14,6 +14,7 @@ end
|
|
14
14
|
module MadMimiTwo
|
15
15
|
module MadMimiMailer
|
16
16
|
API_URL = 'https://api.madmimi.com/'
|
17
|
+
API_URL_HTTP = 'http://api.madmimi.com/'
|
17
18
|
SINGLE_SEND_URL = "#{API_URL}mailer"
|
18
19
|
|
19
20
|
def self.included(base)
|
@@ -25,14 +26,34 @@ module MadMimiTwo
|
|
25
26
|
client= HTTPClient.new
|
26
27
|
res=client.get_content(url)
|
27
28
|
rescue HTTPClient::BadResponseError
|
28
|
-
res="problem retrieving status"
|
29
|
+
res="problem retrieving status: #{res.inspect}"
|
29
30
|
end
|
30
31
|
res
|
31
32
|
end
|
33
|
+
def post_cmd(url,body)
|
34
|
+
begin
|
35
|
+
client= HTTPClient.new
|
36
|
+
res=client.post_content(url,body)
|
37
|
+
rescue HTTPClient::BadResponseError
|
38
|
+
res="problem posting status: #{res.inspect}"
|
39
|
+
end
|
40
|
+
res
|
41
|
+
end
|
32
42
|
def get_promotions_xml
|
33
43
|
url="#{API_URL}promotions.xml?#{MadMimiTwo::MadMimiMessage.api_settings.madmimiurlencode}"
|
34
44
|
xml_list=send_cmd(url)
|
35
45
|
end
|
46
|
+
def get_audience_xml
|
47
|
+
url="#{API_URL_HTTP}audience_lists/lists.xml?#{MadMimiTwo::MadMimiMessage.api_settings.madmimiurlencode}"
|
48
|
+
#puts url
|
49
|
+
xml_list=send_cmd(url)
|
50
|
+
end
|
51
|
+
def add_email(list,email)
|
52
|
+
url="#{API_URL_HTTP}audience_lists/#{list}/add?email=#{email}&#{MadMimiTwo::MadMimiMessage.api_settings.madmimiurlencode}"
|
53
|
+
#puts url
|
54
|
+
xml_list=post_cmd(url,"")
|
55
|
+
end
|
56
|
+
#/audience_lists/{name_of_list}/add?email={email_to_add}
|
36
57
|
# get a hash of promotion names on mad mimi. Not certain why mad mimi returns mailing details in this call but we throw it away.
|
37
58
|
def get_promotions
|
38
59
|
xml_list=get_promotions_xml
|
@@ -43,9 +64,19 @@ module MadMimiTwo
|
|
43
64
|
end
|
44
65
|
res
|
45
66
|
end
|
67
|
+
def get_lists
|
68
|
+
xml_list=get_audience_xml
|
69
|
+
res={}
|
70
|
+
reader = Nokogiri::XML::Reader(xml_list)
|
71
|
+
reader.each do |node|
|
72
|
+
res=res.merge({ node.attribute('name') => node.attribute('id')}) # eventually will want hash
|
73
|
+
end
|
74
|
+
res
|
75
|
+
end
|
46
76
|
# check the status of a sent email
|
47
77
|
def check_status(msg_id)
|
48
78
|
url = "#{SINGLE_SEND_URL}s/status/#{msg_id}?#{MadMimiTwo::MadMimiMessage.api_settings.madmimiurlencode}"
|
79
|
+
#puts url
|
49
80
|
send_cmd(url)
|
50
81
|
end
|
51
82
|
|
data/test/test_mad_mimi_two.rb
CHANGED
@@ -106,12 +106,27 @@ class TestMadMimiTwo < Test::Unit::TestCase
|
|
106
106
|
assert r=='sent', "message response not correct: #{r}"
|
107
107
|
|
108
108
|
end
|
109
|
+
def test_email_address
|
110
|
+
t=MadMimiTwo::MadMimiMessage.new
|
111
|
+
r=t.add_email('driplisttest',"ttt@email2.com")
|
112
|
+
puts "add email list: 'r is ' #{r}"
|
113
|
+
## assert r.key?('testlist'), "does not include testlist #{r}"
|
114
|
+
#this MAY NOT BE IN YOUR promotions list
|
115
|
+
end
|
116
|
+
def test_get_audience_list
|
117
|
+
t=MadMimiTwo::MadMimiMessage.new
|
118
|
+
r=t.get_lists()
|
119
|
+
puts "audience list: 'r is ' #{r}"
|
120
|
+
assert r.class==Hash, "response is not Hash r is: #{r} #{r.class}"
|
121
|
+
assert r.key?('testlist'), "does not include testlist #{r}"
|
122
|
+
#this MAY NOT BE IN YOUR promotions list
|
123
|
+
end
|
109
124
|
def test_get_promotions
|
110
125
|
t=MadMimiTwo::MadMimiMessage.new
|
111
126
|
r=t.get_promotions()
|
112
127
|
puts "'r is ' #{r}"
|
113
128
|
assert r.class==Hash, "response is not Hash r is: #{r} #{r.class}"
|
114
|
-
|
129
|
+
assert r.key?('new_CRM'), "does not include new_CRM #{r}" #this MAY NOT BE IN YOUR promotions list
|
115
130
|
|
116
131
|
end
|
117
132
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mad_mimi_two
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 6
|
9
|
+
- 1
|
10
|
+
version: 0.6.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- scott sproule
|
@@ -55,6 +55,7 @@ email:
|
|
55
55
|
- scott.sproule@ficonab.com
|
56
56
|
executables:
|
57
57
|
- send_mimi.rb
|
58
|
+
- check_mimi_status.rb
|
58
59
|
extensions: []
|
59
60
|
|
60
61
|
extra_rdoc_files:
|
@@ -77,6 +78,7 @@ files:
|
|
77
78
|
- test/test_helper.rb
|
78
79
|
- test/test_mad_mimi_two.rb
|
79
80
|
- bin/send_mimi.rb
|
81
|
+
- bin/check_mimi_status.rb
|
80
82
|
has_rdoc: true
|
81
83
|
homepage: http://github.com/semdinsp/mad_mimi_two
|
82
84
|
licenses: []
|