Class: WebMock::HttpLibAdapters::PatronAdapter
Defined Under Namespace
Classes: WebMockPatronSession
Constant Summary
collapse
- OriginalPatronSession =
::Patron::Session
Class Method Summary
collapse
adapter_for
Class Method Details
permalink
.build_patron_response(webmock_response, default_response_charset) ⇒ Object
[View source] [
View on GitHub]
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/webmock/http_lib_adapters/patron_adapter.rb', line 102
def self.build_patron_response(webmock_response, default_response_charset)
raise ::Patron::TimeoutError if webmock_response.should_timeout
webmock_response.raise_error_if_any
= (webmock_response. || []).map { |(k, vs)| Array(vs).map { |v| "#{k}: #{v}" } }.flatten
status_line = "HTTP/1.1 #{webmock_response.status[0]} #{webmock_response.status[1]}"
= ([status_line] + ).join("\r\n")
::Patron::Response.new(
"".dup,
webmock_response.status[0],
0,
,
webmock_response.body.dup,
default_response_charset
)
end
|
permalink
.build_request_signature(req) ⇒ Object
[View source] [
View on GitHub]
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/webmock/http_lib_adapters/patron_adapter.rb', line 70
def self.build_request_signature(req)
uri = WebMock::Util::URI.heuristic_parse(req.url)
uri.path = uri.normalized_path.gsub("[^:]//","/")
if [:put, :post, :patch].include?(req.action)
if req.file_name
if !File.exist?(req.file_name) || !File.readable?(req.file_name)
raise ArgumentError.new("Unable to open specified file.")
end
request_body = File.read(req.file_name)
elsif req.upload_data
request_body = req.upload_data
else
raise ArgumentError.new("Must provide either data or a filename when doing a PUT or POST")
end
end
= req.
if req.credentials
['Authorization'] = WebMock::Util::Headers.(req.credentials)
end
request_signature = WebMock::RequestSignature.new(
req.action,
uri.to_s,
body: request_body,
headers:
)
request_signature
end
|
permalink
.build_webmock_response(patron_response) ⇒ Object
[View source] [
View on GitHub]
120
121
122
123
124
125
126
127
128
|
# File 'lib/webmock/http_lib_adapters/patron_adapter.rb', line 120
def self.build_webmock_response(patron_response)
webmock_response = WebMock::Response.new
reason = patron_response.status_line.
scan(%r(\AHTTP/(\d+(?:\.\d+)?)\s+(\d\d\d)\s*([^\r\n]+)?))[0][2]
webmock_response.status = [patron_response.status, reason]
webmock_response.body = patron_response.body
webmock_response. = patron_response.
webmock_response
end
|
permalink
.handle_file_name(req, webmock_response) ⇒ Object
[View source] [
View on GitHub]
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/webmock/http_lib_adapters/patron_adapter.rb', line 58
def self.handle_file_name(req, webmock_response)
if req.action == :get && req.file_name
begin
File.open(req.file_name, "w") do |f|
f.write webmock_response.body
end
rescue Errno::EACCES
raise ArgumentError.new("Unable to open specified file.")
end
end
end
|