Skip to content
53 changes: 53 additions & 0 deletions storage/setClientEndpoint.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

/**
* This application demonstrates set a custom endpoint with
* the Google Cloud Storage API.
*
* For more information, see the README.md under /storage and the documentation
* at https://cloud.google.com/storage/docs.
*/

function main(apiEndpoint = 'https://storage.googleapis.com') {
// [START storage_set_client_endpoint]
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// The custom endpoint to which requests should be made
// const apiEndpoint = 'https://yourcustomendpoint.com';

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
try {
// Creates a client
const storage = new Storage({
apiEndpoint: apiEndpoint,
useAuthWithCustomEndpoint: true,
});

console.log(`Client initiated with endpoint: ${storage.apiEndpoint}.`);
} catch (error) {
console.error(
'Error executing set client endpoint:',
error.message || error
);
}

// [END storage_set_client_endpoint]
}

main(...process.argv.slice(2));
30 changes: 30 additions & 0 deletions storage/system-test/storage.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

const {assert} = require('chai');
const {it} = require('mocha');
const cp = require('child_process');

const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'});

it('should intialize storage with a custom api endpoint', async () => {
const apiEndpoint = 'https://storage.googleapis.com';
const output = execSync(`node setClientEndpoint.js ${apiEndpoint}`);
assert.match(
output,
new RegExp(`Client initiated with endpoint: ${apiEndpoint}.`)
);
});
Loading