rpx_now 0.5.10 → 0.5.11

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.markdown CHANGED
@@ -23,7 +23,7 @@ Usage
23
23
  Install
24
24
  =======
25
25
  - As Rails plugin: `script/plugin install git://github.com/grosser/rpx_now.git `
26
- - As gem: `sudo gem install grosser-rpx_now --source http://gems.github.com/`
26
+ - As gem: `sudo gem install rpx_now`
27
27
 
28
28
  Examples
29
29
  ========
@@ -40,10 +40,13 @@ View
40
40
  Environment
41
41
  -----------
42
42
  Rails::Initializer.run do |config|
43
- config.gem "grosser-rpx_now", :lib => "rpx_now", :source => "http://gems.github.com/"
43
+ config.gem "rpx_now"
44
44
  ...
45
+
46
+ config.after_initialize do # so rake gems:install works
47
+ RPXNow.api_key = "YOU RPX API KEY"
48
+ end
45
49
  end
46
- RPXNow.api_key = "YOU RPX API KEY"
47
50
 
48
51
  Controller
49
52
  ----------
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.10
1
+ 0.5.11
data/lib/rpx_now.rb CHANGED
@@ -1,4 +1,8 @@
1
+ require 'net/http'
2
+ require 'net/https'
1
3
  require 'json'
4
+
5
+ require 'rpx_now/request'
2
6
  require 'rpx_now/contacts_collection'
3
7
  require 'rpx_now/user_integration'
4
8
  require 'rpx_now/user_proxy'
@@ -6,15 +10,14 @@ require 'rpx_now/user_proxy'
6
10
  module RPXNow
7
11
  extend self
8
12
 
9
- HOST = 'rpxnow.com'
10
- SSL_CERT = File.join(File.dirname(__FILE__), '..', 'certs', 'ssl_cert.pem')
11
-
12
13
  attr_accessor :api_key
13
14
  attr_accessor :api_version
14
15
  self.api_version = 2
15
16
 
16
- # retrieve the users data, or return nil when nothing could be read/token was invalid
17
- # or data was not found
17
+ # retrieve the users data
18
+ # - cleaned Hash
19
+ # - complete/unclean response when block was given user_data{|response| ...; return hash }
20
+ # - nil when token was invalid / data was not found
18
21
  def user_data(token, *args)
19
22
  api_key, version, options = extract_key_version_and_options!(args)
20
23
  options = {:token=>token,:apiKey=>api_key}.merge options
@@ -25,7 +28,7 @@ module RPXNow
25
28
  return nil if $!.to_s=~/Data not found/
26
29
  raise
27
30
  end
28
- if block_given? then yield(data) else read_user_data_from_response(data) end
31
+ if block_given? then yield(data) else parse_user_data(data) end
29
32
  end
30
33
 
31
34
  # set the users status
@@ -80,7 +83,7 @@ module RPXNow
80
83
  def embed_code(subdomain,url,options={})
81
84
  options = {:width => '400', :height => '240', :language => 'en'}.merge(options)
82
85
  <<EOF
83
- <iframe src="https://#{subdomain}.#{HOST}/openid/embed?token_url=#{url}&language_preference=#{options[:language]}"
86
+ <iframe src="https://#{subdomain}.#{Request::HOST}/openid/embed?token_url=#{url}&language_preference=#{options[:language]}"
84
87
  scrolling="no" frameBorder="no" style="width:#{options[:width]}px;height:#{options[:height]}px;">
85
88
  </iframe>
86
89
  EOF
@@ -96,18 +99,29 @@ EOF
96
99
 
97
100
  private
98
101
 
102
+ def self.parse_user_data(response)
103
+ user_data = response['profile']
104
+ data = {}
105
+ data[:identifier] = user_data['identifier']
106
+ data[:email] = user_data['verifiedEmail'] || user_data['email']
107
+ data[:username] = user_data['preferredUsername'] || data[:email].to_s.sub(/@.*/,'')
108
+ data[:name] = user_data['displayName'] || data[:username]
109
+ data[:id] = user_data['primaryKey'] unless user_data['primaryKey'].to_s.empty?
110
+ data
111
+ end
112
+
99
113
  def unobtrusive_popup_code(text, subdomain, url, options={})
