messagebus-sdk 4.1.1 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -28,7 +28,7 @@ If you have questions not answered by the samples or the online documentation, p
28
28
  require 'messagebus-sdk/api_client'
29
29
 
30
30
  api_key="12345678934628542E2599F7ED712345"
31
- api_host="https://api-v4.messagebus.com"
31
+ api_host="https://api.messagebus.com"
32
32
 
33
33
  client = MessagebusApiClient.new(api_key, api_host)
34
34
 
@@ -39,6 +39,7 @@ If you have questions not answered by the samples or the online documentation, p
39
39
  :toName => 'Bobby Flay',
40
40
  :fromEmail => 'alice@example.com',
41
41
  :fromName => 'Alice Waters',
42
+ :returnPath => 'bounces@bounces.example.com',
42
43
  :subject => 'Sample Message with HTML body.',
43
44
  :customHeaders => {"x-messagebus-sdk"=>"ruby-sdk"},
44
45
  :plaintextBody => 'This is the plain text body.',
@@ -48,6 +49,7 @@ If you have questions not answered by the samples or the online documentation, p
48
49
  :toName => 'Jamie Lauren',
49
50
  :fromEmail => 'alice@example.com',
50
51
  :fromName => 'Alice Waters',
52
+ :returnPath => 'bounces@bounces.example.com',
51
53
  :subject => 'Simple Example with no HTML body.',
52
54
  :customHeaders => {"x-messagebus-sdk"=>"ruby-sdk"},
53
55
  :plaintextBody => 'This is the plaintext example.',
@@ -76,7 +78,7 @@ If you have questions not answered by the samples or the online documentation, p
76
78
  class MessagebusMailer < MessagebusActionMailerClient
77
79
  def initialize(*args)
78
80
  api_key = "12345678934628542E2599F7ED712345"
79
- api_endpoint = "https://api-v4.messagebus.com"
81
+ api_endpoint = "https://api.messagebus.com"
80
82
  super(api_key, api_endpoint)
81
83
  end
82
84
  end
@@ -101,77 +103,11 @@ If you have questions not answered by the samples or the online documentation, p
101
103
  message = MessageBusActionMailerTest.test_message(to_email, session_key)
102
104
  message.deliver
103
105
 
104
- ####Checking email statistics
105
-
106
- require 'messagebus-sdk/stats_client'
107
-
108
- api_key = "12345678934628542E2599F7ED712345"
109
- api_host = "https://api-v4.messagebus.com"
110
-
111
- client = MessagebusStatsClient.new(api_key, api_host)
112
-
113
- begin
114
- response = client.stats
115
- if response[:statusCode] == 200
116
- stats = response[:stats]
117
- puts "Stats"
118
- puts "\tMessages Attempted: #{stats[:msgsAttemptedCount]}"
119
- puts "\tComplaint Count: #{stats[:complaintCount]}"
120
- puts "\tUnsubscribe Count: #{stats[:unsubscribeCount]}"
121
- puts "\tOpen Count: #{stats[:openCount]}"
122
- puts "\tUnique Open Count: #{stats[:uniqueOpenCount]}"
123
- puts "\tClick Count: #{stats[:clickCount]}"
124
-
125
- smtp = response[:smtp]
126
- puts "SMTP"
127
- puts "\tAccept Count: #{smtp[:acceptCount]}"
128
- puts "\tBounce Count: #{smtp[:bounceCount]}"
129
- puts "\tReject Count: #{smtp[:rejectCount]}"
130
- puts "\tError Count: #{smtp[:errorCount]}"
131
-
132
- filter = response[:filter]
133
- puts "Filter"
134
- puts "\tBad Mailbox Count: #{filter[:rcptBadMailboxCount]}"
135
- puts "\tChannel Block Count: #{filter[:rcptChannelBlockCount]}"
136
-
137
- else
138
- puts "#{response[:statusMessage]}"
139
- end
140
- rescue Exception=>e
141
- puts "Exception thrown. Error during stats retrieval: #{e.message}"
142
- end
143
-
144
- #### Checking email feedback data
145
-
146
- require 'messagebus-sdk/feedback_client'
147
-
148
- api_key = "12345678934628542E2599F7ED712345"
149
- api_host = "https://api-v4.messagebus.com"
150
-
151
- client = MessagebusFeedbackClient.new(api_key, api_host)
152
-
153
- begin
154
- response = client.feedback
155
- if response[:statusCode] == 200
156
- puts "Bounces"
157
- response[:bounces].each do |bounce|
158
- puts "Email: #{bounce[:email]} Count: #{bounce[:count]} BounceCode: #{bounce[:bounceCode]} LastEventTime: #{bounce[:lastEventTime]}"
159
- end
160
- puts "Clicks"
161
- response[:clicks].each do |click|
162
- puts "Email: #{click[:email]} Count: #{click[:count]} LastEventTime: #{click[:lastEventTime]}"
163
- end
164
- else
165
- puts "#{response[:statusMessage]}"
166
- end
167
- rescue Exception=>e
168
- puts "Exception thrown. Error during feedback retrieval: #{e.message}"
169
- end
170
106
 
171
107
  #### License
172
108
 
173
109
 
174
- Copyright (c) 2013 Mail Bypass, Inc.
110
+ Copyright (c) 2014 Message Bus
175
111
 
176
112
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
177
113
  with the License. You may obtain a copy of the License at
@@ -1,4 +1,4 @@
1
- # Copyright 2013 Message Bus, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
@@ -1,4 +1,4 @@
1
- # Copyright 2013 Message Bus, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
@@ -58,11 +58,11 @@ class MessagebusApiClient < MessagebusSDK::MessagebusBase
58
58
 
59
59
  def define_rest_endpoints
60
60
  {
61
- :message_emails_send => "/api/v4/message/email/send",
62
- :channels => "/api/v4/channels",
63
- :channel_config => "/api/v4/channel/%CHANNEL_KEY%/config",
64
- :channel_sessions => "/api/v4/channel/%CHANNEL_KEY%/sessions",
65
- :channel_session_rename => "/api/v4/channel/%CHANNEL_KEY%/session/%SESSION_KEY%/rename"
61
+ :message_emails_send => "/v5/messages/send",
62
+ :channels => "/v5/channels",
63
+ :channel_config => "/v5/channel/%CHANNEL_KEY%/config",
64
+ :channel_sessions => "/v5/channel/%CHANNEL_KEY%/sessions",
65
+ :channel_session_rename => "/v5/channel/%CHANNEL_KEY%/session/%SESSION_KEY%/rename"
66
66
  }
67
67
  end
68
68
  end
@@ -1,4 +1,4 @@
1
- # Copyright 2013 Message Bus, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
@@ -20,7 +20,7 @@ require 'messagebus_errors'
20
20
  module MessagebusSDK
21
21
 
22
22
  class MessagebusBase
23
- DEFAULT_API_ENDPOINT = 'https://api-v4.messagebus.com'
23
+ DEFAULT_API_ENDPOINT = 'https://api.messagebus.com'
24
24
  DEFAULT = 'DEFAULT'
25
25
  HEADER_SESSION_KEY = 'X-MESSAGEBUS-SESSIONKEY'
26
26
  SCOPE_ALL = 'all'
@@ -39,6 +39,8 @@ module MessagebusSDK
39
39
 
