messagebus_ruby_api 0.4.4 → 0.4.7

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.
data/README.rdoc CHANGED
@@ -58,6 +58,15 @@ Status messages will be in the following form:
58
58
  ]
59
59
  }
60
60
  If there are failures you will get 400 or 500 status codes as well as error messages
61
+ ==Mailing List Management
62
+ Calls take a mailing list key which can be found on the mailing list management page on messagebus.com
63
+ Responses are of the form
64
+ {:statusMessage => "OK"}
65
+ ===Adding to a mailing list
66
+ merge_fields={"%EMAIL%"=>"a@example.com","%PARAM1%"=>"value 1"}
67
+ client.add_to_mailing_list(mailing_list_key, merge_fields)
68
+ ===Removing from a mailing list
69
+ client.remove_from_mailing_list(mailing_list_key, "a@example.com")
61
70
  ==Viewing Error Reports
62
71
  client.error_report
63
72
  results will be in the following form:
@@ -10,9 +10,7 @@ module MessagebusRubyApi
10
10
  def initialize(api_key, endpoint_url_string = DEFAULT_API_ENDPOINT_STRING)
11
11
  @api_key = verified_reasonable_api_key(api_key)
12
12
  @endpoint_url = URI.parse(endpoint_url_string)
13
- @endpoint_send_path = "/api/v2/emails/send"
14
- @endpoint_error_report_path = "/api/v2/emails/error_report"
15
- @endpoint_blocked_emails_path = "/api/v2/blocked_emails"
13
+ @end_point_v2_base_path="/api/v2/"
16
14
  @http = Net::HTTP.new(@endpoint_url.host, @endpoint_url.port)
17
15
  @http.use_ssl = true
18
16
 
@@ -31,7 +29,7 @@ module MessagebusRubyApi
31
29
  def add_message(email_options)
32
30
  @email_buffer<<email_options
33
31
  if (@email_buffer.size >= @email_buffer_size)
34
- self.flush
32
+ flush
35
33
  return 0
36
34
  else
37
35
  return @email_buffer.size
@@ -43,31 +41,70 @@ module MessagebusRubyApi
43
41
  @send_return_status=@empty_send_results
44
42
  return
45
43
  end
46
- @send_return_status=self.buffered_send(@email_buffer, @send_common_info)
44
+ @send_return_status=buffered_send(@email_buffer, @send_common_info)
47
45
  @email_buffer.clear
48
46
  @send_return_status
49
47
  end
50
48
 
49
+ def add_to_mailing_list(mailing_list_key, merge_fields)
50
+ request = create_api_post_request("#{@end_point_v2_base_path}mailing_list_entry/add_entry")
51
+ request.basic_auth(@credentials[:user], @credentials[:password]) if @credentials
52
+ json = {
53
+ "apiKey" => @api_key,
54
+ "mailingListKey" => mailing_list_key,
55
+ "mergeFields" => merge_fields
56
+ }.to_json
57
+ request.form_data={'json' => json}
58
+ make_api_call(request)
59
+ end
60
+
61
+ def remove_from_mailing_list(mailing_list_key, to_email)
62
+ request = create_api_delete_request("#{@end_point_v2_base_path}mailing_list_entry")
63
+ request.basic_auth(@credentials[:user], @credentials[:password]) if @credentials
64
+ json = {
65
+ "apiKey" => @api_key,
66
+ "mailingListKey" => mailing_list_key,
67
+ "email" => to_email
68
+ }.to_json
69
+ request.form_data={'json' => json}
70
+ make_api_call(request)
71
+ end
72
+
51
73
  def error_report
52
- request=create_api_get_request("#{@endpoint_error_report_path}?apiKey=#{@api_key}")
74
+ request=create_api_get_request("#{@end_point_v2_base_path}emails/error_report?apiKey=#{@api_key}")
53
75
  request.basic_auth(@credentials[:user], @credentials[:password]) if @credentials
54
- self.make_api_call(request)
76
+ make_api_call(request)
55
77
  end
56
78
 
57
- def blocked_emails(start_date,end_date=nil)
79
+ def blocked_emails(start_date, end_date=nil)
58
80
  additional_params="startDate=#{URI.escape(start_date.to_datetime.new_offset(0).rfc3339)}"
59
81
  unless (end_date.nil?)
60
82
  additional_params+="&endDate=#{URI.escape(end_date.to_datetime.new_offset(0).rfc3339)}"
61
83
  end
62
- request=create_api_get_request("#{@endpoint_blocked_emails_path}?apiKey=#{@api_key}&#{additional_params}")
84
+ request=create_api_get_request("#{@end_point_v2_base_path}blocked_emails?apiKey=#{@api_key}&#{additional_params}")
63
85
  request.basic_auth(@credentials[:user], @credentials[:password]) if @credentials
64
- self.make_api_call(request)
86
+ make_api_call(request)
65
87
  end
66
88
 
67
89
  def basic_auth_credentials=(credentials)
68
90
  @credentials = credentials
69
91
  end
70
92
 
93
+ def buffered_send(message_list, common_options)
94
+ if (message_list.length==0)
95
+ return {
96
+ :statusMessage => "OK",
97
+ :successCount => 0,
98
+ :failureCount => 0}
99
+ end
100
+ request = create_api_post_request("#{@end_point_v2_base_path}emails/send")
101
+ request.basic_auth(@credentials[:user], @credentials[:password]) if @credentials
102
+ request.form_data={'json' => make_json_message_from_list(message_list, common_options)}
103
+ make_api_call(request)
104
+ end
105
+
106
+ private
107
+
71
108
  def create_api_post_request(path)
