Skip to content

Commit

Permalink
translate: support GOOGLE_CLOUD_TRANSLATE_ENDPOINT env var
Browse files Browse the repository at this point in the history
  • Loading branch information
stephenplusplus committed Oct 6, 2016
1 parent ff68eb9 commit d064e89
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 12 deletions.
11 changes: 8 additions & 3 deletions packages/translate/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,13 @@ function Translate(options) {
throw new Error('An API key is required to use the Translate API.');
}

this.baseUrl = 'https://www.googleapis.com/language/translate/v2';

if (process.env.GOOGLE_CLOUD_TRANSLATE_ENDPOINT) {
this.baseUrl = process.env.GOOGLE_CLOUD_TRANSLATE_ENDPOINT
.replace(/\/+$/, '');
}

this.options = options;
this.key = options.key;
}
Expand Down Expand Up @@ -382,9 +389,7 @@ Translate.prototype.translate = function(input, options, callback) {
* @param {function} callback - The callback function passed to `request`.
*/
Translate.prototype.request = function(reqOpts, callback) {
var BASE_URL = 'https://www.googleapis.com/language/translate/v2';

reqOpts.uri = BASE_URL + reqOpts.uri;
reqOpts.uri = this.baseUrl + reqOpts.uri;

reqOpts = extend(true, {}, reqOpts, {
qs: {
Expand Down
52 changes: 43 additions & 9 deletions packages/translate/test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ var fakeUtil = extend({}, util, {
});

describe('Translate', function() {
var API_KEY = 'api-key';
var OPTIONS = {
key: 'api-key'
};

var Translate;
var translate;
Expand All @@ -49,16 +51,14 @@ describe('Translate', function() {
beforeEach(function() {
makeRequestOverride = null;

translate = new Translate({
key: API_KEY
});
translate = new Translate(OPTIONS);
});

describe('instantiation', function() {
it('should normalize the arguments', function() {
var normalizeArguments = fakeUtil.normalizeArguments;
var normalizeArgumentsCalled = false;
var fakeOptions = { key: API_KEY };
var fakeOptions = extend({}, OPTIONS);
var fakeContext = {};

fakeUtil.normalizeArguments = function(context, options, cfg) {
Expand All @@ -81,14 +81,48 @@ describe('Translate', function() {
}, /An API key is required to use the Translate API\./);
});

it('should default baseUrl correctly', function() {
assert.strictEqual(
translate.baseUrl,
'https://www.googleapis.com/language/translate/v2'
);
});

it('should localize the options', function() {
var options = { key: API_KEY };
var options = { key: '...' };
var translate = new Translate(options);
assert.strictEqual(translate.options, options);
});

it('should localize the api key', function() {
assert.equal(translate.key, API_KEY);
assert.equal(translate.key, OPTIONS.key);
});

describe('GOOGLE_CLOUD_TRANSLATE_ENDPOINT', function() {
var CUSTOM_ENDPOINT = '...';
var translate;

before(function() {
process.env.GOOGLE_CLOUD_TRANSLATE_ENDPOINT = CUSTOM_ENDPOINT;
translate = new Translate(OPTIONS);
});

after(function() {
delete process.env.GOOGLE_CLOUD_TRANSLATE_ENDPOINT;
});

it('should correctly set the baseUrl', function() {
assert.strictEqual(translate.baseUrl, CUSTOM_ENDPOINT);
});

it('should remove trailing slashes', function() {
var expectedBaseUrl = 'http://localhost:8080';

process.env.GOOGLE_CLOUD_TRANSLATE_ENDPOINT = 'http://localhost:8080//';

var translate = new Translate(OPTIONS);
assert.strictEqual(translate.baseUrl, expectedBaseUrl);
});
});
});

Expand Down Expand Up @@ -446,8 +480,8 @@ describe('Translate', function() {
'User-Agent': userAgent
}
});
var BASE_URL = 'https://www.googleapis.com/language/translate/v2';
expectedReqOpts.uri = BASE_URL + reqOpts.uri;

expectedReqOpts.uri = translate.baseUrl + reqOpts.uri;

makeRequestOverride = function(reqOpts, options, callback) {
assert.deepEqual(reqOpts, expectedReqOpts);
Expand Down

0 comments on commit d064e89

Please sign in to comment.