40
40
  @results = base_response_params
41
41
  @rest_http_errors = define_rest_http_errors
42
+ @return_json = true
43
+ @file_handle = nil
42
44
  end
43
45
 
44
46
  def api_version
@@ -108,15 +110,27 @@ module MessagebusSDK
108
110
  !address.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i).nil?
109
111
  end
110
112
 
111
- def make_api_request(path, request_type=HTTP_GET, data='')
113
+ def make_api_request(path, request_type=HTTP_GET, data='', return_json = true, file_name='')
112
114
  if (@last_init_time < Time.now.utc - 60)
113
115
  init_http_connection(@api_endpoint)
114
116
  end
115
117
 
118
+ @return_json = return_json
116
119
  headers = common_http_headers
117
120
  case request_type
118
121
  when HTTP_GET
119
- response = @http.request_get(path, headers)
122
+ if !@return_json && file_name != ''
123
+ response_file = open(file_name, 'w')
124
+ @http.request_get(path, headers) do |response|
125
+ response.read_body do |segment|
126
+ response_file.write(segment)
127
+ end
128
+ end
129
+ response_file.close
130
+ return true
131
+ else
132
+ response = @http.request_get(path, headers)
133
+ end
120
134
  when HTTP_PUT
121
135
  headers = common_http_headers.merge(rest_post_headers)
122
136
  response = @http.request_put(path, data, headers)
@@ -130,6 +144,7 @@ module MessagebusSDK
130
144
  end
131
145
 
132
146
  def check_response(response, symbolize_names=true)
147
+ return response.body if !@return_json
133
148
  case response
134
149
  when Net::HTTPSuccess
135
150
  begin
@@ -183,6 +198,14 @@ module MessagebusSDK
183
198
  replace_channel_key(replace_token_with_key(path, "%SESSION_KEY%", session_key), channel_key)
184
199
  end
185
200
 
201
+ def replace_webhook_key(path, webhook_key)
202
+ replace_token_with_key(path, "%WEBHOOK_KEY%", webhook_key)
203
+ end
204
+
205
+ def replace_report_key(path, report_key)
206
+ replace_token_with_key(path, "%REPORT_KEY%", report_key)
207
+ end
208
+
186
209
  def feedback_query_args(start_date, end_date, use_send_time, scope)
187
210
  query_string_parts = ["useSendTime=#{use_send_time}", "scope=#{scope}"]
188
211
  date_range = "#{date_range(start_date, end_date)}"
@@ -1,4 +1,4 @@
1
- # Copyright 2013 Message Bus, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
@@ -1,4 +1,4 @@
1
- # Copyright 2012 Mail Bypass, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
@@ -13,7 +13,7 @@
13
13
  # under the License.
14
14
 
15
15
  module MessagebusSDK
16
- VERSION = "4.1.1"
16
+ VERSION = "5.0.0"
17
17
 
18
18
  class Info
19
19
  @@ClientVersion = MessagebusSDK::VERSION
@@ -0,0 +1,110 @@
1
+ # Copyright 2014 Message Bus
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
+ # not use this file except in compliance with the License. You may obtain
5
+ # a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
+ # License for the specific language governing permissions and limitations
13
+ # under the License.
14
+
15
+ require 'messagebus_base'
16
+
17
+ class MessagebusReportsClient < MessagebusSDK::MessagebusBase
18
+ FORMAT_JSON = "json"
19
+ FORMAT_CSV = "csv"
20
+
21
+ REPORT_TYPE_STATS = "stats"
22
+ REPORT_TYPE_FEEDBACK = "feedback"
23
+ REPORT_TYPE_BLOCKLIST = "blocklist"
24
+
25
+ SCOPE_BOUNCES = "bounces"
26
+ SCOPE_UNSUBSCRIBES = "unsubscribes"
27
+ SCOPE_COMPLAINTS = "complaints"
28
+ SCOPE_CLICKS = "clicks"
29
+ SCOPE_OPENS = "opens"
30
+ SCOPE_BLOCKS = "blocks"
31
+
32
+ STATUS_DONE = "done"
33
+ STATUS_RUNNING = "running"
34
+ STATUS_NODATA = "nodata"
35
+ STATUS_FAILED = "failed"
36
+
37
+ def initialize(api_key, api_endpoint = DEFAULT_API_ENDPOINT)
38
+ super(api_key, api_endpoint)
39
+ @rest_endpoints = define_rest_endpoints
40
+ end
41
+
42
+ def report_status(report_key)
43
+ path = replace_report_key("#{@rest_endpoints[:status]}", report_key)
44
+ make_api_request(path)
45
+ end
46
+
47
+ def report_data(report_key, file_name = '')
48
+ path = replace_report_key("#{@rest_endpoints[:report]}", report_key)
49
+ make_api_request(path, HTTP_GET, '', false, file_name)
50
+ end
51
+
52
+ def report(report_key, file_name = '', sleep_interval = 5)
53
+ report_data = ''
54
+ check_report_status = true
55
+ while check_report_status
56
+ response = report_status(report_key)
57
+ case response[:reportStatus]
58
+ when STATUS_DONE
59
+ report_data = report_data(report_key, file_name)
60
+ check_report_status = false
61
+ when STATUS_NODATA, STATUS_FAILED
62
+ report_data = ''
63
+ check_report_status = false
64
+ else
65
+ sleep(sleep_interval)
66
+ end
67
+ end
68
+ return report_data
69
+ end
70
+
71
+ def create_report(report_type, start_date, end_date, scope = 'bounces', format = 'json', channel_key = '', session_key = '')
72
+ path = @rest_endpoints[:reports]
73
+ days = 1
74
+ end_date = set_date(end_date, 0)
75
+ start_date = set_date(start_date, days)
76
+
77
+ post_data = {:reportType => report_type,
78
+ :scope => scope,
79
+ :format => format,
80
+ :startDate => start_date,
81
+ :endDate => end_date,
82
+ :channelKey => channel_key,
83
+ :sessionKey => session_key
84
+ }
85
+ make_api_request(path, HTTP_POST, post_data.to_json)
86
+ end
87
+
88
+ def create_feedback_report(start_date, end_date, scope = 'bounces', format = 'json', channel_key = '', session_key = '')
89
+ create_report(REPORT_TYPE_FEEDBACK, start_date, end_date, scope, format, channel_key, session_key)
90
+ end
91
+
92
+ def create_stats_report(start_date, end_date, format = 'json', channel_key = '', session_key = '')
93
+ create_report(REPORT_TYPE_STATS, start_date, end_date, SCOPE_ALL, format, channel_key, session_key)
94
+ end
95
+
96
+ def create_blocklist_report(start_date, end_date, scope = 'blocks', format = 'json', channel_key = '', session_key = '')
97
+ create_report(REPORT_TYPE_BLOCKLIST, start_date, end_date, scope, format, channel_key, session_key)
98
+ end
99
+
100
+ private
101
+
102
+ def define_rest_endpoints
103
+ {
104
+ :reports => "/v5/reports",
105
+ :report => "/v5/report/%REPORT_KEY%",
106
+ :status => "/v5/report/%REPORT_KEY%/status"
107
+ }
108
+ end
109
+ end
110
+
@@ -1,4 +1,4 @@
1
- # Copyright 2013 Message Bus, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
@@ -15,7 +15,7 @@
15
15
  require 'messagebus_base'