100
114
  version = extract_version! options
101
- "<a class=\"rpxnow\" href=\"https://#{subdomain}.#{HOST}/openid/v#{version}/signin?token_url=#{url}\">#{text}</a>"
115
+ "<a class=\"rpxnow\" href=\"https://#{subdomain}.#{Request::HOST}/openid/v#{version}/signin?token_url=#{url}\">#{text}</a>"
102
116
  end
103
117
 
104
118
  def obtrusive_popup_code(text, subdomain, url, options = {})
105
119
  version = extract_version! options
106
120
  <<EOF
107
- <a class="rpxnow" onclick="return false;" href="https://#{subdomain}.#{HOST}/openid/v#{version}/signin?token_url=#{url}">
121
+ <a class="rpxnow" onclick="return false;" href="https://#{subdomain}.#{Request::HOST}/openid/v#{version}/signin?token_url=#{url}">
108
122
  #{text}
109
123
  </a>
110
- <script src="https://#{HOST}/openid/v#{version}/widget" type="text/javascript"></script>
124
+ <script src="https://#{Request::HOST}/openid/v#{version}/widget" type="text/javascript"></script>
111
125
  <script type="text/javascript">
112
126
  //<![CDATA[
113
127
  RPXNOW.token_url = "#{url}";
@@ -144,52 +158,8 @@ EOF
144
158
  options.delete(:api_version) || api_version
145
159
  end
146
160
 
147
- def read_user_data_from_response(response)
148
- user_data = response['profile']
149
- data = {}
150
- data[:identifier] = user_data['identifier']
151
- data[:email] = user_data['verifiedEmail'] || user_data['email']
152
- data[:username] = user_data['preferredUsername'] || data[:email].to_s.sub(/@.*/,'')
153
- data[:name] = user_data['displayName'] || data[:username]
154
- data[:id] = user_data['primaryKey'] unless user_data['primaryKey'].to_s.empty?
155
- data
156
- end
157
-
158
161
  def secure_json_post(path, data)
159
- parse_response(post(path,data))
160
- end
161
-
162
- def post(path, data)
163
- require 'net/http'
164
- require 'net/https'
165
- request = Net::HTTP::Post.new(path)
166
- request.form_data = data.map{|k,v| [k.to_s,v]}#symbol keys -> string because of ruby 1.9.x bug http://redmine.ruby-lang.org/issues/show/1351
167
- make_request(request)
168
- end
169
-
170
- def make_request(request)
171
- http = Net::HTTP.new(HOST, 443)
172
- http.use_ssl = true
173
- http.ca_file = SSL_CERT
174
- http.verify_mode = OpenSSL::SSL::VERIFY_PEER
175
- http.verify_depth = 5
176
- http.request(request)
177
- end
178
-
179
- def parse_response(response)
180
- if response.code.to_i >= 400
181
- raise ServiceUnavailableError, "The RPX service is temporarily unavailable. (4XX)"
182
- else
183
- result = JSON.parse(response.body)
184
- return result unless result['err']
185
-
186
- code = result['err']['code']
187
- if code == -1
188
- raise ServiceUnavailableError, "The RPX service is temporarily unavailable."
189
- else
190
- raise ApiError, "Got error: #{result['err']['msg']} (code: #{code}), HTTP status: #{response.code}"
191
- end
192
- end
162
+ Request.post(path, data)
193
163
  end
194
164
 
195
165
  class ServerError < RuntimeError; end #backwards compatibility / catch all
