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 +13 -11
- data/lib/rosemary/errors.rb +2 -0
- data/lib/rosemary/version.rb +1 -1
- data/spec/integration/user_spec.rb +61 -0
- metadata +20 -18
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
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
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
|
|
data/lib/rosemary/errors.rb
CHANGED
@@ -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
|
data/lib/rosemary/version.rb
CHANGED
@@ -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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *70147855734540
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: libxml-ruby
|
27
|
-
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: *
|
35
|
+
version_requirements: *70147855733880
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: builder
|
38
|
-
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: *
|
46
|
+
version_requirements: *70147855733360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: oauth
|
49
|
-
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: *
|
57
|
+
version_requirements: *70147855732860
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: activemodel
|
60
|
-
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: *
|
68
|
+
version_requirements: *70147855732360
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
|
-
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: *
|
79
|
+
version_requirements: *70147855731880
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: webmock
|
82
|
-
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: *
|
90
|
+
version_requirements: *70147855731400
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rake
|
93
|
-
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: *
|
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: -
|
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
|