16
16
 
17
17
  class MessagebusTemplateClient < MessagebusSDK::MessagebusBase
18
- DEFAULT_TEMPLATE_ENDPOINT = 'https://templates-v4-jy01-prod.messagebus.com'
18
+ DEFAULT_TEMPLATE_ENDPOINT = 'https://templates.messagebus.com'
19
19
 
20
20
  def initialize(api_key, api_endpoint = DEFAULT_TEMPLATE_ENDPOINT)
21
21
  super(api_key, api_endpoint)
@@ -55,10 +55,10 @@ class MessagebusTemplateClient < MessagebusSDK::MessagebusBase
55
55
  private
56
56
  def define_rest_endpoints
57
57
  {
58
- :template_version => "/api/v4/templates/version",
59
- :template => "/api/v4/template/%TEMPLATE_KEY%",
60
- :templates => "/api/v4/templates",
61
- :templates_send => "/api/v4/templates/email/send"
58
+ :template_version => "/v5/templates/version",
59
+ :template => "/v5/template/%TEMPLATE_KEY%",
60
+ :templates => "/v5/templates",
61
+ :templates_send => "/v5/templates/email/send"
62
62
  }
63
63
  end
64
64
 
@@ -0,0 +1,68 @@
1
+ # Copyright 2014 Message Bus
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
+ # not use this file except in compliance with the License. You may obtain
5
+ # a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
+ # License for the specific language governing permissions and limitations
13
+ # under the License.
14
+
15
+ require 'messagebus_base'
16
+
17
+ class MessagebusWebhookClient < MessagebusSDK::MessagebusBase
18
+
19
+ EVENT_TYPE_MESSAGE_ATTEMPT = 'message.attempt'
20
+ EVENT_TYPE_MESSAGE_ACCEPT = 'message.accept'
21
+ EVENT_TYPE_MESSAGE_BOUNCE = 'message.bounce'
22
+ EVENT_TYPE_MESSAGE_DEFERRAL = 'message.deferral'
23
+ EVENT_TYPE_MESSAGE_OPEN = 'message.open'
24
+ EVENT_TYPE_LINK_CLICK = 'link.click'
25
+ EVENT_TYPE_RECIPIENT_UNSUBSCRIBE = 'recipient.unsubscribe'
26
+ EVENT_TYPE_RECIPIENT_COMPLAINT = 'recipient.complaint'
27
+ EVENT_TYPE_RECIPIENT_BLOCK = 'recipient.block'
28
+
29
+ def initialize(api_key, api_endpoint = DEFAULT_API_ENDPOINT)
30
+ super(api_key, api_endpoint)
31
+ @rest_endpoints = define_rest_endpoints
32
+ end
33
+
34
+ def webhooks
35
+ path = "#{@rest_endpoints[:webhooks]}"
36
+ make_api_request(path, HTTP_GET)
37
+ end
38
+
39
+ def webhook(webhook_key)
40
+ path = replace_webhook_key("#{@rest_endpoints[:webhook]}", webhook_key)
41
+ make_api_request(path, HTTP_GET)
42
+ end
43
+
44
+ def create(params)
45
+ path = "#{@rest_endpoints[:webhooks]}"
46
+ make_api_request(path, HTTP_POST, params.to_json)
47
+ end
48
+
49
+ def update(webhook_key, params)
50
+ path = replace_webhook_key("#{@rest_endpoints[:webhook]}", webhook_key)
51
+ make_api_request(path, HTTP_PUT, params.to_json)
52
+ end
53
+
54
+ def delete(webhook_key)
55
+ path = replace_webhook_key("#{@rest_endpoints[:webhook]}", webhook_key)
56
+ make_api_request(path, HTTP_DELETE)
57
+ end
58
+
59
+ private
60
+
61
+ def define_rest_endpoints
62
+ {
63
+ :webhooks => "/v5/webhooks",
64
+ :webhook => "/v5/webhook/%WEBHOOK_KEY%"
65
+ }
66
+ end
67
+ end
68
+
@@ -1,4 +1,4 @@
1
- # Copyright 2012 Mail Bypass, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
@@ -18,7 +18,7 @@ describe MessagebusActionMailerClient do
18
18
  session_key = "DEFAULT"
19
19
  message = MessageBusActionMailerTest.new_message(to_email, session_key)
20
20
 
21
- FakeWeb.register_uri(:post, "#{API_URL}/message/email/send", :body => json_valid_send)
21
+ FakeWeb.register_uri(:post, "#{API_URL}/messages/send", :body => json_valid_send)
22
22
  message.deliver
23
23
 
24
24
  message_body = JSON.parse(FakeWeb.last_request.body)
@@ -32,7 +32,7 @@ describe MessagebusApiClient do
32
32
 
33
33
  describe "#send_messages" do
34
34
  it "should have user-agent and x-messagebus-key set in request headers" do
35
- FakeWeb.register_uri(:post, "#{API_URL}/message/email/send", :body => json_valid_send)
35
+ FakeWeb.register_uri(:post, "#{API_URL}/messages/send", :body => json_valid_send)
36
36
  client.send_messages(default_message_params)
37
37
 
38
38
  FakeWeb.last_request.get_fields("X-MessageBus-Key").should_not be_nil
@@ -41,7 +41,7 @@ describe MessagebusApiClient do
41
41
  end
42
42
 
43
43
  it "sends messages" do
44
- FakeWeb.register_uri(:post, "#{API_URL}/message/email/send", :body => json_valid_send)
44
+ FakeWeb.register_uri(:post, "#{API_URL}/messages/send", :body => json_valid_send)
45
45
  results = client.send_messages(default_message_params)
46
46
  results[:results].size.should == 1
47
47
  end
@@ -55,7 +55,7 @@ describe MessagebusApiClient do
55
55
  it "doesnt reset connection if under a minute old" do
56
56
  current_init_time=@http_client.last_init_time
57
57
  current_init_time.should be > Time.now.utc-5
58
- FakeWeb.register_uri(:post, "#{API_URL}/message/email/send", :body => json_valid_send)
58
+ FakeWeb.register_uri(:post, "#{API_URL}/messages/send", :body => json_valid_send)
59
59
  results = @http_client.send_messages(default_message_params)
60
60
  results[:results].size.should == 1
61
61
  @http_client.last_init_time.should == current_init_time
@@ -65,7 +65,7 @@ describe MessagebusApiClient do
65
65
  @http_client.last_init_time=Time.now.utc-60
66
66
  current_init_time=@http_client.last_init_time
67
67
  current_init_time.should be < Time.now.utc-59
68
- FakeWeb.register_uri(:post, "#{API_URL}/message/email/send", :body => json_valid_send)
68
+ FakeWeb.register_uri(:post, "#{API_URL}/messages/send", :body => json_valid_send)
69
69
  results = @http_client.send_messages(default_message_params)
70
70
  results[:results].size.should == 1
71
71
  @http_client.last_init_time.should be > current_init_time
@@ -30,9 +30,9 @@ describe MessagebusSDK::MessagebusBase do
30
30
 
31
31
  describe "messagebus base object set up correctly" do
32
32
  it "has correct headers and accepts a custom endpoint" do
