# File lib/webmock/http_lib_adapters/patron.rb, line 77 77: def build_patron_response(webmock_response) 78: raise Patron::TimeoutError if webmock_response.should_timeout 79: webmock_response.raise_error_if_any 80: res = Patron::Response.new 81: res.instance_variable_set(:@body, webmock_response.body) 82: res.instance_variable_set(:@status, webmock_response.status[0]) 83: res.instance_variable_set(:@status_line, webmock_response.status[1]) 84: res.instance_variable_set(:@headers, webmock_response.headers) 85: res 86: end
# File lib/webmock/http_lib_adapters/patron.rb, line 49 49: def build_request_signature(req) 50: uri = WebMock::Util::URI.heuristic_parse(req.url) 51: uri.path = uri.normalized_path.gsub("[^:]//","/") 52: uri.user = req.username 53: uri.password = req.password 54: 55: if [:put, :post].include?(req.action) 56: if req.file_name 57: if !File.exist?(req.file_name) || !File.readable?(req.file_name) 58: raise ArgumentError.new("Unable to open specified file.") 59: end 60: request_body = File.read(req.file_name) 61: elsif req.upload_data 62: request_body = req.upload_data 63: else 64: raise ArgumentError.new("Must provide either data or a filename when doing a PUT or POST") 65: end 66: end 67: 68: request_signature = WebMock::RequestSignature.new( 69: req.action, 70: uri.to_s, 71: :body => request_body, 72: :headers => req.headers 73: ) 74: request_signature 75: end
# File lib/webmock/http_lib_adapters/patron.rb, line 88 88: def build_webmock_response(patron_response) 89: webmock_response = WebMock::Response.new 90: reason = patron_response.status_line.scan(%(\AHTTP/(\d+\.\d+)\s+(\d\d\d)\s*([^\r\n]+)?\r?\z))[0][2] 91: webmock_response.status = [patron_response.status, reason] 92: webmock_response.body = patron_response.body 93: webmock_response.headers = patron_response.headers 94: webmock_response 95: end
# File lib/webmock/http_lib_adapters/patron.rb, line 37 37: def handle_file_name(req, webmock_response) 38: if req.action == :get && req.file_name 39: begin 40: File.open(req.file_name, "w") do |f| 41: f.write webmock_response.body 42: end 43: rescue Errno::EACCES 44: raise ArgumentError.new("Unable to open specified file.") 45: end 46: end 47: end
# File lib/webmock/http_lib_adapters/patron.rb, line 6 6: def handle_request_with_webmock(req) 7: request_signature = build_request_signature(req) 8: 9: WebMock::RequestRegistry.instance.requested_signatures.put(request_signature) 10: 11: if WebMock.registered_request?(request_signature) 12: webmock_response = WebMock.response_for_request(request_signature) 13: handle_file_name(req, webmock_response) 14: res = build_patron_response(webmock_response) 15: WebMock::CallbackRegistry.invoke_callbacks( 16: {:lib => :patron}, request_signature, webmock_response) 17: res 18: elsif WebMock.net_connect_allowed?(request_signature.uri) 19: res = handle_request_without_webmock(req) 20: if WebMock::CallbackRegistry.any_callbacks? 21: webmock_response = build_webmock_response(res) 22: WebMock::CallbackRegistry.invoke_callbacks( 23: {:lib => :patron, :real_request => true}, request_signature, 24: webmock_response) 25: end 26: res 27: else 28: raise WebMock::NetConnectNotAllowedError.new(request_signature) 29: end 30: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.