72
109
  Net::HTTP::Post.new(path)
73
110
  end
@@ -76,6 +113,10 @@ module MessagebusRubyApi
76
113
  Net::HTTP::Get.new(path)
77
114
  end
78
115
 
116
+ def create_api_delete_request(path)
117
+ Net::HTTP::Delete.new(path)
118
+ end
119
+
79
120
  def check_priority(priority)
80
121
  raise APIParameterError.new(":priority can only be an integer between 1 and 5, not \"#{priority}\"") unless priority.is_a?(Integer) && (1..5).include?(priority)
81
122
  priority.to_s
@@ -94,19 +135,6 @@ module MessagebusRubyApi
94
135
  params[:priority] = check_priority(params[:priority]) unless params[:priority].nil?
95
136
  end
96
137
 
97
- def buffered_send(message_list, common_options)
98
- if (message_list.length==0)
99
- return {
100
- :statusMessage => "OK",
101
- :successCount => 0,
102
- :failureCount => 0}
103
- end
104
- request = create_api_post_request(@endpoint_send_path)
105
- request.basic_auth(@credentials[:user], @credentials[:password]) if @credentials
106
- request.form_data={'json' => make_json_message_from_list(message_list, common_options)}
107
- self.make_api_call(request)
108
- end
109
-
110
138
  def make_json_message(options)
111
139
  map={}
112
140
  map["toEmail"]=options[:toEmail] if (options.has_key? :toEmail)
@@ -1,3 +1,3 @@
1
1
  module MessagebusRubyApi
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.7"
3
3
  end
@@ -139,7 +139,7 @@ describe MessagebusRubyApi::Client do
139
139
  end
140
140
  end
141
141
 
142
- describe "#blocked_emails" do
142
+ describe "#blocked_emails" do
143
143
 
144
144
  it "request blocked emails list" do
145
145
 
@@ -149,18 +149,54 @@ describe MessagebusRubyApi::Client do
149
149
  end_date=DateTime.parse(end_date_str)
150
150
  @success_result=[
151
151
  {:email=>"test1@example.com", :message_send_time=>"2011-01-01T03:02:00", :unsubscribe_time=>"2011-01-02T04:32:00", :message_id=>"testmessageid1"},
152
- {:email=>"test2@example.com",:message_send_time=>"2011-01-01T02:02:00", :unsubscribe_time=>"2011-01-02T02:32:00", :message_id=>"testmessageid2"}
152
+ {:email=>"test2@example.com", :message_send_time=>"2011-01-01T02:02:00", :unsubscribe_time=>"2011-01-02T02:32:00", :message_id=>"testmessageid2"}
153
153
  ]
154
- expected_rquest="https://api.messagebus.com/api/v2/blocked_emails?apiKey=#{@api_key}&startDate=#{URI.escape(start_date_str)}&endDate=#{URI.escape(end_date_str)}"
154
+ expected_request="https://api.messagebus.com/api/v2/blocked_emails?apiKey=#{@api_key}&startDate=#{URI.escape(start_date_str)}&endDate=#{URI.escape(end_date_str)}"
155
155
 
156
- FakeWeb.register_uri(:get, expected_rquest, :body => @success_result.to_json)
156
+ FakeWeb.register_uri(:get, expected_request, :body => @success_result.to_json)
157
157
  expect do
158
- response = client.blocked_emails(start_date,end_date)
158
+ response = client.blocked_emails(start_date, end_date)
159
159
  FakeWeb.last_request.body.should be_nil
160
160
  response.should == @success_result
161
161
  end.should_not raise_error
162
162
  end
163
163
  end
164
164
 
165
+ describe "#remove_from_mailing_list" do
166
+
167
+ it "remove from mailing list" do
168
+ mailing_list_key="test_key"
169
+ to_email="test@example.com"
170
+
171
+ expected_request="https://api.messagebus.com/api/v2/mailing_list_entry"
172
+
173
+ FakeWeb.register_uri(:delete, expected_request, :body => {"statusMessage" => "OK"}.to_json)
174
+ expect do
175
+ response = client.remove_from_mailing_list(mailing_list_key, to_email)
176
+ FakeWeb.last_request.body.should =~ /json=/
177
+ response.should == {:statusMessage => "OK"}
178
+ FakeWeb.last_request.body
179
+ end.should_not raise_error
180
+
181
+ end
182
+ end
183
+
184
+ describe "#add_to_mailing_list" do
185
+
186
+ it "add to mailing list" do
187
+ mailing_list_key="test_key"
188
+ merge_fields={"%EMAIL%"=>"a@example.com", "%PARAM1%"=>"test value"}
189
+ expected_request="https://api.messagebus.com/api/v2/mailing_list_entry/add_entry"
190
+
191
+ FakeWeb.register_uri(:post, expected_request, :body => {"statusMessage" => "OK"}.to_json)
192
+ expect do
193
+ response = client.add_to_mailing_list(mailing_list_key, merge_fields)
194
+ FakeWeb.last_request.body.should =~ /json=/
195
+ response.should == {:statusMessage => "OK"}
196
+ end.should_not raise_error
197
+
198
+ end
199
+ end
200
+
165
201
  end
166
202
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: messagebus_ruby_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-06 00:00:00.000000000Z
12
+ date: 2011-09-20 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: ! 'Allows you to use the Messagebus API '
15
15
  email: