diff --git a/lib/uploadcare/client/uploader_client.rb b/lib/uploadcare/client/uploader_client.rb index 76f5e5d..51b04a4 100644 --- a/lib/uploadcare/client/uploader_client.rb +++ b/lib/uploadcare/client/uploader_client.rb @@ -77,7 +77,10 @@ def poll_upload_response(token) base_sleep_seconds: Uploadcare.config.base_request_sleep, max_sleep_seconds: Uploadcare.config.max_request_sleep) do response = get_upload_from_url_status(token) - raise RequestError if %w[progress waiting unknown].include?(response.success[:status]) + + if %w[progress waiting unknown].include?(response.success[:status]) + raise RequestError, 'Upload is taking longer than expected. Try increasing the max_request_tries config if you know your file uploads will take more time.' # rubocop:disable Layout/LineLength + end response end diff --git a/spec/uploadcare/entity/uploader_spec.rb b/spec/uploadcare/entity/uploader_spec.rb index 395ed14..c475ca1 100644 --- a/spec/uploadcare/entity/uploader_spec.rb +++ b/spec/uploadcare/entity/uploader_spec.rb @@ -53,6 +53,15 @@ module Entity expect(upload[0]).to be_kind_of(Uploadcare::Entity::File) end end + + it 'raises error with information if file upload takes time' do + Uploadcare.config.max_request_tries = 1 + VCR.use_cassette('upload_upload_from_url') do + url = 'https://placekitten.com/2250/2250' + error_str = 'Upload is taking longer than expected. Try increasing the max_request_tries config if you know your file uploads will take more time.' # rubocop:disable Layout/LineLength + expect { subject.upload(url) }.to raise_error(RequestError, error_str) + end + end end describe 'multipart_upload' do