devver-octopi 0.2.8 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -2
- data/lib/octopi/api.rb +27 -3
- data/test/api_test.rb +16 -1
- metadata +16 -16
data/VERSION.yml
CHANGED
data/lib/octopi/api.rb
CHANGED
@@ -157,6 +157,26 @@ module Octopi
|
|
157
157
|
end
|
158
158
|
|
159
159
|
private
|
160
|
+
|
161
|
+
# http://support.github.com/discussions/site/569-using-the-v2-api-attempting-to-show-a-nonexistent-user-gives-a-500-error
|
162
|
+
# Accessing http://github.com/api/v2/json/user/show/USER when USER is a
|
163
|
+
# non-existent user will not return YAML as expected, but rather return
|
164
|
+
# HTML. HTTParty will attempt to parse the HTML as YAML, which raises
|
165
|
+
# an ArgumentError. Until this bug is fixed, we must rescue the error
|
166
|
+
# in this case and return a 404 response.
|
167
|
+
def handle_github_api_bug_569(path, format)
|
168
|
+
yield
|
169
|
+
rescue ArgumentError => error
|
170
|
+
if error.message =~ /syntax error/ && path=~/user\/show/ && format==:yaml
|
171
|
+
message =<<"__"
|
172
|
+
Artificial response created on #{__FILE__}:#{__LINE__} due to GitHub API bug 569.
|
173
|
+
See comments for details.
|
174
|
+
__
|
175
|
+
HTTParty::Response.new({}, message, 404, message, {})
|
176
|
+
else
|
177
|
+
raise
|
178
|
+
end
|
179
|
+
end
|
160
180
|
|
161
181
|
def method_missing(method, *args)
|
162
182
|
api.send(method, *args)
|
@@ -176,10 +196,14 @@ module Octopi
|
|
176
196
|
key = "#{Api.api.class.to_s}:#{path}"
|
177
197
|
resp = if cache
|
178
198
|
APICache.get(key, :cache => 61) do
|
179
|
-
|
199
|
+
handle_github_api_bug_569(path, format) do
|
200
|
+
yield(path, params, format, auth_parameters)
|
201
|
+
end
|
180
202
|
end
|
181
203
|
else
|
182
|
-
|
204
|
+
handle_github_api_bug_569(path, format) do
|
205
|
+
yield(path, params, format, auth_parameters)
|
206
|
+
end
|
183
207
|
end
|
184
208
|
rescue Net::HTTPBadResponse
|
185
209
|
raise RetryableAPIError
|
@@ -210,4 +234,4 @@ module Octopi
|
|
210
234
|
end
|
211
235
|
|
212
236
|
end
|
213
|
-
end
|
237
|
+
end
|
data/test/api_test.rb
CHANGED
@@ -37,6 +37,21 @@ class AuthenticatedTest < Test::Unit::TestCase
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
+
|
41
|
+
context "invalid user" do
|
42
|
+
|
43
|
+
should "raise Octopi::InvalidLogin" do
|
44
|
+
# This simulates the [bad] response returned from the GitHub API due to bug 569
|
45
|
+
# http://support.github.com/discussions/site/569-using-the-v2-api-attempting-to-show-a-nonexistent-user-gives-a-500-error
|
46
|
+
FakeWeb.register_uri(:get, "http://#{yaml_api}/user/show/invalid_user?",
|
47
|
+
:status => ["404", "Not Found"],
|
48
|
+
:body => "<html>:\n</html>")
|
49
|
+
assert_raise Octopi::NotFound do
|
50
|
+
Api.api.get("/user/show/invalid_user?", {})
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
40
55
|
|
41
56
|
context "keys" do
|
42
57
|
should "not be able to see keys if not authenticated" do
|
@@ -55,4 +70,4 @@ class AuthenticatedTest < Test::Unit::TestCase
|
|
55
70
|
end
|
56
71
|
end
|
57
72
|
end
|
58
|
-
end
|
73
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devver-octopi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felipe Coury
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-06 00:00:00 -
|
12
|
+
date: 2010-01-06 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -130,24 +130,24 @@ signing_key:
|
|
130
130
|
specification_version: 3
|
131
131
|
summary: A Ruby interface to GitHub API v2 (Devver Fork)
|
132
132
|
test_files:
|
133
|
-
- test/tag_test.rb
|
134
|
-
- test/issue_test.rb
|
135
|
-
- test/stubs/commits/fcoury/octopi/octopi.rb
|
136
|
-
- test/test_helper.rb
|
137
|
-
- test/key_set_test.rb
|
138
|
-
- test/blob_test.rb
|
139
|
-
- test/repository_test.rb
|
140
|
-
- test/key_test.rb
|
141
133
|
- test/api_test.rb
|
142
|
-
- test/file_object_test.rb
|
143
|
-
- test/issue_set_test.rb
|
144
|
-
- test/user_test.rb
|
145
|
-
- test/gist_test.rb
|
146
134
|
- test/authenticated_test.rb
|
135
|
+
- test/blob_test.rb
|
147
136
|
- test/branch_test.rb
|
148
|
-
- test/repository_set_test.rb
|
149
137
|
- test/commit_test.rb
|
138
|
+
- test/file_object_test.rb
|
139
|
+
- test/gist_test.rb
|
150
140
|
- test/issue_comment.rb
|
151
|
-
-
|
141
|
+
- test/issue_set_test.rb
|
142
|
+
- test/issue_test.rb
|
143
|
+
- test/key_set_test.rb
|
144
|
+
- test/key_test.rb
|
145
|
+
- test/repository_set_test.rb
|
146
|
+
- test/repository_test.rb
|
147
|
+
- test/stubs/commits/fcoury/octopi/octopi.rb
|
148
|
+
- test/tag_test.rb
|
149
|
+
- test/test_helper.rb
|
150
|
+
- test/user_test.rb
|
152
151
|
- examples/authenticated.rb
|
152
|
+
- examples/issues.rb
|
153
153
|
- examples/overall.rb
|