messagebus_ruby_api 0.1.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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