diff --git a/lib/convert_api/client.rb b/lib/convert_api/client.rb index 59489e7..e028ef4 100644 --- a/lib/convert_api/client.rb +++ b/lib/convert_api/client.rb @@ -101,10 +101,10 @@ def http(options = {}) end def request_uri(path, params = {}) - raise(SecretError, 'API secret not configured') if config.api_secret.nil? + raise(AuthenticationError, 'API secret or Token not configured') if authentication.nil? - params_with_secret = params.merge(Secret: config.api_secret) - query = URI.encode_www_form(params_with_secret) + params_with_authentication = params.merge(authentication) + query = URI.encode_www_form(params_with_authentication) base_uri.path + path + '?' + query end @@ -123,6 +123,13 @@ def build_form_data(params) data end + def authentication + return { Token: config.token } unless config.token.nil? + return { Secret: config.api_secret } unless config.api_secret.nil? + + nil + end + def base_uri config.base_uri end diff --git a/lib/convert_api/configuration.rb b/lib/convert_api/configuration.rb index bcd43f5..8f0783c 100644 --- a/lib/convert_api/configuration.rb +++ b/lib/convert_api/configuration.rb @@ -1,6 +1,7 @@ module ConvertApi class Configuration attr_accessor :api_secret + attr_accessor :token attr_accessor :base_uri attr_accessor :connect_timeout attr_accessor :read_timeout diff --git a/lib/convert_api/errors.rb b/lib/convert_api/errors.rb index ccff5ad..bdf78d0 100644 --- a/lib/convert_api/errors.rb +++ b/lib/convert_api/errors.rb @@ -1,6 +1,6 @@ module ConvertApi class Error < StandardError; end - class SecretError < Error; end + class AuthenticationError < Error; end class FileNameError < Error; end class TimeoutError < Error; end class ConnectionFailed < Error; end diff --git a/spec/convert_api_spec.rb b/spec/convert_api_spec.rb index 14df27f..75ee433 100644 --- a/spec/convert_api_spec.rb +++ b/spec/convert_api_spec.rb @@ -10,15 +10,18 @@ describe '.configure' do let(:api_secret) { 'test_secret' } + let(:token) { 'test_token' } let(:conversion_timeout) { 20 } it 'configures' do described_class.configure do |config| config.api_secret = api_secret + config.token = token config.conversion_timeout = conversion_timeout end expect(described_class.config.api_secret).to eq(api_secret) + expect(described_class.config.token).to eq(token) expect(described_class.config.conversion_timeout).to eq(conversion_timeout) end end @@ -89,19 +92,24 @@ it_behaves_like 'successful conversion' end - context 'when secret is not set' do - before { ConvertApi.config.api_secret = nil } + context 'when has error' do + it 'raises error without secret or token' do + described_class.config.api_secret = nil + described_class.config.token = nil - it 'raises error' do - expect { subject }.to raise_error(ConvertApi::SecretError, /not configured/) + expect { subject }.to raise_error(ConvertApi::AuthenticationError, /not configured/) end - end - context 'with invalid secret' do - before { ConvertApi.config.api_secret = 'invalid' } + it 'with invalid secret' do + described_class.config.api_secret = 'invalid' - it 'raises error' do - expect { subject }.to raise_error(ConvertApi::ClientError, /bad secret/) + expect { subject }.to raise_error(ConvertApi::ClientError) + end + + it 'with invalid token' do + described_class.config.token = 'invalid' + + expect { subject }.to raise_error(ConvertApi::ClientError) end end