33
- test_endpoint = 'https://testapi-v4.messagebus.com/api/v4'
33
+ test_endpoint = 'https://testapi.messagebus.com/v5'
34
34
  client = MessagebusSDK::MessagebusBase.new(@api_key, test_endpoint)
35
- client.instance_eval('@http').address.should == "testapi-v4.messagebus.com"
35
+ client.instance_eval('@http').address.should == "testapi.messagebus.com"
36
36
  end
37
37
  end
38
38
 
@@ -140,7 +140,7 @@ describe MessagebusSDK::MessagebusBase do
140
140
 
141
141
  describe "#version" do
142
142
  it "retrieves the current version of the API" do
143
- FakeWeb.register_uri(:get, "https://api-v4.messagebus.com/api/version", :body => json_api_version_results)
143
+ FakeWeb.register_uri(:get, "https://api.messagebus.com/api/version", :body => json_api_version_results)
144
144
  client = MessagebusSDK::MessagebusBase.new(@api_key)
145
145
  version = client.api_version
146
146
 
@@ -0,0 +1,132 @@
1
+
2
+ dir = File.dirname(__FILE__)
3
+ require "#{dir}/../spec_helper"
4
+ require "#{dir}/../../lib/messagebus-sdk/reports_client"
5
+
6
+ describe MessagebusReportsClient do
7
+ attr_reader :client, :api_key
8
+
9
+ before do
10
+ FakeWeb.allow_net_connect = false
11
+ @api_key = "7215ee9c7d9dc229d2921a40e899ec5f"
12
+ @client = MessagebusReportsClient.new(@api_key)
13
+ end
14
+
15
+ describe "reports" do
16
+ it "#report_status" do
17
+ report_key = '125a58512d8446279e3530c8d803f5e2'
18
+ expected_request="#{API_URL}/report/#{report_key}/status"
19
+ FakeWeb.register_uri(:get, expected_request, :body => json_report_status_request_response_done200)
20
+
21
+ response = client.report_status(report_key)
22
+ response.should == json_parse(json_report_status_request_response_done200)
23
+ end
24
+
25
+ it "#report_data" do
26
+ report_key = '125a58512d8446279e3530c8d803f5e2'
27
+ expected_request="#{API_URL}/report/#{report_key}/status"
28
+ FakeWeb.register_uri(:get, expected_request, :body => json_report_status_request_response_done200)
29
+
30
+ response = client.report_status(report_key)
31
+ response.should == json_parse(json_report_status_request_response_done200)
32
+ end
33
+
34
+ it "#report" do
35
+ report_key = '125a58512d8446279e3530c8d803f5e2'
36
+ expected_request="#{API_URL}/report/#{report_key}/status"
37
+ FakeWeb.register_uri(:get, expected_request, :body => json_report_status_request_response_done200)
38
+
39
+ expected_request="#{API_URL}/report/#{report_key}"
40
+ FakeWeb.register_uri(:get, expected_request, :body => json_report_request_data_bounce)
41
+
42
+ response = client.report(report_key)
43
+ end
44
+
45
+ it "#create_report" do
46
+ #def create_report(report_type, start_date, end_date, scope = 'bounces', format = 'json', channel_key = '', session_key = '')
47
+ report_type = MessagebusReportsClient::REPORT_TYPE_STATS
48
+ start_date_str="2014-01-01"
49
+ end_date_str="2014-01-02"
50
+ scope = MessagebusReportsClient::SCOPE_BOUNCES
51
+ format = MessagebusReportsClient::FORMAT_CSV
52
+
53
+ post_data = {:reportType => report_type,
54
+ :scope => scope,
55
+ :format => format,
56
+ :startDate => start_date_str,
57
+ :endDate => end_date_str,
58
+ :channelKey => '',
59
+ :sessionKey => ''
60
+ }
61
+
62
+ expected_request="#{API_URL}/reports"
63
+ FakeWeb.register_uri(:post, expected_request, :body => json_report_request_response201)
64
+
65
+ response = client.create_report(report_type, start_date_str, end_date_str, scope, format)
66
+ FakeWeb.last_request.body.should == post_data.to_json
67
+ end
68
+
69
+ it "#create_feedback_report" do
70
+ start_date_str="2014-01-01"
71
+ end_date_str="2014-01-02"
72
+ scope = MessagebusReportsClient::SCOPE_BOUNCES
73
+ format = MessagebusReportsClient::FORMAT_CSV
74
+
75
+ post_data = {:reportType => MessagebusReportsClient::REPORT_TYPE_FEEDBACK,
76
+ :scope => scope,
77
+ :format => format,
78
+ :startDate => start_date_str,
79
+ :endDate => end_date_str,
80
+ :channelKey => '',
81
+ :sessionKey => ''
82
+ }
83
+
84
+ expected_request="#{API_URL}/reports"
85
+ FakeWeb.register_uri(:post, expected_request, :body => json_report_request_response201)
86
+ response = client.create_feedback_report(start_date_str, end_date_str, scope, format)
87
+ FakeWeb.last_request.body.should == post_data.to_json
88
+ end
89
+
90
+ it "#create_stats_report" do
91
+ start_date_str="2014-01-01"
92
+ end_date_str="2014-01-02"
93
+ format = MessagebusReportsClient::FORMAT_CSV
94
+
95
+ post_data = {:reportType => MessagebusReportsClient::REPORT_TYPE_STATS,
96
+ :scope => MessagebusReportsClient::SCOPE_ALL,
97
+ :format => format,
98
+ :startDate => start_date_str,
99
+ :endDate => end_date_str,
100
+ :channelKey => '',
101
+ :sessionKey => ''
102
+ }
103
+
104
+ expected_request="#{API_URL}/reports"
105
+ FakeWeb.register_uri(:post, expected_request, :body => json_report_request_response201)
106
+ response = client.create_stats_report(start_date_str, end_date_str, format)
107
+ FakeWeb.last_request.body.should == post_data.to_json
108
+
109
+ end
110
+
111
+ it "#create_blocklist_report" do
112
+ start_date_str="2014-01-01"
113
+ end_date_str="2014-01-02"
114
+ scope = MessagebusReportsClient::SCOPE_BLOCKS
115
+ format = MessagebusReportsClient::FORMAT_CSV
116
+
117
+ post_data = {:reportType => MessagebusReportsClient::REPORT_TYPE_BLOCKLIST,
118
+ :scope => scope,
119
+ :format => format,
120
+ :startDate => start_date_str,
121
+ :endDate => end_date_str,
122
+ :channelKey => '',
123
+ :sessionKey => ''
124
+ }
125
+
126
+ expected_request="#{API_URL}/reports"
127
+ FakeWeb.register_uri(:post, expected_request, :body => json_report_request_response201)
128
+ response = client.create_blocklist_report(start_date_str, end_date_str, scope, format)
129
+ FakeWeb.last_request.body.should == post_data.to_json
130
+ end
131
+ end
132
+ end
@@ -9,7 +9,7 @@ describe MessagebusTemplateClient do
9
9
  before do
10
10
  FakeWeb.allow_net_connect = false
11
11
  @api_key = "7215ee9c7d9dc229d2921a40e899ec5f"
12
- @api_endpoint = "https://templates-v4-jy01-prod.messagebus.com"
12
+ @api_endpoint = "https://templates.messagebus.com"
13
13
  @client = MessagebusTemplateClient.new(@api_key)