@@ -0,0 +1,43 @@
1
+ module RPXNow
2
+ class Request
3
+ HOST = 'rpxnow.com'
4
+ SSL_CERT = File.join(File.dirname(__FILE__), '..', '..', 'certs', 'ssl_cert.pem')
5
+
6
+ def self.post(path, data)
7
+ parse_response(request(path,data))
8
+ end
9
+
10
+ private
11
+
12
+ def self.request(path, data)
13
+ request = Net::HTTP::Post.new(path)
14
+ request.form_data = data.map{|k,v| [k.to_s,v]}#symbol keys -> string because of ruby 1.9.x bug http://redmine.ruby-lang.org/issues/show/1351
15
+ make_request(request)
16
+ end
17
+
18
+ def self.make_request(request)
19
+ http = Net::HTTP.new(HOST, 443)
20
+ http.use_ssl = true
21
+ http.ca_file = SSL_CERT
22
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
23
+ http.verify_depth = 5
24
+ http.request(request)
25
+ end
26
+
27
+ def self.parse_response(response)
28
+ if response.code.to_i >= 400
29
+ raise ServiceUnavailableError, "The RPX service is temporarily unavailable. (4XX)"
30
+ else
31
+ result = JSON.parse(response.body)
32
+ return result unless result['err']
33
+
34
+ code = result['err']['code']
35
+ if code == -1
36
+ raise ServiceUnavailableError, "The RPX service is temporarily unavailable."
37
+ else
38
+ raise ApiError, "Got error: #{result['err']['msg']} (code: #{code}), HTTP status: #{response.code}"
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
Binary file
Binary file
data/rdoc/README.rdoc ADDED
@@ -0,0 +1 @@
1
+ documentation is at http://github.com/grosser/rpx_now
data/rpx_now.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rpx_now}
8
- s.version = "0.5.10"
8
+ s.version = "0.5.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Grosser"]
12
- s.date = %q{2009-10-06}
12
+ s.date = %q{2009-10-07}
13
13
  s.email = %q{grosser.michael@gmail.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.markdown"
@@ -24,12 +24,16 @@ Gem::Specification.new do |s|
24
24
  "init.rb",
25
25
  "lib/rpx_now.rb",
26
26
  "lib/rpx_now/contacts_collection.rb",
27
+ "lib/rpx_now/request.rb",
27
28
  "lib/rpx_now/user_integration.rb",
28
29
  "lib/rpx_now/user_proxy.rb",
29
30
  "pkg/rpx_now-0.5.10.gem",
31
+ "pkg/rpx_now-0.5.11.gem",
32
+ "rdoc/README.rdoc",
30
33
  "rpx_now.gemspec",
31
34
  "spec/fixtures/get_contacts_response.json",
32
35
  "spec/rpx_now/contacts_collection_spec.rb",
36
+ "spec/rpx_now/request_spec.rb",
33
37
  "spec/rpx_now/user_proxy_spec.rb",
34
38
  "spec/rpx_now_spec.rb",
35
39
  "spec/spec_helper.rb"
@@ -44,6 +48,7 @@ Gem::Specification.new do |s|
44
48
  "spec/rpx_now_spec.rb",
45
49
  "spec/rpx_now/contacts_collection_spec.rb",
46
50
  "spec/rpx_now/user_proxy_spec.rb",
51
+ "spec/rpx_now/request_spec.rb",
47
52
  "spec/spec_helper.rb"
48
53
  ]
49
54
 
@@ -1,4 +1,4 @@
1
- require File.expand_path("../spec_helper", File.dirname(__FILE__))
1
+ require 'spec/spec_helper'
2
2
 
3
3
  describe RPXNow::ContactsCollection do
4
4
  before do
@@ -0,0 +1,41 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe RPXNow::Request do
4
+ describe 'ssl cert' do
5
+ it "has an absolute path" do
6
+ RPXNow::Request::SSL_CERT[0..0].should == '/' #start with '/'
7
+ end
8
+
9
+ it "exists" do
10
+ File.read(RPXNow::Request::SSL_CERT).to_s.should_not be_empty
11
+ end
12
+ end
13
+
14
+ describe :parse_response do
15
+ it "parses json when status is ok" do
16
+ response = mock(:code=>'200', :body=>%Q({"stat":"ok","data":"xx"}))
17
+ RPXNow::Request.send(:parse_response, response)['data'].should == "xx"
18
+ end
19
+
20
+ it "raises when there is a communication error" do
21
+ response = stub(:code=>'200', :body=>%Q({"err":"wtf","stat":"ok"}))
22
+ lambda{
23
+ RPXNow::Request.send(:parse_response,response)
24
+ }.should raise_error(RPXNow::ApiError)
25
+ end
26
+
27
+ it "raises when service has downtime" do
28
+ response = stub(:code=>'200', :body=>%Q({"err":{"code":-1},"stat":"ok"}))
29
+ lambda{
30
+ RPXNow::Request.send(:parse_response,response)
31
+ }.should raise_error(RPXNow::ServiceUnavailableError)
32
+ end
33
+
34
+ it "raises when service is down" do
35
+ response = stub(:code=>'400',:body=>%Q({"stat":"err"}))
36
+ lambda{
37
+ RPXNow::Request.send(:parse_response,response)
38
+ }.should raise_error(RPXNow::ServiceUnavailableError)
39
+ end
40
+ end
41
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path("../spec_helper", File.dirname(__FILE__))
1
+ require 'spec/spec_helper'
2
2
 
