ruby-mailchimp 0.4.2 → 0.5.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.
Files changed (2) hide show
  1. data/lib/mail_chimp.rb +252 -25
  2. metadata +4 -3
data/lib/mail_chimp.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'net/http'
2
2
  require 'net/imap'
3
3
  require 'rubygems'
4
- require 'xmlrpc/client'
4
+ require 'xmlrpc/@client'
5
5
  gem 'actionmailer'
6
6
  require 'action_mailer'
7
7
 
@@ -41,20 +41,31 @@ require 'action_mailer'
41
41
  # bonobo.listUnsubscribe(uid, list_id, "testuser@nowhere.com")
42
42
  #
43
43
  class MailChimp
44
- API_URL = "http://api.mailchimp.com/1.0/"
45
- attr_accessor :email_server, :email_user, :email_password, :client
44
+ API_URL = "http://api.mailchimp.com/1.1/"
45
+ attr_accessor :email_server, :email_user, :email_password, :@client
46
+ @client = nil
46
47
 
47
48
  def login(username, password)
48
- client = XMLRPC::Client.new2(API_URL) if client.nil?
49
- client.call("login", username, password)
49
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
50
+ @client.call("login", username, password)
50
51
  end
51
52
 
52
- def lists(uid)
53
- raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
54
- client = XMLRPC::Client.new2(API_URL) if client.nil?
55
- client.call("lists", uid)
53
+ def apikeyAdd(username, password, new_key)
54
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
55
+ @client.call("apikeyAdd", username, password, new_key)
56
+ end
57
+
58
+ def apikeyExpire(username, password, new_key)
59
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
60
+ @client.call("apikeyExpire", username, password, new_key)
56
61
  end
57
62
 
63
+ def apikeys(username, password, uid, include_expired=false)
64
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
65
+ @client.call("apikeys", username, password, uid, include_expired)
66
+ end
67
+
68
+
58
69
  def getListByName(uid, listname)
59
70
  listinfo = lists(uid)
60
71
  listhash = {}
@@ -70,48 +81,264 @@ class MailChimp
70
81
  return list["id"]
71
82
  end
72
83
 
84
+ def listBatchSubscribe(uid, list_id, email_array, double_optin=true, update_existing=true, replace_interests=true)
85
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
86
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
87
+ @client.call("listBatchSubscribe", uid, list_id, email_array, double_optin, update_existing, replace_interests)
88
+ end
89
+
90
+ def listBatchUnsubscribe(uid, list_id, email_array, delete_member=false, send_goodbye=true, send_notify=true)
91
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
92
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
93
+ @client.call("listBatchSubscribe", uid, list_id, email_array, delete_member, send_goodbye, send_notify)
94
+ end
95
+
96
+ def listInterestGroupAdd(uid, list_id, group_name)
97
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
98
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
99
+ @client.call("listInterestGroupAdd", uid, list_id, group_name)
100
+ end
101
+
102
+ def listInterestGroupDel(uid, list_id, group_name)
103
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
104
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
105
+ @client.call("listInterestGroupDel", uid, list_id, group_name)
106
+ end
107
+
108
+ def listInterestGroups(uid, list_id)
109
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
110
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
111
+ @client.call("listInterests", uid, list_id)
112
+ end
113
+
114
+ def listMemberInfo(uid, list_id, email)
115
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
116
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
117
+ @client.call("listMemberInfo", uid, list_id, email)
118
+ end
119
+
120
+ def listMembers(uid, list_id, status, start=0, limit=100)
121
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
122
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
123
+ @client.call("listMembers", uid, list_id, status, start, limit)
124
+ end
125
+
126
+ def listMergeVarAdd(uid, list_id, merge_tag, description, required=false)
127
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
128
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
129
+ @client.call("listMergeVarAdd", uid, list_id, merge_tag, description, required)
130
+ end
131
+
132
+ def listMergeVarDel(uid, list_id, merge_tag)
133
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
134
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
135
+ @client.call("listMergeVarDel", uid, list_id, merge_tag)
136
+ end
137
+
73
138
  def listMergeVars(uid, list_id)
74
139
  raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
75
- client = XMLRPC::Client.new2(API_URL) if client.nil?
76
- client.call("listMergeVars", uid, list_id)
140
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
141
+ @client.call("listMergeVars", uid, list_id)
77
142
  end
