messagebus-sdk 4.1.1 → 5.0.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.
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