From 897207f7e0aa9cd5b2089a9669d04209802e80bc Mon Sep 17 00:00:00 2001 From: Michael Klein Date: Wed, 14 Mar 2018 15:30:59 -0500 Subject: [PATCH] Fix parsing of empty content-disposition filename subfield --- lib/ldp/response.rb | 2 +- spec/lib/ldp/response_spec.rb | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/ldp/response.rb b/lib/ldp/response.rb index f1c5081..a32b37b 100644 --- a/lib/ldp/response.rb +++ b/lib/ldp/response.rb @@ -208,7 +208,7 @@ def content_disposition_filename def content_disposition_attributes parts = headers['Content-Disposition'].split(/;\s*/).collect { |entry| entry.split(/\s*=\s*/) } entries = parts.collect do |part| - value = part[1].respond_to?(:sub) ? part[1].sub(%r{^"(.+)"$}, '\1') : part[1] + value = part[1].respond_to?(:sub) ? part[1].sub(%r{^"(.*)"$}, '\1') : part[1] [part[0], value] end Hash[entries] diff --git a/spec/lib/ldp/response_spec.rb b/spec/lib/ldp/response_spec.rb index a2cbf11..d132171 100644 --- a/spec/lib/ldp/response_spec.rb +++ b/spec/lib/ldp/response_spec.rb @@ -202,11 +202,13 @@ { 'Content-Disposition' => 'filename="xyz.txt";' }, { 'Content-Disposition' => 'attachment; filename=xyz.txt' }, { 'Content-Disposition' => 'attachment; filename="xyz.txt"; size="12345"' }, + { 'Content-Disposition' => 'attachment; filename=""; size="12345"' }, ) end it 'provides the filename from the content disposition header' do 3.times { expect(subject.content_disposition_filename).to eq 'xyz.txt' } + expect(subject.content_disposition_filename).to eq '' end end end