From 673514638349feed48afaee7f2a3fcc31a76fca7 Mon Sep 17 00:00:00 2001 From: Laurynas Butkus Date: Wed, 19 Jul 2023 19:10:10 +0300 Subject: [PATCH] Make converter param name case insensitive --- lib/convert_api/task.rb | 13 +++++++++++-- spec/convert_api/task_spec.rb | 24 +++++++++++++++++------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/lib/convert_api/task.rb b/lib/convert_api/task.rb index 3db0be2..b611067 100644 --- a/lib/convert_api/task.rb +++ b/lib/convert_api/task.rb @@ -15,10 +15,11 @@ def run from_format = @from_format || detect_format(params) read_timeout = @conversion_timeout + config.conversion_timeout_delta if @conversion_timeout - converter = params[:converter] ? "/converter/#{params[:converter]}" : '' + converter = detect_converter(params) + converter_path = converter ? "/converter/#{converter}" : '' response = ConvertApi.client.post( - "convert/#{from_format}/to/#{@to_format}#{converter}", + "convert/#{from_format}/to/#{@to_format}#{converter_path}", params, read_timeout: read_timeout, ) @@ -69,6 +70,14 @@ def detect_format(params) FormatDetector.new(resource, @to_format).run end + def detect_converter(params) + params.each do |key, value| + return value if key.to_s.downcase == 'converter' + end + + nil + end + def config ConvertApi.config end diff --git a/spec/convert_api/task_spec.rb b/spec/convert_api/task_spec.rb index ccd11cc..c68a488 100644 --- a/spec/convert_api/task_spec.rb +++ b/spec/convert_api/task_spec.rb @@ -1,17 +1,27 @@ -RSpec.describe ConvertApi::Task do +RSpec.describe ConvertApi::Task, '#run' do + subject { task.run } + let(:task) { described_class.new(from_format, to_format, params) } let(:from_format) { 'txt' } let(:to_format) { 'pdf' } - let(:params) { { File: 'https://www.w3.org/TR/2003/REC-PNG-20031110/iso_8859-1.txt' } } + let(:params) { { File: file } } + let(:file) { 'https://www.w3.org/TR/2003/REC-PNG-20031110/iso_8859-1.txt' } + let(:result) { double } + + it 'executes task and returns result' do + expect(ConvertApi.client).to( + receive(:post).with('convert/txt/to/pdf', instance_of(Hash), instance_of(Hash)).and_return(result) + ) - describe '#run' do - subject { task.run } + expect(subject).to be_instance_of(ConvertApi::Result) + end - let(:result) { double } + context 'with converter' do + let(:params) { { File: file, Converter: 'openoffice' } } - it 'executes task and returns result' do + it 'adds converter to the path' do expect(ConvertApi.client).to( - receive(:post).with('convert/txt/to/pdf', instance_of(Hash), instance_of(Hash)).and_return(result) + receive(:post).with('convert/txt/to/pdf/converter/openoffice', instance_of(Hash), instance_of(Hash)).and_return(result) ) expect(subject).to be_instance_of(ConvertApi::Result)