3
3
  class User
4
4
  include RPXNow::UserIntegration
data/spec/rpx_now_spec.rb CHANGED
@@ -1,10 +1,10 @@
1
- require File.expand_path("spec_helper", File.dirname(__FILE__))
1
+ require 'spec/spec_helper'
2
2
 
3
3
  describe RPXNow do
4
4
  describe :api_key= do
5
5
  it "stores the api key, so i do not have to supply everytime" do
6
6
  RPXNow.api_key='XX'
7
- RPXNow.expects(:post).with{|x,data|data[:apiKey]=='XX'}.returns mock(:code=>'200', :body=>%Q({"stat":"ok"}))
7
+ RPXNow::Request.should_receive(:request).with{|x,data|data[:apiKey]=='XX'}.and_return mock(:code=>'200', :body=>%Q({"stat":"ok"}))
8
8
  RPXNow.mappings(1)
9
9
  end
10
10
  end
@@ -98,55 +98,61 @@ describe RPXNow do
98
98
  end
99
99
 
100
100
  it "parses JSON response to user data" do
101
- RPXNow.expects(:post).returns fake_response
102
- RPXNow.user_data('').should == {:name=>'Michael Grosser',:email=>'grosser.michael@googlemail.com',:identifier=>"https://www.google.com/accounts/o8/id?id=AItOawmaOlyYezg_WfbgP_qjaUyHjmqZD9qNIVM", :username => 'grosser.michael'}
101
+ expected = {
102
+ :name => 'Michael Grosser',
103
+ :email => 'grosser.michael@googlemail.com',
104
+ :identifier => 'https://www.google.com/accounts/o8/id?id=AItOawmaOlyYezg_WfbgP_qjaUyHjmqZD9qNIVM',
105
+ :username => 'grosser.michael',
106
+ }
107
+ RPXNow::Request.should_receive(:request).and_return fake_response
108
+ RPXNow.user_data('').should == expected
103
109
  end
104
110
 
105
111
  it "adds a :id when primaryKey was returned" do
106
112
  @response_body.sub!(%Q("verifiedEmail"), %Q("primaryKey":"2","verifiedEmail"))
107
- RPXNow.expects(:post).returns fake_response
113
+ RPXNow::Request.should_receive(:request).and_return fake_response
108
114
  RPXNow.user_data('')[:id].should == '2'
109
115
  end
110
116
 
111
117
  it "handles primaryKeys that are not numeric" do
112
118
  @response_body.sub!(%Q("verifiedEmail"), %Q("primaryKey":"dbalatero","verifiedEmail"))
113
- RPXNow.expects(:post).returns fake_response
119
+ RPXNow::Request.should_receive(:request).and_return fake_response
114
120
  RPXNow.user_data('')[:id].should == 'dbalatero'
115
121
  end
116
122
 
117
123
  it "hands JSON response to supplied block" do
118
- RPXNow.expects(:post).returns mock(:code=>'200',:body=>%Q({"x":"1","stat":"ok"}))
124
+ RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"x":"1","stat":"ok"}))
119
125
  response = nil
120
126
  RPXNow.user_data(''){|data| response = data}
121
127
  response.should == {"x" => "1", "stat" => "ok"}
122
128
  end
123
129
 
124
130
  it "returns what the supplied block returned" do
125
- RPXNow.expects(:post).returns mock(:code=>'200',:body=>%Q({"x":"1","stat":"ok"}))
131
+ RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"x":"1","stat":"ok"}))
126
132
  RPXNow.user_data(''){|data| "x"}.should == 'x'
127
133
  end
128
134
 
129
135
  it "can send additional parameters" do
130
- RPXNow.expects(:post).with{|url,data|
136
+ RPXNow::Request.should_receive(:request).with{|url,data|
131
137
  data[:extended].should == 'true'
132
- }.returns fake_response
138
+ }.and_return fake_response
133
139
  RPXNow.user_data('',:extended=>'true')
