frameworks-capybara 0.2.9 → 0.2.10
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/monkey-patches/mechanize-patches.rb +108 -0
- data/lib/version.rb +1 -1
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -57,3 +57,111 @@ end
|
|
57
57
|
end
|
58
58
|
=end
|
59
59
|
|
60
|
+
# This patch prevents Mechanize from raising a Mechanize::ResponseCodeError
|
61
|
+
# when the HTTP Response Code is 503 or 404. This lets capybara continue the journey.
|
62
|
+
class Mechanize::HTTP::Agent
|
63
|
+
def fetch uri, method = :get, headers = {}, params = [],
|
64
|
+
referer = current_page, redirects = 0
|
65
|
+
referer_uri = referer ? referer.uri : nil
|
66
|
+
|
67
|
+
uri = resolve uri, referer
|
68
|
+
|
69
|
+
uri, params = resolve_parameters uri, method, params
|
70
|
+
|
71
|
+
request = http_request uri, method, params
|
72
|
+
|
73
|
+
connection = connection_for uri
|
74
|
+
|
75
|
+
request_auth request, uri
|
76
|
+
|
77
|
+
disable_keep_alive request
|
78
|
+
enable_gzip request
|
79
|
+
|
80
|
+
request_language_charset request
|
81
|
+
request_cookies request, uri
|
82
|
+
request_host request, uri
|
83
|
+
request_referer request, uri, referer_uri
|
84
|
+
request_user_agent request
|
85
|
+
request_add_headers request, headers
|
86
|
+
|
87
|
+
pre_connect request
|
88
|
+
|
89
|
+
# Consult robots.txt
|
90
|
+
if robots && uri.is_a?(URI::HTTP)
|
91
|
+
robots_allowed?(uri) or raise Mechanize::RobotsDisallowedError.new(uri)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Add If-Modified-Since if page is in history
|
95
|
+
page = visited_page(uri)
|
96
|
+
|
97
|
+
if (page = visited_page(uri)) and page.response['Last-Modified']
|
98
|
+
request['If-Modified-Since'] = page.response['Last-Modified']
|
99
|
+
end if(@conditional_requests)
|
100
|
+
|
101
|
+
# Specify timeouts if given
|
102
|
+
connection.open_timeout = @open_timeout if @open_timeout
|
103
|
+
connection.read_timeout = @read_timeout if @read_timeout
|
104
|
+
|
105
|
+
request_log request
|
106
|
+
|
107
|
+
response_body_io = nil
|
108
|
+
|
109
|
+
# Send the request
|
110
|
+
begin
|
111
|
+
response = connection.request(uri, request) { |res|
|
112
|
+
response_log res
|
113
|
+
|
114
|
+
response_body_io = response_read res, request, uri
|
115
|
+
|
116
|
+
res
|
117
|
+
}
|
118
|
+
rescue Mechanize::ChunkedTerminationError => e
|
119
|
+
raise unless @ignore_bad_chunking
|
120
|
+
|
121
|
+
response = e.response
|
122
|
+
response_body_io = e.body_io
|
123
|
+
end
|
124
|
+
|
125
|
+
hook_content_encoding response, uri, response_body_io
|
126
|
+
|
127
|
+
response_body_io = response_content_encoding response, response_body_io if
|
128
|
+
request.response_body_permitted?
|
129
|
+
|
130
|
+
post_connect uri, response, response_body_io
|
131
|
+
|
132
|
+
page = response_parse response, response_body_io, uri
|
133
|
+
|
134
|
+
response_cookies response, uri, page
|
135
|
+
|
136
|
+
meta = response_follow_meta_refresh response, uri, page, redirects
|
137
|
+
|
138
|
+
return meta if meta
|
139
|
+
|
140
|
+
case response
|
141
|
+
when Net::HTTPSuccess
|
142
|
+
if robots && page.is_a?(Mechanize::Page)
|
143
|
+
page.parser.noindex? and raise Mechanize::RobotsDisallowedError.new(uri)
|
144
|
+
end
|
145
|
+
|
146
|
+
page
|
147
|
+
when Mechanize::FileResponse
|
148
|
+
page
|
149
|
+
when Net::HTTPNotModified
|
150
|
+
log.debug("Got cached page") if log
|
151
|
+
visited_page(uri) || page
|
152
|
+
when Net::HTTPRedirection
|
153
|
+
response_redirect response, method, page, redirects, headers, referer
|
154
|
+
when Net::HTTPUnauthorized
|
155
|
+
response_authenticate(response, page, uri, request, headers, params,
|
156
|
+
referer)
|
157
|
+
else
|
158
|
+
# BEGIN PATCH
|
159
|
+
if page.code == "503" or page.code == "404"
|
160
|
+
page
|
161
|
+
else
|
162
|
+
raise Mechanize::ResponseCodeError.new(page, 'unhandled response')
|
163
|
+
end
|
164
|
+
# END PATCH
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frameworks-capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 10
|
10
|
+
version: 0.2.10
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- matt robbins
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-06-
|
18
|
+
date: 2012-06-29 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|