{"record":{"id":"39fb966abd0ff197","repo":"bblimke/webmock","slug":"must-provide-either-data-or-a-filename-when-doing","errorCode":null,"errorMessage":"Must provide either data or a filename when doing a PUT or POST","messagePattern":"Must provide either data or a filename when doing a PUT or POST","errorType":"exception","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"lib/webmock/http_lib_adapters/patron_adapter.rb","lineNumber":83,"sourceCode":"              raise ArgumentError.new(\"Unable to open specified file.\")\n            end\n          end\n        end\n\n        def self.build_request_signature(req)\n          uri = WebMock::Util::URI.heuristic_parse(req.url)\n          uri.path = uri.normalized_path.gsub(\"[^:]//\",\"/\")\n\n          if [:put, :post, :patch].include?(req.action)\n            if req.file_name\n              if !File.exist?(req.file_name) || !File.readable?(req.file_name)\n                raise ArgumentError.new(\"Unable to open specified file.\")\n              end\n              request_body = File.read(req.file_name)\n            elsif req.upload_data\n              request_body = req.upload_data\n            else\n              raise ArgumentError.new(\"Must provide either data or a filename when doing a PUT or POST\")\n            end\n          end\n\n          headers = req.headers\n\n          if req.credentials\n            headers['Authorization'] = WebMock::Util::Headers.basic_auth_header(req.credentials)\n          end\n\n          request_signature = WebMock::RequestSignature.new(\n            req.action,\n            uri.to_s,\n            body: request_body,\n            headers: headers\n          )\n          request_signature\n        end\n","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/bblimke/webmock/blob/b187df8827e1f08a1684a8ddc0a5050dbd449c16/lib/webmock/http_lib_adapters/patron_adapter.rb#L65-L101","documentation":"Error \"Must provide either data or a filename when doing a PUT or POST\" thrown in bblimke/webmock.","triggerScenarios":"Thrown at lib/webmock/http_lib_adapters/patron_adapter.rb:83 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b187df8827e1f08a1684a8ddc0a5050dbd449c16","analyzedAt":"2026-08-23T02:55:22.028Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}