diff --git a/lib/easy_translate.rb b/lib/easy_translate.rb index be27d93..6657b19 100644 --- a/lib/easy_translate.rb +++ b/lib/easy_translate.rb @@ -16,6 +16,7 @@ module EasyTranslate class << self attr_accessor :api_key + attr_accessor :referer # for Google API key referer restriction end end diff --git a/lib/easy_translate/request.rb b/lib/easy_translate/request.rb index 7187b68..6fed7a3 100644 --- a/lib/easy_translate/request.rb +++ b/lib/easy_translate/request.rb @@ -37,11 +37,12 @@ def params # @return [String] The response String def perform_raw # Construct the request - request = Net::HTTP::Post.new(uri.request_uri) - request.add_field('X-HTTP-Method-Override', 'GET') - request.body = body + raw_request.add_field('Referer', EasyTranslate.referer) + raw_request.add_field('X-HTTP-Method-Override', 'GET') + raw_request.body = body + # Fire and return - response = http.request(request) + response = http.request(raw_request) unless response.code == '200' err = JSON.parse(response.body)['error']['errors'].first['message'] raise EasyTranslateException.new(err) @@ -49,6 +50,10 @@ def perform_raw response.body end + def raw_request + @raw_request ||= Net::HTTP::Post.new(uri.request_uri) + end + private def uri diff --git a/spec/examples/request_spec.rb b/spec/examples/request_spec.rb index 3c7fd44..d298fa6 100644 --- a/spec/examples/request_spec.rb +++ b/spec/examples/request_spec.rb @@ -2,6 +2,24 @@ describe EasyTranslate::Request do + describe :perform_raw do + let(:referer) { 'https://example.com' } + let(:request) { EasyTranslate::Request.new } + + before do + EasyTranslate.referer = referer + + allow(request).to receive(:path).and_return('') + end + + it 'should set headers' do + expect(request.raw_request).to receive(:add_field).once.ordered.with('Referer', EasyTranslate.referer) + expect(request.raw_request).to receive(:add_field).once.ordered.with('X-HTTP-Method-Override', 'GET') + expect { request.perform_raw }.to raise_error JSON::ParserError + end + + end + describe :path do it 'should raise a NotImplementedError on this base class' do