frameworks-capybara 0.2.9 → 0.2.10
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/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
|