rosemary 0.2.7 → 0.2.8

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/lib/rosemary/api.rb CHANGED
@@ -208,17 +208,19 @@ module Rosemary
208
208
  def check_response_codes(response)
209
209
  body = response.body
210
210
  case response.code.to_i
211
- when 200 then return
212
- when 400 then raise BadRequest.new(body)
213
- when 401 then raise Unauthorized.new(body)
214
- when 404 then raise NotFound.new(body)
215
- when 405 then raise MethodNotAllowed.new(body)
216
- when 409 then raise Conflict.new(body)
217
- when 410 then raise Gone.new(body)
218
- when 412 then raise Precondition.new(body)
219
- when 500 then raise ServerError
220
- when 503 then raise Unavailable.new('Service Unavailable')
221
- else raise Error
211
+ when 200 then return
212
+ when 400 then raise BadRequest.new(body)
213
+ when 401 then raise Unauthorized.new(body)
214
+ when 403 then raise Forbidden.new(body)
215
+ when 404 then raise NotFound.new(body)
216
+ when 405 then raise MethodNotAllowed.new(body)
217
+ when 409 then raise Conflict.new(body)
218
+ when 410 then raise Gone.new(body)
219
+ when 412 then raise Precondition.new(body)
220
+ # when 414 then raise UriTooLarge.new(body)
221
+ when 500 then raise ServerError
222
+ when 503 then raise Unavailable.new('Service Unavailable')
223
+ else raise Error("Unknown response code: #{response.code}")
222
224
  end
223
225
  end
224
226
 
@@ -25,6 +25,8 @@ module Rosemary
25
25
  # password for a write operation.
26
26
  class Unauthorized < Error; end # 401
27
27
 
28
+ class Forbidden < Error; end # 403
29
+
28
30
  # The object was not found (HTTP 404). Generally means that the object doesn't exist
29
31
  # and never has.
30
32
  class NotFound < Error; end # 404
@@ -1,3 +1,3 @@
1
1
  module Rosemary
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8"
3
3
  end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rosemary::User do
4
+
5
+ before do
6
+ WebMock.disable_net_connect!
7
+ end
8
+
9
+ let :consumer do
10
+ OAuth::Consumer.new( 'a_key', 'a_secret',
11
+ {
12
+ :site => 'http://www.openstreetmap.org',
13
+ :request_token_path => '/oauth/request_token',
14
+ :access_token_path => '/oauth/access_token',
15
+ :authorize_path => '/oauth/authorize'
16
+ }
17
+ )
18
+ end
19
+
20
+ let :access_token do
21
+ OAuth::AccessToken.new(consumer, 'a_token', 'a_secret')
22
+ end
23
+
24
+ let :osm do
25
+ Rosemary::Api.new(Rosemary::OauthClient.new(access_token))
26
+ end
27
+
28
+ def valid_fake_user
29
+ way=<<-EOF
30
+ <osm version="0.6" generator="OpenStreetMap server">
31
+ <user display_name="Max Muster" account_created="2006-07-21T19:28:26Z" id="1234">
32
+ <home lat="49.4733718952806" lon="8.89285988577866" zoom="3"/>
33
+ <description>The description of your profile</description>
34
+ <languages>
35
+ <lang>de-DE</lang>
36
+ <lang>de</lang>
37
+ <lang>en-US</lang>
38
+ <lang>en</lang>
39
+ </languages>
40
+ </user>
41
+ </osm>
42
+ EOF
43
+ end
44
+
45
+ describe '#find:' do
46
+
47
+ it "should build a User from API response via find_user" do
48
+ stub_request(:get, "http://www.openstreetmap.org/api/0.6/user/details").to_return(:status => 200, :body => valid_fake_user, :headers => {'Content-Type' => 'application/xml'})
49
+ user = osm.find_user
50
+ user.class.should eql Rosemary::User
51
+ end
52
+
53
+ it "should raise error from api" do
54
+ stub_request(:get, "http://www.openstreetmap.org/api/0.6/user/details").to_return(:status => 403, :body => "OAuth token doesn't have that capability.", :headers => {'Content-Type' => 'plain/text'})
55
+ lambda {
56
+ osm.find_user
57
+ }.should raise_error Rosemary::Forbidden
58
+ end
59
+ end
60
+ end
61
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rosemary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &70184620425620 !ruby/object:Gem::Requirement
16
+ requirement: &70147855734540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70184620425620
24
+ version_requirements: *70147855734540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: libxml-ruby
27
- requirement: &70184620425100 !ruby/object:Gem::Requirement
27
+ requirement: &70147855733880 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70184620425100
35
+ version_requirements: *70147855733880
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: builder
38
- requirement: &70184620424440 !ruby/object:Gem::Requirement
38
+ requirement: &70147855733360 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70184620424440
46
+ version_requirements: *70147855733360
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: oauth
49
- requirement: &70184620423940 !ruby/object:Gem::Requirement
49
+ requirement: &70147855732860 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70184620423940
57
+ version_requirements: *70147855732860
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activemodel
60
- requirement: &70184620423460 !ruby/object:Gem::Requirement
60
+ requirement: &70147855732360 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70184620423460
68
+ version_requirements: *70147855732360
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &70184620422960 !ruby/object:Gem::Requirement
71
+ requirement: &70147855731880 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70184620422960
79
+ version_requirements: *70147855731880
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: webmock
82
- requirement: &70184620422480 !ruby/object:Gem::Requirement
82
+ requirement: &70147855731400 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70184620422480
90
+ version_requirements: *70147855731400
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rake
93
- requirement: &70184620422000 !ruby/object:Gem::Requirement
93
+ requirement: &70147855730900 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70184620422000
101
+ version_requirements: *70147855730900
102
102
  description: OpenStreetMap API client for ruby
103
103
  email:
104
104
  - info@christophbuente.de
@@ -156,6 +156,7 @@ files:
156
156
  - rosemary.gemspec
157
157
  - spec/integration/changeset_spec.rb
158
158
  - spec/integration/node_spec.rb
159
+ - spec/integration/user_spec.rb
159
160
  - spec/integration/way_spec.rb
160
161
  - spec/models/changeset_spec.rb
161
162
  - spec/models/node_spec.rb
@@ -182,7 +183,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
183
  version: '0'
183
184
  segments:
184
185
  - 0
185
- hash: -2422917750026557499
186
+ hash: -3755060652839665335
186
187
  required_rubygems_version: !ruby/object:Gem::Requirement
187
188
  none: false
188
189
  requirements:
@@ -198,6 +199,7 @@ summary: OpenStreetMap API client for ruby
198
199
  test_files:
199
200
  - spec/integration/changeset_spec.rb
200
201
  - spec/integration/node_spec.rb
202
+ - spec/integration/user_spec.rb
201
203
  - spec/integration/way_spec.rb
202
204
  - spec/models/changeset_spec.rb
203
205
  - spec/models/node_spec.rb