messagebus_ruby_api 0.1.1 → 0.4.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/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm use ruby-1.9.2-p180@messagebus_ruby_api --create
1
+ rvm use ruby-1.9.2-p180-patched@messagebus_ruby_api --create
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
+ gem 'activesupport'
4
+
3
5
  group :test, :development do
4
6
  gem 'rspec', '2.5.0'
5
7
  gem 'rr', '1.0.2'
data/README.rdoc CHANGED
@@ -15,39 +15,75 @@ Start by requiring MessagebusRubyApi:
15
15
 
16
16
  client = MessagebusRubyApi::Client.new("<INSERT_YOUR_API_KEY>")
17
17
 
18
-
19
- === Required Parameters
20
-
21
- required_params = {
22
- :subject => "e-mail subject",
23
- :body => "This is the email body",
24
- :fromEmail => "from@example.com",
25
- :toEmail => "to@example.com"
26
- }
27
-
28
- === Optional Parameters
29
-
30
- optional_params = {
31
- :fromName => "From Name",
32
- :toName => "To Name",
33
- :tag => "tags separated by spaces"
18
+ === Setting common fields for your emails
19
+ client.common_info={:fromEmail="from@example.com"}
20
+
21
+ ==== When not using an API template
22
+ ===== Required common_info field
23
+ :fromEmail
24
+ ===== Optional common_info fields
25
+ :fromName, :replayTo, :tags
26
+ ==== When using an API template
27
+ ===== Required common_info field
28
+ :templateKey
29
+ ===== No Optional Fields
30
+
31
+ === Adding messages to the send buffer
32
+ result=client.add_message({:toEmail=>"to@example.com"})
33
+
34
+ If you get a result >0 you get back the number of messages waiting to get sent
35
+ If you get a result = 0 that means the buffer was flushed and you can get results from client.return_status
36
+ Note: you should read from client.return_status before adding more messages since client.return_status will get cleared during the next auto-flush
37
+
38
+ ==== When not using an API template
39
+ ===== Required message fields
40
+ :toEmail, :subject, :plaintextBody or :htmlBody
41
+ ===== Optional message fields
42
+ :tag, :toName,
43
+ ==== When using an API template
44
+ ===== Required common_info field
45
+ :mergeFields={"%EMAIL"=>"to@example.com", "%KEY1%"="testing"}
46
+
47
+ Note: the merge fields entries chould contain the keys used in the template, but only the %EMAIL% is required
48
+
49
+ ===== No Optional Fields
50
+
51
+ === Flushing the send buffer
52
+ client.flush
53
+
54
+ Note: Flushing returns the status of the messages that were sent (see bellow). It also clears old values to client.return_status
55
+
56
+ Warning: You always need to flush your buffer when you are done adding messages to be sent or if you want to send messages with a different common_info (failure to do so could result in unsent messages getting lost or old messages getting sent with your new common_info
57
+
58
+ === Checking on message ids sent
59
+ client.return_status
60
+
61
+ Status messages will be in the following form:
62
+
63
+ {
64
+ "statusMessage" => "OK",
65
+ "successCount" => 2,
66
+ "failureCount" => 0,
67
+ "results" => [
68
+ {
69
+ "status" => 200,
70
+ "messageId" => "e460d7f0-908e-012e-80b4-58b035f30fd1"
71
+ },
72
+ {
73
+ "status" => 200,
74
+ "messageId" => "e460d7f0-908e-012e-80b4-58b035f30fd2"
75
+ }
76
+ ]
34
77
  }
35
78
 
36
- === Sending an e-mail with the client
79
+ If there are failures you will get 400 or 500 status codes as well as error messages
37
80
 
38
- @params = {
39
- :subject => "e-mail subject",
40
- :body => "This is the email body",
41
- :fromEmail => "from@example.com",
42
- :toEmail => "to@example.com"
43
- }
81
+ == Older Versions
44
82
 
45
- response = client.send_email(@params)
46
- puts "API call failed" unless response.body =~ /^OK:(.*)$/
83
+ If you are using the old api with the text OK:<UUID> responses, please be sure to get the 'v1' branch
47
84
 
85
+ If you are using the old api with the 'body' parameter (instead of the new 'plaintextBody' and 'htmlBody' parameters), please be sure to get the 'v0' branch
48
86
 
49
87
  == More info
50
88
 
51
89
  Contact MessageBus if you have questions or problems (https://www.messagebus.com/contact)
52
-
53
-
@@ -3,69 +3,55 @@ module MessagebusRubyApi
3
3
 
4
4
  class Client
5
5
  attr_reader :api_key, :endpoint_url, :http
6
-
6
+ attr_reader :buffer, :return_status, :email_buffer_size
7
+ attr_writer :common_info
8
+ @empty_results=nil
9
+
7
10
  def initialize(api_key, endpoint_url_string = DEFAULT_API_ENDPOINT_STRING)
8
11
  @api_key = verified_reasonable_api_key(api_key)
9
12
  @endpoint_url = URI.parse(endpoint_url_string)
10
- @http = api_endpoint_http_connection(endpoint_url)
13
+ @endpoint_bulk_path = "/api/v2/emails/send"
14
+ @http = Net::HTTP.new(@endpoint_url.host, @endpoint_url.port)
11
15
  @http.use_ssl = true
16
+ @email_buffer_size=20
17
+ @buffer=[]
18
+ @empty_results= {
19
+ :statusMessage => "",
20
+ :successCount => 0,
21
+ :failureCount => 0,
22
+ :results => []
23
+ }
24
+ @return_status=@empty_results
25
+ @common_info={}
12
26
  end
13
27
 
14
- def complete_url(options)
15
- params_string = to_param(check_params(options))
16
- url = "/send?operation=sendEmail&#{params_string}&apiKey=#{api_key}"
17
- url
18
- end
19
-
20
- def send_email(options)
21
- verify_required_params(options)
22
- response = @http.start do |http|
23
- request = api_request(options)
24
- request.basic_auth(@credentials[:user], @credentials[:password]) if @credentials
25
- http.request(request)
28
+ def add_message(email_options)
29
+ @buffer<<email_options
30
+ if (@buffer.size >= @email_buffer_size)
31
+ self.flush
32
+ return 0
33
+ else
34
+ return @buffer.size
26
35
  end
27
- case response
28
- when Net::HTTPSuccess
29
- return response
30
- when Net::HTTPClientError, Net::HTTPServerError
31
- if (response.body && response.body.size > 0)
32
- raise MessagebusRubyApi::RemoteServerError.new(response.body)
33
- else
34
- raise MessagebusRubyApi::RemoteServerError.new("ERR:Remote Server Returned: #{response.code.to_s}")
35
- end
36
- else
37
- raise "Unexpected HTTP Response: #{response.class.name}"
38
- end
39
- raise "Could not determine response"
40
- end
41
-
42
- def check_params(params)
43
- params[:plainText] = check_plain_text(params[:plainText]) unless params[:plainText].nil?
44
- params[:priority] = check_priority(params[:priority]) unless params[:priority].nil?
45
- params
46
36
  end
47
37
 
48
- def to_param(params)
49
- params.map { |name, val| [name.to_s, val] }.sort.map { |param_name, param_value| "#{CGI.escape(param_name)}=#{CGI.escape(param_value)}" }.join("&")
38
+ def flush
39
+ if (@buffer.size==0)
40
+ @return_status=@empty_results
41
+ return
42
+ end
43
+ @return_status=self.buffered_send(@buffer, @common_info)
44
+ @buffer.clear
45
+ @return_status
50
46
  end
51
47
 
52
48
  def basic_auth_credentials=(credentials)
53
49
  @credentials = credentials
54
50
  end
55
51
 
56
- private
57
-
58
- def api_request(options)
59
- Net::HTTP::Post.new(complete_url(options)) #, {"User-Agent" => "messagebus.com Messagebus Ruby API v1"})
60
- end
61
-
62
- def api_endpoint_http_connection(endpoint_url)
63
- Net::HTTP.new(endpoint_url.host, endpoint_url.port)
64
- end
65
52
 
66
- def check_plain_text(plain_text)
67
- raise APIParameterError.new(":plainText can only be true or false, not \"#{plain_text}\" of type #{plain_text.class}") unless [true, false].include?(plain_text)
68
- plain_text ? "1" : "0"
53
+ def create_api_request(path)
54
+ Net::HTTP::Post.new(path) #, {"User-Agent" => "messagebus.com Messagebus Ruby API v2"})
69
55
  end
70
56
 
71
57
  def check_priority(priority)
@@ -78,11 +64,88 @@ module MessagebusRubyApi
78
64
  api_key
79
65
  end
80
66
 
81
- def verify_required_params(params)
67
+ def validate(params)
82
68
  raise APIParameterError.new("toEmail") unless params[:toEmail]
83
69
  raise APIParameterError.new("fromEmail") unless params[:fromEmail]
84
70
  raise APIParameterError.new("subject") unless params[:subject]
85
- raise APIParameterError.new("body") unless params[:body]
71
+ raise APIParameterError.new("plaintextBody or htmlBody") unless params[:plaintextBody] || params[:htmlBody]
72
+ params[:priority] = check_priority(params[:priority]) unless params[:priority].nil?
73
+ end
74
+
75
+ def buffered_send(message_list, common_options)
76
+ if (message_list.length==0)
77
+ return {
78
+ :statusMessage => "OK",
79
+ :successCount => 0,
80
+ :failureCount => 0}
81
+ end
82
+ response = @http.start do |http|
83
+ request = create_api_request(@endpoint_bulk_path)
84
+ request.basic_auth(@credentials[:user], @credentials[:password]) if @credentials
85
+ request.form_data={'json' => make_json_message_from_list(message_list, common_options)}
86
+ http.request(request)
87
+ end
88
+ case response
89
+ when Net::HTTPSuccess
90
+ begin
91
+
92
+ return JSON.parse(response.body, :symbolize_names => true)
93
+ rescue JSON::ParserError => e
94
+ raise MessagebusRubyApi::RemoteServerError.new("Remote server returned unrecognized response: #{e.message}")
95
+ end
96
+ when Net::HTTPClientError, Net::HTTPServerError
97
+ if (response.body && response.body.size > 0)
98
+ result = begin
99
+ JSON.parse(response.body, :symbolize_names => true)
100
+ rescue JSON::ParserError
101
+ nil
102
+ end
103
+ raise MessagebusRubyApi::RemoteServerError.new("Remote Server Returned: #{response.code.to_s}. #{result[:statusMessage] if result}", result)
104
+ else
105
+ raise MessagebusRubyApi::RemoteServerError.new("Remote Server Returned: #{response.code.to_s}")
106
+ end
107
+ else
108
+ raise "Unexpected HTTP Response: #{response.class.name}"
109
+ end
110
+ raise "Could not determine response"
111
+ end
112
+
113
+ def make_json_message(options)
114
+ map={}
115
+ map["toEmail"]=options[:toEmail] if (options.has_key? :toEmail)
116
+ map["toName"]=options[:toName] if (options.has_key? :toName)
117
+ map["subject"]=options[:subject] if (options.has_key? :subject)
118
+ map["plaintextBody"]=options[:plaintextBody] if (options.has_key? :plaintextBody)
119
+ map["htmlBody"]=options[:htmlBody] if (options.has_key? :htmlBody)
120
+ map["fromName"]=options[:fromName] if (options.has_key? :fromName)
121
+ map["tag"]=options[:tag] if (options.has_key? :tag)
122
+ map["replyTo"]=options[:replyTo] if (options.has_key? :replyTo)
123
+ map["errorsTo"]=options[:errorsTo] if (options.has_key? :errorsTo)
124
+ map["unsubscribeEmail"]=options[:unsubscribeEmail] if (options.has_key? :unsubscribeEmail)
125
+ map["unsubscribeURL"]=options[:unsubscribeURL] if (options.has_key? :unsubscribeURL)
126
+ map["mergeFields"]=options[:mergeFields] if (options.has_key? :mergeFields)
127
+ map
128
+ end
129
+
130
+ def make_json_message_from_list(option_list, common_options)
131
+ message_list=[]
132
+ option_list.each do |list_item|
133
+ message_list<<make_json_message(list_item)
134
+ end
135
+ json = {
136
+ "apiKey" => @api_key,
137
+ "messageCount" => message_list.length,
138
+ "messages" => message_list
139
+ }
140
+ if (common_options!=nil)
141
+ json["fromEmail"]=common_options[:fromEmail] if (common_options.has_key? :fromEmail)
142
+ json["fromName"]=common_options[:fromName] if (common_options.has_key? :fromName)
143
+ json["replyTo"]=common_options[:replyTo] if (common_options.has_key? :replyTo)
144
+ json["tags"]=common_options[:tags] if (common_options.has_key? :tags)
145
+ json["templateKey"]=common_options[:templateKey] if (common_options.has_key? :templateKey)
146
+ end
147
+
148
+ json.reject { |k, v| v == nil }.to_json
86
149
  end
87
150
  end
88
151
  end
@@ -10,8 +10,10 @@ module MessagebusRubyApi
10
10
  end
11
11
 
12
12
  class RemoteServerError < StandardError
13
- def initialize(message)
14
- super
13
+ attr_reader :result
14
+ def initialize(message, result={})
15
+ super(message)
16
+ @result = result
15
17
  end
16
18
  end
17
19
 
@@ -1,3 +1,3 @@
1
1
  module MessagebusRubyApi
2
- VERSION = "0.1.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -3,178 +3,117 @@ require "#{dir}/../spec_helper"
3
3
 
4
4
  describe MessagebusRubyApi::Client do
5
5
  attr_reader :client, :api_key, :required_params
6
+
7
+ def create_success_result(num_result)
8
+ list=[]
9
+ num_result.times do
10
+ list << @success_message
11
+ end
12
+ success_result = {
13
+ "statusMessage" => "OK",
14
+ "successCount" => 1,
15
+ "failureCount" => 0,
16
+ "results" => list
17
+ }
18
+ success_result
19
+ end
20
+
6
21
  before do
7
22
  FakeWeb.allow_net_connect = false
8
23
 
9
24
  @api_key = "3"*32
10
25
  @client = MessagebusRubyApi::Client.new(api_key)
11
- @required_params = {:toEmail => "bob@example.com", :fromEmail => "alice@example.com", :body => "a nice ocean", :subject => "test subject"}
12
- end
13
-
14
- it "requires an api key" do
15
- expect do
16
- MessagebusRubyApi::Client.new("3"*32)
17
- end.should_not raise_error(MessagebusRubyApi::BadAPIKeyError)
18
-
19
- expect do
20
- MessagebusRubyApi::Client.new("foo")
21
- end.should raise_error(MessagebusRubyApi::BadAPIKeyError)
22
- end
23
-
24
- it "knows its API key" do
25
- client.api_key.should == api_key
26
+ @required_params = {:toEmail => "bob@example.com", :fromEmail => "alice@example.com", :plaintextBody => "a nice ocean", :subject => "test subject"}
27
+ @success_message={
28
+ "status" => 200,
29
+ "messageId" => "e460d7f0-908e-012e-80b4-58b035f30fd1"
30
+ }
31
+ @simple_success_result = create_success_result(1)
26
32
  end
27
33
 
28
- it "defaults the endpoint URL if one is not supplied" do
29
- @client.endpoint_url.host.should =~ /api\.messagebus\.com/
30
- end
31
-
32
- it "talks to the supplied endpoint url" do
33
- another_client = MessagebusRubyApi::Client.new(api_key, "http://localhost:8080")
34
- another_client.endpoint_url.host.should =~ /localhost/
35
- end
36
-
37
- describe "required parameters" do
38
- it "works when the minimum params are sent" do
39
- url_params = client.to_param(required_params)
40
- FakeWeb.register_uri(:post, api_url_from_params(url_params), :body => "OK:OK")
34
+ describe "#bulk_send" do
35
+
36
+ before do
37
+ @common_options={:fromEmail => "bob@example.com"}
38
+ end
39
+
40
+ describe "#add_message" do
41
+ it "buffered send that adds to empty buffer" do
42
+ client.common_info=@common_options
43
+ client.buffer.size.should == 0
44
+ client.add_message(required_params)
45
+ client.buffer.size.should == 1
46
+ end
47
+
48
+ it "buffered send that adds to a buffer and auto-flushes" do
49
+ FakeWeb.register_uri(:post, "https://api.messagebus.com/api/v2/emails/send", :body => create_success_result(client.email_buffer_size).to_json)
50
+ client.common_info=@common_options
51
+ client.return_status[:results].size.should == 0
52
+ (client.email_buffer_size-1).times do |idx|
53
+ client.add_message(required_params).should == idx+1
54
+ client.return_status[:results].size.should == 0
55
+ end
56
+ client.add_message(required_params).should == 0
57
+ client.return_status[:results].size.should == client.email_buffer_size
58
+ end
59
+ end
60
+
61
+ describe "#flush" do
62
+ it "flush called on empty buffer" do
63
+ client.common_info=@common_options
64
+ client.return_status[:results].size.should == 0
65
+ client.flush
66
+ client.return_status[:results].size.should == 0
67
+ end
68
+ it "flush called on filled buffer" do
69
+ FakeWeb.register_uri(:post, "https://api.messagebus.com/api/v2/emails/send", :body => create_success_result(10).to_json)
70
+ client.common_info=@common_options
71
+ 10.times do
72
+ client.add_message(required_params)
73
+ end
74
+ client.flush
75
+ client.return_status[:results].size.should == 10
76
+ end
77
+ end
78
+
79
+ it "send an empty buffer" do
41
80
  expect do
42
- client.send_email(required_params)
81
+ response = client.buffered_send([], @common_options)
82
+ response[:successCount].should == 0
43
83
  end.should_not raise_error
44
84
  end
45
85
 
46
- it "raises errors when missing to_email param" do
47
- api_response = "ERR :Missing required paramater toEmail"
48
- expect_api_errors(required_params.without(:toEmail), api_response, "toEmail")
49
- end
50
-
51
- it "raises errors when missing from_email param" do
52
- api_response = "ERR:Missing required paramater fromEmail"
53
- expect_api_errors(required_params.without(:fromEmail), api_response, "fromEmail")
54
- end
55
-
56
- it "raises errors when missing subject param" do
57
- api_response = "ERR:Missing required paramater subject"
58
- expect_api_errors(required_params.without(:subject), api_response, "subject")
59
- end
60
-
61
- it "raises errors when missing body param" do
62
- api_response = "ERR:Missing required paramater body"
63
- expect_api_errors(required_params.without(:body), api_response, "body")
64
- end
65
- end
66
-
67
- describe "optional parameters" do
68
- it "allows to_name" do
69
- expect_api_success(required_params.merge(:toName => "Chuck Norris"))
70
- end
71
-
72
- it "allows from_name" do
73
- expect_api_success(required_params.merge(:fromName => "Sally Norris"))
74
- end
75
-
76
- it "allows tag" do
77
- expect_api_success(required_params.merge(:tag => "weekly"))
78
- end
79
-
80
- it "allows priority with values 1 through 5" do
81
- expect_api_success(required_params.merge(:priority => 1))
82
- expect_api_success(required_params.merge(:priority => 2))
83
- expect_api_success(required_params.merge(:priority => 3))
84
- expect_api_success(required_params.merge(:priority => 4))
85
- expect_api_success(required_params.merge(:priority => 5))
86
-
87
- expect do
88
- client.send_email(required_params.merge(:priority => "foo"))
89
- end.should raise_error(MessagebusRubyApi::APIParameterError)
90
-
86
+ it "send a single item buffer" do
87
+ buffer=[required_params]
88
+ FakeWeb.register_uri(:post, "https://api.messagebus.com/api/v2/emails/send", :body => @simple_success_result.to_json)
91
89
  expect do
92
- client.send_email(required_params.merge(:priority => 0))
93
- end.should raise_error(MessagebusRubyApi::APIParameterError)
94
-
95
- expect do
96
- client.send_email(required_params.merge(:priority => 6))
97
- end.should raise_error(MessagebusRubyApi::APIParameterError)
98
- end
99
-
100
- it "allows reply_to" do
101
- expect_api_success(required_params.merge(:replyTo => "obiwan@example.com"))
102
- end
103
-
104
- it "allows unsubscribe_email" do
105
- expect_api_success(required_params.merge(:unsubscribeEmail => "unsubscribe@aol.com"))
106
- end
107
-
108
- it "allows unsubscribe_url" do
109
- expect_api_success(required_params.merge(:unsubscribeUrl => "http://foobar.com/unsubscribe"))
110
- end
111
-
112
- it "allows plain_text" do
113
- expect_api_success(required_params.merge(:plainText => false))
114
- expect_api_success(required_params.merge(:plainText => true))
115
-
116
- expect do
117
- client.send_email(required_params.merge(:plainText => "omg not a boolean or nil"))
118
- end.should raise_error(MessagebusRubyApi::APIParameterError)
119
- end
120
- end
121
-
122
- describe "#to_param" do
123
- it "converts to param names and sorts them" do
124
- client.to_param({:toEmail => "bob@example.com", :fromEmail => "alex@example.com"}).should == "fromEmail=alex%40example.com&toEmail=bob%40example.com"
125
- end
126
- end
127
-
128
- describe "server errors" do
129
- it "raises an error with the error status received by the server" do
130
- url_params = client.to_param(required_params)
131
- error_response_body = "ERR:Some meaningful remote error"
132
- FakeWeb.register_uri(:post, api_url_from_params(url_params), status: [500, ""], :body => error_response_body)
133
- expect do
134
- client.send_email(required_params)
135
- end.should raise_error(MessagebusRubyApi::RemoteServerError, error_response_body)
136
- end
137
-
138
- it "raises an error if the remote server returns a status other than 200 OK" do
139
- url_params = client.to_param(required_params)
140
- FakeWeb.register_uri(:post, api_url_from_params(url_params), :status => [404, "Not Found"], :body => "")
141
- expect do
142
- client.send_email(required_params)
143
- end.should raise_error(MessagebusRubyApi::RemoteServerError, "ERR:Remote Server Returned: 404")
90
+ response = client.buffered_send(buffer, @common_options)
91
+ response[:successCount].should == 1
92
+ end.should_not raise_error
144
93
  end
145
- end
146
94
 
147
- describe "#basic_auth_credentials=" do
148
- it "uses basic auth with the supplied credentials" do
149
- client.basic_auth_credentials = {:user => "user", :password => "pass"}
150
- url_params = client.to_param(required_params)
151
- FakeWeb.register_uri(:post, api_url_from_params(url_params), :body => "Unauthorized", :status => ["401", "Unauthorized"])
152
- FakeWeb.register_uri(:post, "https://user:pass@api.messagebus.com/send?operation=sendEmail&apiKey=#{api_key}&#{url_params}", :body => "OK:OK")
95
+ it "send a several item buffer" do
96
+ buffer=[required_params, required_params]
97
+ @success_result2 = {
98
+ "statusMessage" => "OK",
99
+ "successCount" => 2,
100
+ "failureCount" => 0,
101
+ "results" => [
102
+ {
103
+ "status" => 200,
104
+ "messageId" => "e460d7f0-908e-012e-80b4-58b035f30fd1"
105
+ },
106
+ {
107
+ "status" => 200,
108
+ "messageId" => "e460d7f0-908e-012e-80b4-58b035f30fd2"
109
+ }
110
+ ]}
111
+ FakeWeb.register_uri(:post, "https://api.messagebus.com/api/v2/emails/send", :body => @success_result2.to_json)
153
112
  expect do
154
- client.send_email(required_params)
113
+ response = client.buffered_send(buffer, @common_options)
114
+ response[:successCount].should == 2
155
115
  end.should_not raise_error
156
116
  end
157
117
  end
158
118
  end
159
119
 
160
- def expect_api_success(params)
161
- expected_url = api_url_from_params(client.to_param(client.check_params(params.dup)))
162
- FakeWeb.register_uri(:post, expected_url, :body => "OK:OK")
163
- expect do
164
- response = client.send_email(params)
165
- response.body.should == "OK:OK"
166
- end.should_not raise_error
167
- end
168
-
169
- def expect_api_errors(params, fake_response, expected_error_message="")
170
- expected_params = client.to_param(params.dup)
171
- FakeWeb.register_uri(:post, api_url_from_params(expected_params),
172
- :body => fake_response)
173
- expect do
174
- client.send_email(params)
175
- end.should raise_error(MessagebusRubyApi::APIParameterError, "missing or malformed parameter #{expected_error_message}")
176
- end
177
-
178
- def api_url_from_params(url_param_string)
179
- "https://api.messagebus.com/send?operation=sendEmail&apiKey=#{api_key}&#{url_param_string}"
180
- end
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,7 @@ dir = File.dirname(__FILE__)
3
3
  require 'rubygems'
4
4
  require 'fakeweb'
5
5
  require 'rr'
6
+ require 'json'
6
7
 
7
8
  require "#{dir}/spec_core_extensions"
8
9
  require "#{dir}/../lib/messagebus_ruby_api"
metadata CHANGED
@@ -1,29 +1,24 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: messagebus_ruby_api
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
4
5
  prerelease:
5
- version: 0.1.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Messagebus dev team
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-02 00:00:00 -07:00
12
+ date: 2011-08-15 00:00:00.000000000 -07:00
14
13
  default_executable:
15
14
  dependencies: []
16
-
17
- description: "Allows you to use the Messagebus API "
18
- email:
15
+ description: ! 'Allows you to use the Messagebus API '
16
+ email:
19
17
  - messagebus@googlegroups.com
20
18
  executables: []
21
-
22
19
  extensions: []
23
-
24
20
  extra_rdoc_files: []
25
-
26
- files:
21
+ files:
27
22
  - lib/messagebus_ruby_api/client.rb
28
23
  - lib/messagebus_ruby_api/errors.rb
29
24
  - lib/messagebus_ruby_api/version.rb
@@ -36,34 +31,31 @@ files:
36
31
  - Rakefile
37
32
  - .rvmrc
38
33
  has_rdoc: true
39
- homepage: ""
34
+ homepage: ''
40
35
  licenses: []
41
-
42
36
  post_install_message:
43
37
  rdoc_options: []
44
-
45
- require_paths:
38
+ require_paths:
46
39
  - lib
47
- required_ruby_version: !ruby/object:Gem::Requirement
40
+ required_ruby_version: !ruby/object:Gem::Requirement
48
41
  none: false
49
- requirements:
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: "0"
53
- required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
47
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- version: "0"
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
59
52
  requirements: []
60
-
61
53
  rubyforge_project: messagebus_ruby_api
62
54
  rubygems_version: 1.6.2
63
55
  signing_key:
64
56
  specification_version: 3
65
57
  summary: Send email through Messagebus service
66
- test_files:
58
+ test_files:
67
59
  - spec/messagebus_ruby_api/client_spec.rb
68
60
  - spec/spec_core_extensions.rb
69
61
  - spec/spec_helper.rb