134
140
  end
135
141
 
136
142
  it "works with api key as 2nd parameter (backwards compatibility)" do
137
- RPXNow.expects(:secure_json_post).with('/api/v2/auth_info', :apiKey=>'THE KEY', :token=>'id').returns @fake_user_data
143
+ RPXNow.should_receive(:secure_json_post).with('/api/v2/auth_info', :apiKey=>'THE KEY', :token=>'id').and_return @fake_user_data
138
144
  RPXNow.user_data('id', 'THE KEY')
139
145
  RPXNow.api_key.should == API_KEY
140
146
  end
141
147
 
142
148
  it "works with api key as 2nd parameter and options (backwards compatibility)" do
143
- RPXNow.expects(:secure_json_post).with('/api/v2/auth_info', :apiKey=>'THE KEY', :extended=>'abc', :token=>'id' ).returns @fake_user_data
149
+ RPXNow.should_receive(:secure_json_post).with('/api/v2/auth_info', :apiKey=>'THE KEY', :extended=>'abc', :token=>'id' ).and_return @fake_user_data
144
150
  RPXNow.user_data('id', 'THE KEY', :extended=>'abc')
145
151
  RPXNow.api_key.should == API_KEY
146
152
  end
147
153
 
148
154
  it "works with api version as option (backwards compatibility)" do
149
- RPXNow.expects(:secure_json_post).with('/api/v123/auth_info', :apiKey=>API_KEY, :token=>'id', :extended=>'abc').returns @fake_user_data
155
+ RPXNow.should_receive(:secure_json_post).with('/api/v123/auth_info', :apiKey=>API_KEY, :token=>'id', :extended=>'abc').and_return @fake_user_data
150
156
  RPXNow.user_data('id', :extended=>'abc', :api_version=>123)
151
157
  RPXNow.api_version.should == API_VERSION
152
158
  end
@@ -162,79 +168,51 @@ describe RPXNow do
162
168
  end
163
169
 
164
170
  it "parses JSON response to result hash" do
165
- RPXNow.expects(:post).returns fake_response
171
+ RPXNow::Request.should_receive(:request).and_return fake_response
166
172
  RPXNow.set_status('identifier', 'Chillen...').should == {'stat' => 'ok'}
167
173
  end
168
174
  end
169
175
 
170
176
  describe :read_user_data_from_response do
171
177
  it "reads secondary names" do
172
- RPXNow.send(:read_user_data_from_response,{'profile'=>{'preferredUsername'=>'1'}})[:name].should == '1'
178
+ RPXNow.send(:parse_user_data,{'profile'=>{'preferredUsername'=>'1'}})[:name].should == '1'
173
179
  end
174
180
 
175
181
  it "parses email when no name is found" do
176
- RPXNow.send(:read_user_data_from_response,{'profile'=>{'email'=>'1@xxx.com'}})[:name].should == '1'
182
+ RPXNow.send(:parse_user_data,{'profile'=>{'email'=>'1@xxx.com'}})[:name].should == '1'
177
183
  end
178
184
  end
179
185
 
180
186
  describe :contacts do
181
187
  it "finds all contacts" do
182
188
  response = JSON.parse(File.read('spec/fixtures/get_contacts_response.json'))
183
- RPXNow.expects(:secure_json_post).with('/api/v2/get_contacts',:identifier=>'xx', :apiKey=>API_KEY).returns response
189
+ RPXNow.should_receive(:secure_json_post).with('/api/v2/get_contacts',:identifier=>'xx', :apiKey=>API_KEY).and_return response
184
190
  RPXNow.contacts('xx').size.should == 5
185
191
  end
186
192
  end
187
193
 