14
14
 
15
15
  @test_template = {
@@ -29,7 +29,7 @@ describe MessagebusTemplateClient do
29
29
 
30
30
  describe "templates" do
31
31
  it "#template_version" do
32
- FakeWeb.register_uri(:get, "#{@api_endpoint}/api/v4/templates/version", :body => json_template_version_results)
32
+ FakeWeb.register_uri(:get, "#{@api_endpoint}/v5/templates/version", :body => json_template_version_results)
33
33
  result = @client.template_version
34
34
 
35
35
  result[:statusCode].should == 200
@@ -38,7 +38,7 @@ describe MessagebusTemplateClient do
38
38
  end
39
39
 
40
40
  it "#create_template" do
41
- FakeWeb.register_uri(:post, "#{@api_endpoint}/api/v4/templates", :body => json_template_create)
41
+ FakeWeb.register_uri(:post, "#{@api_endpoint}/v5/templates", :body => json_template_create)
42
42
 
43
43
 
44
44
  result = @client.create_template(@test_template)
@@ -52,7 +52,7 @@ describe MessagebusTemplateClient do
52
52
  it "#get_template" do
53
53
  template_key = "33ffafac-b15e-4146-b046-14ed897c522b"
54
54
 
55
- FakeWeb.register_uri(:get, "#{@api_endpoint}/api/v4/template/#{template_key}", :body => json_template_get)
55
+ FakeWeb.register_uri(:get, "#{@api_endpoint}/v5/template/#{template_key}", :body => json_template_get)
56
56
 
57
57
  result = @client.get_template(template_key)
58
58
 
@@ -66,7 +66,7 @@ describe MessagebusTemplateClient do
66
66
 
67
67
  it "#templates" do
68
68
  # list templates available
69
- FakeWeb.register_uri(:get, "#{@api_endpoint}/api/v4/templates", :body => json_templates_get)
69
+ FakeWeb.register_uri(:get, "#{@api_endpoint}/v5/templates", :body => json_templates_get)
70
70
 
71
71
  result = @client.templates
72
72
 
@@ -93,7 +93,7 @@ describe MessagebusTemplateClient do
93
93
  end
94
94
 
95
95
  it "#send_messages with batch size 25" do
96
- FakeWeb.register_uri(:post, "#{@api_endpoint}/api/v4/templates/email/send", :body => json_templates_email_send)
96
+ FakeWeb.register_uri(:post, "#{@api_endpoint}/v5/templates/email/send", :body => json_templates_email_send)
97
97
 
98
98
  template_messages = []
99
99
  (1..25).each do |i|
@@ -105,7 +105,7 @@ describe MessagebusTemplateClient do
105
105
  end
106
106
 
107
107
  it "#send_messages with batch size 0" do
108
- FakeWeb.register_uri(:post, "#{@api_endpoint}/api/v4/templates/email/send", :body => json_templates_email_send_empty)
108
+ FakeWeb.register_uri(:post, "#{@api_endpoint}/v5/templates/email/send", :body => json_templates_email_send_empty)
109
109
 
110
110
  template_messages = []
111
111
  result = @client.send_messages(@template_key, template_messages)
@@ -113,7 +113,7 @@ describe MessagebusTemplateClient do
113
113
  end
114
114
 
115
115
  it "#send_messages with batch size 26" do
116
- FakeWeb.register_uri(:post, "#{@api_endpoint}/api/v4/templates/email/send", :body => json_templates_email_send)
116
+ FakeWeb.register_uri(:post, "#{@api_endpoint}/v5/templates/email/send", :body => json_templates_email_send)
117
117
 
118
118
  template_messages = []
119
119
  (1..26).each do |i|
@@ -0,0 +1,72 @@
1
+
2
+ dir = File.dirname(__FILE__)
3
+ require "#{dir}/../spec_helper"
4
+ require "#{dir}/../../lib/messagebus-sdk/webhook_client"
5
+
6
+ describe MessagebusWebhookClient do
7
+ attr_reader :client, :api_key
8
+
9
+ before do
10
+ FakeWeb.allow_net_connect = false
11
+ @api_key = "7215ee9c7d9dc229d2921a40e899ec5f"
12
+ @client = MessagebusWebhookClient.new(@api_key)
13
+ end
14
+
15
+ describe "webhooks" do
16
+ it "#webhooks" do
17
+ expected_request="#{API_URL}/webhooks"
18
+ FakeWeb.register_uri(:get, expected_request, :body => json_webhooks)
19
+
20
+ response = client.webhooks
21
+ response.should == json_parse(json_webhooks)
22
+
23
+ response[:webhooks].length.should == 2
24
+ end
25
+
26
+ it "#webhook" do
27
+ webhook_key = "ab487e9d750a3c50876d12e8f381a79f"
28
+
29
+ expected_request="#{API_URL}/webhook/#{webhook_key}"
30
+ FakeWeb.register_uri(:get, expected_request, :body => json_webhook)
31
+
32
+ response = client.webhook(webhook_key)
33
+ response.should == json_parse(json_webhook)
34
+ end
35
+
36
+ it "#create" do
37
+ params = {:enabled => false,
38
+ :uri => 'http://domain.com/events/messagebus/message.accept',
39
+ :eventType => MessagebusWebhookClient::EVENT_TYPE_MESSAGE_ACCEPT
40
+ }
41
+
42
+ expected_request="#{API_URL}/webhooks"
43
+ FakeWeb.register_uri(:post, expected_request, :body => json_webhook_create)
44
+
45
+ response = client.create(params)
46
+ response.should == json_parse(json_webhook_create)
47
+ end
48
+
49
+ it "#update" do
50
+ webhook_key = "ab487e9d750a3c50876d12e8f381a79f"
51
+ params = {:uri => 'http://domain.com/events/messagebus/message.accepted'}
52
+
53
+ expected_request="#{API_URL}/webhook/#{webhook_key}"
54
+ FakeWeb.register_uri(:put, expected_request, :body => json_webhook_update)
55
+
56
+ response = client.update(webhook_key, params)
57
+ response.should == json_parse(json_webhook_update)
58
+ end
59
+
60
+ it "#delete_webhook" do
61
+ webhook_key = "ab487e9d750a3c50876d12e8f381a79f"
62
+
63
+ expected_request="#{API_URL}/webhook/#{webhook_key}"
64
+ FakeWeb.register_uri(:delete, expected_request, :body => json_webhook_delete)
65
+
66
+ response = client.delete(webhook_key)
67
+ response.should == json_parse(json_webhook_delete)
68
+
69
+ end
70
+
71
+ end
72
+ end
@@ -1,4 +1,4 @@
1
- # Copyright 2013 Message Bus, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright 2013 Message Bus, Inc.
1
+ # Copyright 2014 Message Bus
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
4
  # not use this file except in compliance with the License. You may obtain
@@ -26,7 +26,7 @@ require 'api_client'
26
26
  require 'actionmailer_client'
27
27
  require 'messagebus_errors'
28
28
 
29
- API_URL = 'https://api-v4.messagebus.com/api/v4'
29
+ API_URL = 'https://api.messagebus.com/v5'
30
30
 
31
31
  def json_parse(data)
32
32
  JSON.parse(data, :symbolize_names => true)
@@ -229,6 +229,161 @@ JAVASCRIPT
229
229
  json
230
230
  end
231
231
 
232
+ def json_webhooks
233
+ json = <<JAVASCRIPT
234
+ {
235
+ "statusCode":200,
236
+ "statusMessage":"OK",
237
+ "statusTime":"2014-01-22T23:12:45.768Z",
238
+ "webhooks":[
239
+ {"enabled":true,
240
+ "eventType":"recipient.block",
241
+ "uri":"http://webhook.messagebus.com/events/block",
242
+ "webhookKey":"902e4a3d-24a0-470f-bbde-58f81fc04b79",
243
+ "lastUpdated":"2014-01-22T23:31:42Z",
244
+ "dateCreated":"2014-01-22T23:31:42Z",
245
+ "batching":{
246
+ "batchingEnabled":true,
247
+ "batchTimeSeconds":30,
248
+ "maxBatchSize":500}
249
+ },
250
+ {"enabled":true,
251
+ "eventType":"message.attempt",
252
+ "uri":"http://webhook.messagebus.com/events/attempt",
253
+ "webhookKey":"9b4309e1-0551-4c7a-ab0b-4b69f977201f",
254
+ "lastUpdated":"2014-01-22T23:31:35Z",
255
+ "dateCreated":"2014-01-22T23:31:35Z",
256
+ "batching":{
257
+ "batchingEnabled":true,
258
+ "batchTimeSeconds":30,
259
+ "maxBatchSize":500
260
+ },
261
+ "channelKey":"DDCEFC35298644A998606CAB10F38501"
262
+ }
263
+ ]
264
+ }
265
+ JAVASCRIPT
266
+ json
267
+ end
268
+
269
+ def json_webhook
270
+ json = <<JAVASCRIPT
271
+ {
272
+ "statusCode":200,
273
+ "statusMessage":"OK",
274
+ "statusTime":"2014-01-22T23:12:45.768Z",
275
+ "webhook":
276
+ {"enabled":true,
277
+ "eventType":"recipient.complaint",
278
+ "uri":"http://webhook.messagebus.com/messagebus/v5/recipient-complaint",
279
+ "webhookKey":"43980222-6bef-46aa-8644-d6b7e0b8c98a",
280
+ "lastUpdated":"2014-01-22T22:29:59Z",
281
+ "dateCreated":"2014-01-22T21:32:17Z",
282
+ "batching":
283
+ {"batchingEnabled":true,
284
+ "batchTimeSeconds":30,
285
+ "maxBatchSize":500
286
+ },
287
+ "channelKey":"DDCEFC35298644A998606CAB10F38501"
288
+ }
289
+ }
290
+ JAVASCRIPT
291
+ json
292
+ end
293
+
294
+ def json_webhook_no_channel
295
+ json = <<JAVASCRIPT
296
+ {
297
+ "statusCode":200,
298
+ "statusMessage":"OK",
299
+ "statusTime":"2014-01-22T23:12:45.768Z",
300
+ "webhook":
301
+ {"enabled":true,
302
+ "eventType":"recipient.complaint",
303
+ "uri":"http://webhook.messagebus.com/messagebus/v5/recipient-complaint",
304
+ "webhookKey":"43980222-6bef-46aa-8644-d6b7e0b8c98a",
305
+ "lastUpdated":"2014-01-22T22:29:59Z",
306
+ "dateCreated":"2014-01-22T21:32:17Z",
307
+ "batching":
308
+ {"batchingEnabled":true,
309
+ "batchTimeSeconds":30,
310
+ "maxBatchSize":500
311
+ }
312
+ }
313
+ }
314
+ JAVASCRIPT
315
+ json
316
+ end
317
+
318
+ def json_webhook_create
319
+ json = <<JAVASCRIPT
320
+ {
321
+ "statusCode":201,
322
+ "statusMessage":"Webhook created.",
323
+ "statusTime":"2014-01-24T23:35:45.083Z",
324
+ "webhookKey":"8d77789a13144923ba7b38b8ffff0f6c"
325
+ }
326
+ JAVASCRIPT
327
+ json
328
+ end
329
+
330
+ def json_webhook_update
331
+ json = <<JAVASCRIPT
332
+ {
333
+ "statusCode":200,
334
+ "statusMessage":"OK",
335
+ "statusTime":"2014-01-24T23:29:03.483Z"
336
+ }
337
+ JAVASCRIPT
338
+ json
339
+ end
340
+
341
+ def json_webhook_delete
342
+ json = <<JAVASCRIPT
343
+ {
344
+ "statusCode":200,
345
+ "statusMessage":"Webhook deleted.",
346
+ "statusTime":"2014-01-24T23:31:05.546Z"
347
+ }
348
+ JAVASCRIPT
349
+ json
350
+ end
351
+
352
+
353
+ def json_report_request_response201
354
+ json = <<JAVASCRIPT
355
+ {"statusCode":201,"statusMessage":"Report request received.","statusTime":"1971-01-01T00:00:00.000Z","reportKey":"e98d2f001da5678b39482efbdf5770dc","reportStatus":"created","reportQuota":50,"reportQuotaRemaining":49}
356
+ JAVASCRIPT
357
+ json
358
+ end
359
+
360
+ def json_report_status_request_response_done200
361
+ json = <<JAVASCRIPT
362
+ {"statusCode":200,"statusMessage":"Report has completed.","statusTime":"1971-01-01T00:00:00.000Z","reportStatus":"done"}
363
+ JAVASCRIPT
364
+ json
365
+ end
366
+
367
+ def json_report_status_request_response_running200
368
+ json = <<JAVASCRIPT
369
+ {"statusCode":200,"statusMessage":"Report is still running.","statusTime":"1971-01-01T00:00:00.000Z","reportStatus":"running"}
370
+ JAVASCRIPT
371
+ json
372
+ end
373
+
374
+ def json_report_status_request_response_no_data200
375
+ json = <<JAVASCRIPT
376
+ {"statusCode":200,"statusMessage":"Report contains no data.","statusTime":"1971-01-01T00:00:00.000Z","reportStatus":"nodata"}
377
+ JAVASCRIPT
378
+ json
379
+ end
380
+
381
+ def json_report_request_data_bounce
382
+ json = <<JAVASCRIPT
383
+ {"type":"bounce","channelKey":"0000000000ABCDEF0123456789ABCDEF","sessionKey":"1111111111ABCDEF0123456789ABCDEF","email":"bob@hotmail.com","bounceCode":1000,"eventTime":"1971-01-01T23:45:00.000Z","sendTime":"1971-01-01T00:00:00.000Z"}
384
+ JAVASCRIPT
385
+ json
386
+ end
232
387
 
233
388
  class MessagebusMailer < MessagebusActionMailerClient
234
389
  def initialize(*args)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: messagebus-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.1
4
+ version: 5.0.0
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: 2013-07-23 00:00:00.000000000 Z
12
+ date: 2014-02-17 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: SDK for Message Bus service
15
15
  email:
@@ -20,20 +20,20 @@ extra_rdoc_files: []
20
20
  files:
21
21
  - lib/messagebus-sdk/actionmailer_client.rb
22
22
  - lib/messagebus-sdk/api_client.rb
23
- - lib/messagebus-sdk/feedback_client.rb
24
23
  - lib/messagebus-sdk/messagebus_base.rb
25
24
  - lib/messagebus-sdk/messagebus_errors.rb
26
25
  - lib/messagebus-sdk/messagebus_version.rb
27
- - lib/messagebus-sdk/stats_client.rb
26
+ - lib/messagebus-sdk/reports_client.rb
28
27
  - lib/messagebus-sdk/template_client.rb
28
+ - lib/messagebus-sdk/webhook_client.rb
29
29
  - lib/messagebus-sdk.rb
30
30
  - spec/messagebus-sdk/actionmailer_client_spec.rb
31
31
  - spec/messagebus-sdk/api_client_spec.rb
32
32
  - spec/messagebus-sdk/base_spec.rb
33
33
  - spec/messagebus-sdk/cacert.pem
34
- - spec/messagebus-sdk/feedback_client_spec.rb
35
- - spec/messagebus-sdk/stats_client_spec.rb
34
+ - spec/messagebus-sdk/reports_client_spec.rb
36
35
  - spec/messagebus-sdk/template_client_spec.rb
36
+ - spec/messagebus-sdk/webhook_client_spec.rb
37
37
  - spec/spec_core_extensions.rb
38
38
  - spec/spec_helper.rb
39
39
  - README.md
@@ -71,8 +71,8 @@ test_files:
71
71
  - spec/messagebus-sdk/api_client_spec.rb
72
72
  - spec/messagebus-sdk/base_spec.rb
73
73
  - spec/messagebus-sdk/cacert.pem
74
- - spec/messagebus-sdk/feedback_client_spec.rb
75
- - spec/messagebus-sdk/stats_client_spec.rb
74
+ - spec/messagebus-sdk/reports_client_spec.rb
76
75
  - spec/messagebus-sdk/template_client_spec.rb
76
+ - spec/messagebus-sdk/webhook_client_spec.rb
77
77
  - spec/spec_core_extensions.rb
78
78
  - spec/spec_helper.rb
@@ -1,104 +0,0 @@
1
- # Copyright 2013 Message Bus, Inc.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
- # not use this file except in compliance with the License. You may obtain
5
- # a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
- # License for the specific language governing permissions and limitations
13
- # under the License.
14
-
15
- require 'messagebus_base'
16
-
17
- class MessagebusFeedbackClient < MessagebusSDK::MessagebusBase
18
-
19
- def initialize(api_key, api_endpoint = DEFAULT_API_ENDPOINT)
20
- super(api_key, api_endpoint)
21
- @rest_endpoints = define_rest_endpoints
22
- end
23
-
24
- def feedback(start_date = '', end_date = '', scope = SCOPE_ALL, use_send_time = TRUE_VALUE)
25
- path = "#{@rest_endpoints[:feedback]}#{feedback_query_args(start_date, end_date, use_send_time, scope)}"
26
- make_api_request(path)
27
- end
28
-
29
- def feedback_by_channel(channel_key, start_date = '', end_date = '', scope = SCOPE_ALL, use_send_time = TRUE_VALUE)
30
- path = "#{replace_channel_key(@rest_endpoints[:feedback_channel], channel_key)}#{feedback_query_args(start_date, end_date, use_send_time, scope)}"
31
- make_api_request(path)
32
- end
33
-
34
- def feedback_by_session(channel_key, session_key, start_date = '', end_date = '', scope = SCOPE_ALL, use_send_time = TRUE_VALUE)
35
- path = "#{replace_channel_and_session_key(@rest_endpoints[:feedback_session], channel_key, session_key)}#{feedback_query_args(start_date, end_date, use_send_time, scope)}"
36
- make_api_request(path)
37
- end
38
-
39
- def unsubs(start_date = '', end_date = '')
40
- path = "#{@rest_endpoints[:unsubs]}?#{date_range(start_date, end_date)}"
41
- make_api_request(path)
42
- end
43
-
44
- def unsubs_by_channel(channel_key, start_date = '', end_date = '')
45
- path = "#{replace_channel_key(@rest_endpoints[:unsubs_channel], channel_key)}?#{date_range(start_date, end_date)}"
46
- make_api_request(path)
47
- end
48
-
49
- def unsubs_by_session(channel_key, session_key, start_date = '', end_date = '')
50
- path = "#{replace_channel_and_session_key(@rest_endpoints[:unsubs_session], channel_key, session_key)}?#{date_range(start_date, end_date)}"
51
- make_api_request(path)
52
- end
53
-
54
- def complaints(start_date = '', end_date = '')
55
- path = "#{@rest_endpoints[:complaints]}?#{date_range(start_date, end_date)}"
56
- make_api_request(path)
57
- end
58
-
59
- def complaints_by_channel(channel_key, start_date = '', end_date = '')
60
- path = "#{replace_channel_key(@rest_endpoints[:complaints_channel], channel_key)}?#{date_range(start_date, end_date)}"
61
- make_api_request(path)
62
- end
63
-
64
- def complaints_by_session(channel_key, session_key, start_date = '', end_date = '')
65
- path = "#{replace_channel_and_session_key(@rest_endpoints[:complaints_session], channel_key, session_key)}?#{date_range(start_date, end_date)}"
66
- make_api_request(path)
67
- end
68
-
69
- def bounces(start_date = '', end_date = '')
70
- path = "#{@rest_endpoints[:bounces]}?#{date_range(start_date, end_date)}"
71
- make_api_request(path)
72
- end
73
-
74
- def bounces_by_channel(channel_key, start_date = '', end_date = '')
75
- path = "#{replace_channel_key(@rest_endpoints[:bounces_channel], channel_key)}?#{date_range(start_date, end_date)}"
76
- make_api_request(path)
77
- end
78
-
79
- def bounces_by_session(channel_key, session_key, start_date = '', end_date = '')
80
- path = "#{replace_channel_and_session_key(@rest_endpoints[:bounces_session], channel_key, session_key)}?#{date_range(start_date, end_date)}"
81
- make_api_request(path)
82
- end
83
-
84
- private
85
-
86
- def define_rest_endpoints
87
- {
88
- :feedback => "/api/v4/feedback",
89
- :feedback_channel => "/api/v4/feedback/channel/%CHANNEL_KEY%",
90
- :feedback_session => "/api/v4/feedback/channel/%CHANNEL_KEY%/session/%SESSION_KEY%",
91
- :unsubs => "/api/v4/unsubs",
92
- :unsubs_channel => "/api/v4/unsubs/channel/%CHANNEL_KEY%",
93
- :unsubs_session => "/api/v4/unsubs/channel/%CHANNEL_KEY%/session/%SESSION_KEY%",
94
- :complaints => "/api/v4/complaints",
95
- :complaints_channel => "/api/v4/complaints/channel/%CHANNEL_KEY%",
96
- :complaints_session => "/api/v4/complaints/channel/%CHANNEL_KEY%/session/%SESSION_KEY%",
97
- :bounces => "/api/v4/bounces",
98
- :bounces_channel => "/api/v4/bounces/channel/%CHANNEL_KEY%",
99
- :bounces_session => "/api/v4/bounces/channel/%CHANNEL_KEY%/session/%SESSION_KEY%"
100
- }
101
- end
102
-
103
- end
104
-
@@ -1,50 +0,0 @@
1
- # Copyright 2013 Message Bus, Inc.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
- # not use this file except in compliance with the License. You may obtain
5
- # a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
- # License for the specific language governing permissions and limitations
13
- # under the License.
14
-
15
- require 'messagebus_base'
16
-
17
- class MessagebusStatsClient < MessagebusSDK::MessagebusBase
18
-
19
- def initialize(api_key, api_endpoint = DEFAULT_API_ENDPOINT)
20
- super(api_key, api_endpoint)
21
- @rest_endpoints = define_rest_endpoints
22
- end
23
-
24
- def stats(start_date = '', end_date = '')
25
- path = "#{@rest_endpoints[:stats]}?#{date_range(start_date, end_date)}"
26
- make_api_request(path)
27
- end
28
-
29
- def stats_by_channel(channel_key, start_date = '', end_date = '')
30
- path = "#{replace_channel_key(@rest_endpoints[:stats_channel], channel_key)}?#{date_range(start_date, end_date)}"
31
- make_api_request(path)
32
- end
33
-
34
- def stats_by_session(channel_key, session_key, start_date = '', end_date = '')
35
- path = "#{replace_channel_and_session_key(@rest_endpoints[:stats_session], channel_key, session_key)}?#{date_range(start_date, end_date)}"
36
- make_api_request(path)
37
- end
38
-
39
- private
40
-
41
- def define_rest_endpoints
42
- {
43
- :stats => "/api/v4/stats/email",
44
- :stats_channel => "/api/v4/stats/email/channel/%CHANNEL_KEY%",
45
- :stats_session => "/api/v4/stats/email/channel/%CHANNEL_KEY%/session/%SESSION_KEY%",
46
- }
47
- end
48
-
49
- end
50
-
@@ -1,65 +0,0 @@
1
-
2
- dir = File.dirname(__FILE__)
3
- require "#{dir}/../spec_helper"
4
- require "#{dir}/../../lib/messagebus-sdk/feedback_client"
5
-
6
-
7
- describe MessagebusFeedbackClient do
8
- attr_reader :client, :api_key
9
-
10
-
11
- before do
12
- FakeWeb.allow_net_connect = false
13
- @api_key = "7215ee9c7d9dc229d2921a40e899ec5f"
14
- @client = MessagebusFeedbackClient.new(@api_key)
15
- end
16
-
17
- describe "feedback" do
18
- it "call #feedback without dates" do
19
- scope = "all"
20
- expected_request="#{API_URL}/feedback?useSendTime=true&scope=#{scope}"
21
-
22
- FakeWeb.register_uri(:get, expected_request, :body => json_feedback(scope))
23
- response = client.feedback
24
- FakeWeb.last_request.body.should be_nil
25
- response.should == json_parse(json_feedback(scope))
26
- end
27
-
28
- it "call #feedback with dates" do
29
- scope = "bounces"
30
- start_date_str="2011-01-01T04:30:00+00:00"
31
- end_date_str="2011-01-02T04:30:00+00:00"
32
- expected_request="#{API_URL}/feedback?useSendTime=true&scope=#{scope}&startDate=#{URI.escape(start_date_str)}&endDate=#{URI.escape(end_date_str)}"
33
-
34
- FakeWeb.register_uri(:get, expected_request, :body => json_feedback(scope))
35
- response = client.feedback(start_date_str, end_date_str, scope)
36
- FakeWeb.last_request.body.should be_nil
37
- response.should == json_parse(json_feedback(scope))
38
- end
39
-
40
- it "call #feedback_by_channel without dates" do
41
- scope = "all"
42
- channel_key = "ab487e9d750a3c50876d12e8f381a79f"
43
- expected_request="#{API_URL}/feedback/channel/#{channel_key}?useSendTime=true&scope=#{scope}"
44
-
45
- FakeWeb.register_uri(:get, expected_request, :body => json_feedback(scope))
46
- response = client.feedback_by_channel(channel_key)
47
- FakeWeb.last_request.body.should be_nil
48
- response.should == json_parse(json_feedback(scope))
49
- end
50
-
51
- it "call #feedback_by_session without dates" do
52
- scope = "all"
53
- channel_key = "ab487e9d750a3c50876d12e8f381a79f"
54
- session_key = "dab775c6e6aa203324598fefbd1e8baf"
55
-
56
- expected_request="#{API_URL}/feedback/channel/#{channel_key}/session/#{session_key}?useSendTime=true&scope=#{scope}"
57
-
58
- FakeWeb.register_uri(:get, expected_request, :body => json_feedback(scope))
59
- response = client.feedback_by_session(channel_key, session_key)
60
- FakeWeb.last_request.body.should be_nil
61
- response.should == json_parse(json_feedback(scope))
62
- end
63
- end
64
-
65
- end
@@ -1,56 +0,0 @@
1
-
2
- dir = File.dirname(__FILE__)
3
- require "#{dir}/../spec_helper"
4
- require "#{dir}/../../lib/messagebus-sdk/stats_client"
5
-
6
- describe MessagebusStatsClient do
7
- attr_reader :client, :api_key
8
-
9
- before do
10
- FakeWeb.allow_net_connect = false
11
- @api_key = "7215ee9c7d9dc229d2921a40e899ec5f"
12
- @client = MessagebusStatsClient.new(@api_key)
13
- end
14
-
15
- describe "stats" do
16
- it "#stats with dates" do
17
- start_date_str="2011-01-01"
18
- end_date_str="2011-01-02"
19
-
20
- expected_request="#{API_URL}/stats/email?startDate=#{start_date_str}&endDate=#{end_date_str}"
21
- FakeWeb.register_uri(:get, expected_request, :body => json_stats)
22
-
23
- response = client.stats(start_date_str, end_date_str)
24
- response.should == json_parse(json_stats)
25
-
26
- response[:stats].length.should == 4
27
- response[:smtp].length.should == 5
28
- response[:filter].length.should == 2
29
- end
30
-
31
- it "#stats_by_channel with dates" do
32
- start_date_str="2011-01-01"
33
- end_date_str="2011-01-02"
34
- channel_key = "ab487e9d750a3c50876d12e8f381a79f"
35
-
36
- expected_request="#{API_URL}/stats/email/channel/#{channel_key}?startDate=#{start_date_str}&endDate=#{end_date_str}"
37
- FakeWeb.register_uri(:get, expected_request, :body => json_stats)
38
-
39
- response = client.stats_by_channel(channel_key, start_date_str, end_date_str)
40
- response.should == json_parse(json_stats)
41
- end
42
-
43
- it "#stats_by_session with dates" do
44
- start_date_str="2011-01-01"
45
- end_date_str="2011-01-02"
46
- channel_key = "ab487e9d750a3c50876d12e8f381a79f"
47
- session_key = "dab775c6e6aa203324598fefbd1e8baf"
48
-
49
- expected_request="#{API_URL}/stats/email/channel/#{channel_key}/session/#{session_key}?startDate=#{start_date_str}&endDate=#{end_date_str}"
50
- FakeWeb.register_uri(:get, expected_request, :body => json_stats)
51
-
52
- response = client.stats_by_session(channel_key, session_key, start_date_str, end_date_str)
53
- response.should == json_parse(json_stats)
54
- end
55
- end
56
- end