78
143
 
79
144
  def listInterestGroups(uid, list_id)
80
145
  raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
81
- client = XMLRPC::Client.new2(API_URL) if client.nil?
82
- client.call("listInterestGroups", uid, list_id)
146
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
147
+ @client.call("listInterestGroups", uid, list_id)
83
148
  end
84
149
 
85
150
  def listSubscribe(uid, list_id, email, merge_vars, email_type="html", double_optin=true)
86
151
  raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
87
- client = XMLRPC::Client.new2(API_URL) if client.nil?
88
- client.call("listSubscribe", uid, list_id, email, merge_vars, email_type, double_optin)
152
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
153
+ @client.call("listSubscribe", uid, list_id, email, merge_vars, email_type, double_optin)
89
154
  end
90
155
 
91
156
  def listUnsubscribe(uid, list_id, email, delete_member=false, send_goodbye=true, send_notify=true)
92
157
  raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
93
- client = XMLRPC::Client.new2(API_URL) if client.nil?
94
- client.call("listUnsubscribe", uid, list_id, email, delete_member, send_goodbye, send_notify)
158
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
159
+ @client.call("listUnsubscribe", uid, list_id, email, delete_member, send_goodbye, send_notify)
95
160
  end
96
161
 
97
162
  def listUpdateMember(uid, list_id, email, merge_vars, email_type, replace_interests=true)
98
163
  raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
99
- client = XMLRPC::Client.new2(API_URL) if client.nil?
100
- client.call("listUpdateMember", uid, list_id, email, merge_vars, email_type, replace_interests)
164
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
165
+ @client.call("listUpdateMember", uid, list_id, email, merge_vars, email_type, replace_interests)
101
166
  end
102
167
 
103
- def listMembers(uid, list_id, status, start=0, limit=100)
168
+ def lists(uid)
104
169
  raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
105
- client = XMLRPC::Client.new2(API_URL) if client.nil?
106
- client.call("listMembers", uid, list_id, status, start, limit)
170
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
171
+ @client.call("lists", uid)
107
172
  end
108
173
 
109
- def listMemberInfo(uid, list_id, email)
174
+ #######################
175
+ # HELPER METHODS
176
+ #######################
177
+ def generateText(uid, mime_type, content)
178
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
179
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
180
+ @client.call("generateText", uid, mime_type, content)
181
+ end
182
+
183
+ def getAffiliateInfo(uid)
184
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
185
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
186
+ @client.call("generateText", uid, mime_type, content)
187
+ end
188
+
189
+ def inlineCss(uid, html, strip_css=false)
190
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
191
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
192
+ @client.call("inlineCss", uid, html, strip_css)
193
+ end
194
+
195
+ def ping(uid)
196
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
197
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
198
+ @client.call("ping", uid)
199
+ end
200
+
201
+ #######################
202
+ # CAMPAIGN AIM METHODS
203
+ #######################
204
+ def campaignClickDetailAIM(uid, campaign_id, url, start, limit)
205
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
206
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
207
+ @client.call("campaignClickDetailAIM", uid, campaign_id, url, start, limit)
208
+ end
209
+
210
+ def campaignEmailStatsAIM(uid, campaign_id, email_address)
211
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
212
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
213
+ @client.call("campaignEmailStatsAIM", uid, campaign_id, email_address)
214
+ end
215
+
216
+ def campaignEmailStatsAIMAll(uid, campaign_id, start, limit)
110
217
  raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
111
- client = XMLRPC::Client.new2(API_URL) if client.nil?
112
- client.call("listMemberInfo", uid, list_id, email)
218
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
219
+ @client.call("campaignEmailStatsAIMAll", uid, campaign_id, start, limit)
113
220
  end
114
221
 