188
- describe :parse_response do
189
- it "parses json when status is ok" do
190
- response = mock(:code=>'200', :body=>%Q({"stat":"ok","data":"xx"}))
191
- RPXNow.send(:parse_response, response)['data'].should == "xx"
192
- end
193
-
194
- it "raises when there is a communication error" do
195
- response = stub(:code=>'200', :body=>%Q({"err":"wtf","stat":"ok"}))
196
- lambda{
197
- RPXNow.send(:parse_response,response)
198
- }.should raise_error(RPXNow::ApiError)
199
- end
200
-
201
- it "raises when service has downtime" do
202
- response = stub(:code=>'200', :body=>%Q({"err":{"code":-1},"stat":"ok"}))
203
- lambda{
204
- RPXNow.send(:parse_response,response)
205
- }.should raise_error(RPXNow::ServiceUnavailableError)
206
- end
207
-
208
- it "raises when service is down" do
209
- response = stub(:code=>'400',:body=>%Q({"stat":"err"}))
210
- lambda{
211
- RPXNow.send(:parse_response,response)
212
- }.should raise_error(RPXNow::ServiceUnavailableError)
213
- end
214
- end
215
-
216
194
  describe :mappings do
217
195
  it "parses JSON response to unmap data" do
218
- RPXNow.expects(:post).returns mock(:code=>'200',:body=>%Q({"stat":"ok", "identifiers": ["http://test.myopenid.com/"]}))
196
+ RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"stat":"ok", "identifiers": ["http://test.myopenid.com/"]}))
219
197
  RPXNow.mappings(1, "x").should == ["http://test.myopenid.com/"]
220
198
  end
221
199
  end
222
200
 
223
201
  describe :map do
224
202
  it "adds a mapping" do
225
- RPXNow.expects(:post).returns mock(:code=>'200',:body=>%Q({"stat":"ok"}))
203
+ RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"stat":"ok"}))
226
204
  RPXNow.map('http://test.myopenid.com',1, API_KEY)
227
205
  end
228
206
  end
229
207
 
230
208
  describe :unmap do
231
209
  it "unmaps a indentifier" do
232
- RPXNow.expects(:post).returns mock(:code=>'200',:body=>%Q({"stat":"ok"}))
210
+ RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"stat":"ok"}))
233
211
  RPXNow.unmap('http://test.myopenid.com', 1, "x")
234
212
  end
235
213
 
236
214
  it "can be called with a specific version" do
237
- RPXNow.expects(:secure_json_post).with{|a,b|a == "/api/v300/unmap"}
215
+ RPXNow.should_receive(:secure_json_post).with{|a,b|a == "/api/v300/unmap"}
238
216
  RPXNow.unmap('http://test.myopenid.com', 1, :api_key=>'xxx', :api_version=>300)
239
217
  end
240
218
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # ---- requirements
2
2
  require 'rubygems'
3
3
  require 'spec'
4
- require 'mocha'
5
4
 
6
5
  $LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
7
6
 
@@ -12,7 +11,6 @@ API_VERSION = RPXNow.api_version
12
11
 
13
12
  # ---- rspec
14
13
  Spec::Runner.configure do |config|
15
- config.mock_with :mocha
16
14
  config.before :each do
17
15
  RPXNow.api_key = API_KEY
18
16
  RPXNow.api_version = API_VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rpx_now
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.10
4
+ version: 0.5.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-06 00:00:00 +02:00
12
+ date: 2009-10-07 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -40,12 +40,16 @@ files:
40
40
  - init.rb
41
41
  - lib/rpx_now.rb
42
42
  - lib/rpx_now/contacts_collection.rb
43
+ - lib/rpx_now/request.rb
43
44
  - lib/rpx_now/user_integration.rb
44
45
  - lib/rpx_now/user_proxy.rb
45
46
  - pkg/rpx_now-0.5.10.gem
47
+ - pkg/rpx_now-0.5.11.gem
48
+ - rdoc/README.rdoc
46
49
  - rpx_now.gemspec
47
50
  - spec/fixtures/get_contacts_response.json
48
51
  - spec/rpx_now/contacts_collection_spec.rb
52
+ - spec/rpx_now/request_spec.rb
49
53
  - spec/rpx_now/user_proxy_spec.rb
50
54
  - spec/rpx_now_spec.rb
51
55
  - spec/spec_helper.rb
@@ -81,4 +85,5 @@ test_files:
81
85
  - spec/rpx_now_spec.rb
82
86
  - spec/rpx_now/contacts_collection_spec.rb
83
87
  - spec/rpx_now/user_proxy_spec.rb
88
+ - spec/rpx_now/request_spec.rb
84
89
  - spec/spec_helper.rb