222
+ def campaignNotOpenedAIM(uid, campaign_id, start, limit)
223
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
224
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
225
+ @client.call("campaignNotOpenedAIM", uid, campaign_id, start, limit)
226
+ end
227
+
228
+ def campaignOpenedAIM(uid, campaign_id, start, limit)
229
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
230
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
231
+ @client.call("campaignOpenedAIM", uid, campaign_id, start, limit)
232
+ end
233
+
234
+
235
+ #######################
236
+ # CAMPAIGN STATS METHODS
237
+ #######################
238
+ def campaignAbuseReports(uid, campaign_id, start, limit)
239
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
240
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
241
+ @client.call("campaignAbuseReports", uid, campaign_id, start, limit)
242
+ end
243
+
244
+ def campaignClickStats(uid, campaign_id)
245
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
246
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
247
+ @client.call("campaignClickStats", uid, campaign_id)
248
+ end
249
+
250
+ def campaignHardBounces(uid, campaign_id, start, limit)
251
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
252
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
253
+ @client.call("campaignHardBounces", uid, campaign_id, start, limit)
254
+ end
255
+
256
+ def campaignSoftBounces(uid, campaign_id, start, limit)
257
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
258
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
259
+ @client.call("campaignSoftBounces", uid, campaign_id, start, limit)
260
+ end
261
+
262
+ def campaignStats(uid, campaign_id)
263
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
264
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
265
+ @client.call("campaignStats", uid, campaign_id)
266
+ end
267
+
268
+ def campaignUnsubscribes(uid, campaign_id, start, limit)
269
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
270
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
271
+ @client.call("campaignUnsubscribes", uid, campaign_id, start, limit)
272
+ end
273
+
274
+
275
+ #######################
276
+ # CAMPAIGN METHODS
277
+ #######################
278
+ def campaignContent(uid, campaign_id)
279
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
280
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
281
+ @client.call("campaignContent", uid, campaign_id)
282
+ end
283
+
284
+ def campaignCreate(uid, campaign_type, options, content, segment_options, type_options)
285
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
286
+ raise StandardError("Unknown campaign type #{campaign_type}") unless %w(regular plaintext absplit rss trans).include?(campaign_type)
287
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
288
+ @client.call("campaignCreate", uid, campaign_type, options, content, segment_options, type_options)
289
+ end
290
+
291
+ def campaignEcommAddOrder(uid, order_info, campaign_id, plugin_info)
292
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
293
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
294
+ @client.call("campaignEcommAddOrder", uid, order_info, campaign_id, plugin_info)
295
+ end
296
+
297
+ def campaignFolders(uid)
298
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
299
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
300
+ @client.call("campaignFolders", uid)
301
+ end
302
+
303
+ def campaignPause(uid, campaign_id)
304
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
305
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
306
+ @client.call("campaignPause", uid, campaign_id)
307
+ end
308
+
309
+ def campaignResume(uid, campaign_id)
310
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
311
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
312
+ @client.call("campaignResume", uid, campaign_id)
313
+ end
314
+
315
+ def campaignSchedule(uid, campaign_id, schedule_time, schedule_time_b)
316
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
317
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
318
+ @client.call("campaignSchedule", uid, campaign_id, schedule_time, schedule_time_b)
319
+ end
320
+
321
+ def campaignSegmentTest(uid, list_id, options)
322
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
323
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
324
+ @client.call("campaignSegmentTest", uid, campaign_id, options)
325
+ end
326
+
327
+ def campaignSendNow(uid, campaign_id)
328
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
329
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
330
+ @client.call("campaignSendNow", uid, campaign_id)
331
+ end
332
+
333
+ def campaignUnschedule(uid, campaign_id)
334
+ raise StandardError("Not Loggged in or invalid UID.") if (uid.nil?)
335
+ @client = XMLRPC::Client.new2(API_URL) if @client.nil?
336
+ @client.call("campaignUnschedule", uid, campaign_id)
337
+ end
338
+
339
+
340
+
341
+
115
342
  #
116
343
  # Stores the inbox attributes to allow connection by check_inbox
117
344
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-mailchimp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - C. G. Brown
@@ -9,11 +9,12 @@ autorequire: mail_chimp
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-21 00:00:00 -04:00
12
+ date: 2008-11-06 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionmailer
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -53,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
54
  requirements: []
54
55
 
55
56
  rubyforge_project:
56
- rubygems_version: 0.9.5
57
+ rubygems_version: 1.2.0
57
58
  signing_key:
58
59
  specification_version: 2
59
60
  summary: Allows programmatic subscription and unsubscription to MailChimp. Requires MailChimp account.