Skip to content

Commit 4697584

Browse files
refactor
1 parent eb32e94 commit 4697584

5 files changed

Lines changed: 83 additions & 214 deletions

File tree

packages/compute/src/index.js

Lines changed: 0 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1740,84 +1740,6 @@ Compute.prototype.getOperations = function(options, callback) {
17401740
Compute.prototype.getOperationsStream =
17411741
common.paginator.streamify('getOperations');
17421742

1743-
/**
1744-
* Return the regions available to your project.
1745-
*
1746-
* @resource [Project Overview]{@link https://cloud.google.com/compute/docs/projects}
1747-
*
1748-
* @param {function} callback - The callback function.
1749-
* @param {?error} callback.err - An error returned while making this request.
1750-
* @param {module:compute/project} callback.project - Project objects with
1751-
* details
1752-
* @param {object} callback.apiResponse - The full API response.
1753-
*
1754-
* @example
1755-
* gce.getProject(function(err, project) {
1756-
* // `project` is an object with metadata
1757-
* });
1758-
*
1759-
*
1760-
*
1761-
* //-
1762-
* // If the callback is omitted, we'll return a Promise.
1763-
* //-
1764-
* gce.getProject().then(function(data) {
1765-
* var project = data[0];
1766-
* });
1767-
*/
1768-
Compute.prototype.getProject = function(options, callback) {
1769-
var self = this;
1770-
1771-
if (is.fn(options)) {
1772-
callback = options;
1773-
options = {};
1774-
}
1775-
1776-
this.request({
1777-
uri: '',
1778-
qs: options
1779-
}, function(err, resp) {
1780-
1781-
if (err) {
1782-
callback(err, null, null, resp);
1783-
return;
1784-
}
1785-
1786-
var project = new Project(self);
1787-
project.metadata = resp;
1788-
1789-
callback(null, project, null, resp);
1790-
});
1791-
};
1792-
1793-
/**
1794-
* Get a list of global {module:compute/project} objects as a readable object
1795-
* stream.
1796-
*
1797-
* @return {stream}
1798-
*
1799-
* @example
1800-
* gce.getProjectStream()
1801-
* .on('error', console.error)
1802-
* .on('data', function(operation) {
1803-
* // `operation` is a `Operation` object.
1804-
* })
1805-
* .on('end', function() {
1806-
* // All operations retrieved.
1807-
* });
1808-
*
1809-
* //-
1810-
* // If you anticipate many results, you can end a stream early to prevent
1811-
* // unnecessary processing and API requests.
1812-
* //-
1813-
* gce.getProjectStream()
1814-
* .on('data', function(operation) {
1815-
* this.end();
1816-
* });
1817-
*/
1818-
Compute.prototype.getProjectStream =
1819-
common.paginator.streamify('getProject');
1820-
18211743
/**
18221744
* Return the regions available to your project.
18231745
*
@@ -2721,7 +2643,6 @@ Compute.prototype.operation = function(name) {
27212643
*
27222644
* @resource [Projects Overview]{@link https://cloud.google.com/compute/docs/reference/v1/projects}
27232645
*
2724-
* @param {string} name - Name of the existing operation.
27252646
* @return {module:compute/project}
27262647
*
27272648
* @example
@@ -2845,7 +2766,6 @@ common.paginator.extend(Compute, [
28452766
'getMachineTypes',
28462767
'getNetworks',
28472768
'getOperations',
2848-
'getProject',
28492769
'getRegions',
28502770
'getRules',
28512771
'getServices',

packages/compute/src/project.js

Lines changed: 52 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* Copyright 2016 Google Inc. All Rights Reserved.
2+
* Copyright 2017 Google Inc. All Rights Reserved.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@ var util = require('util');
2828
* @param {module:compute} compute - Compute object this project belongs to.
2929
*/
3030
/**
31-
* A Projects object allows you to interact with your Google Compute Engine
31+
* A Project object allows you to interact with your Google Compute Engine
3232
* project.
3333
*
3434
* @resource [Projects Overview]{@link https://cloud.google.com/compute/docs/projects}
@@ -38,25 +38,62 @@ var util = require('util');
3838
* @alias module:compute/project
3939
*
4040
* @example
41-
* var gcloud = require('google-cloud')({
42-
* keyFilename: '/path/to/keyfile.json',
43-
* projectId: 'grape-spaceship-123'
44-
* });
45-
*
46-
* var gce = gcloud.compute();
47-
*
4841
* var project = gce.project();
49-
*
5042
*/
5143
function Project(compute) {
44+
this.id = compute.projectId;
45+
46+
var methods = {
47+
/**
48+
* Get a Project object.
49+
*
50+
* @example
51+
* project.get(function(err, project, apiResponse) {
52+
* // `project` is a Project object.
53+
* });
54+
*
55+
* //-
56+
* // If the callback is omitted, we'll return a Promise.
57+
* //-
58+
* project.get().then(function(data) {
59+
* var project = data[0];
60+
* var apiResponse = data[1];
61+
* });
62+
*/
63+
get: true,
64+
65+
/**
66+
* Get the project's metadata.
67+
*
68+
* @resource [Projects: get API Documentation]{@link https://cloud.google.com/compute/docs/reference/v1/projects/get}
69+
* @resource [Projects Resource]{@link https://cloud.google.com/compute/docs/reference/v1/projects}
70+
*
71+
* @param {function=} callback - The callback function.
72+
* @param {?error} callback.err - An error returned while making this
73+
* request.
74+
* @param {object} callback.metadata - The machine type's metadata.
75+
* @param {object} callback.apiResponse - The full API response.
76+
*
77+
* @example
78+
* project.getMetadata(function(err, metadata, apiResponse) {});
79+
*
80+
* //-
81+
* // If the callback is omitted, we'll return a Promise.
82+
* //-
83+
* project.getMetadata().then(function(data) {
84+
* var metadata = data[0];
85+
* var apiResponse = data[1];
86+
* });
87+
*/
88+
getMetadata: true
89+
};
90+
5291
common.ServiceObject.call(this, {
5392
parent: compute,
54-
baseUrl: '/',
55-
id: compute.projectId
93+
baseUrl: '',
94+
id: '',
95+
methods: methods
5696
});
57-
58-
59-
this.name = compute.projectId;
6097
}
6198

6299
util.inherits(Project, common.ServiceObject);

packages/compute/system-test/compute.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -740,26 +740,26 @@ describe('Compute', function() {
740740
});
741741

742742
describe('project', function() {
743+
var project;
744+
745+
beforeEach(function() {
746+
project = compute.project();
747+
});
748+
743749
it('should get the project', function(done) {
744-
compute.getProject(function(err, project) {
750+
project.get(function(err, project) {
745751
assert.ifError(err);
746752
assert(project.metadata);
747753
done();
748754
});
749755
});
750756

751-
it('should get a list of machine types in stream mode', function(done) {
752-
var resultsMatched = 0;
753-
754-
compute.getProjectStream()
755-
.on('error', done)
756-
.on('data', function() {
757-
resultsMatched++;
758-
})
759-
.on('end', function() {
760-
assert(resultsMatched > 0);
761-
done();
762-
});
757+
it('should get metadata about the project', function(done) {
758+
project.getMetadata(function(err, metadata) {
759+
assert.ifError(err);
760+
assert(metadata);
761+
done();
762+
});
763763
});
764764
});
765765

packages/compute/test/index.js

Lines changed: 8 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ var fakePaginator = {
7777
'getMachineTypes',
7878
'getNetworks',
7979
'getOperations',
80-
'getProject',
8180
'getRegions',
8281
'getRules',
8382
'getServices',
@@ -230,7 +229,6 @@ describe('Compute', function() {
230229
assert.strictEqual(compute.getMachineTypesStream, 'getMachineTypes');
231230
assert.strictEqual(compute.getNetworksStream, 'getNetworks');
232231
assert.strictEqual(compute.getOperationsStream, 'getOperations');
233-
assert.strictEqual(compute.getProjectStream, 'getProject');
234232
assert.strictEqual(compute.getRegionsStream, 'getRegions');
235233
assert.strictEqual(compute.getRulesStream, 'getRules');
236234
assert.strictEqual(compute.getServicesStream, 'getServices');
@@ -1816,99 +1814,6 @@ describe('Compute', function() {
18161814
});
18171815
});
18181816

1819-
describe('getProject', function() {
1820-
it('should accept only a callback', function(done) {
1821-
compute.request = function(reqOpts) {
1822-
assert.deepEqual(reqOpts.qs, {});
1823-
done();
1824-
};
1825-
1826-
compute.getProject(assert.ifError);
1827-
});
1828-
1829-
it('should make the correct API request', function(done) {
1830-
var options = {};
1831-
1832-
compute.request = function(reqOpts) {
1833-
assert.strictEqual(reqOpts.uri, '');
1834-
assert.strictEqual(reqOpts.qs, options);
1835-
done();
1836-
};
1837-
1838-
compute.getProject(options, assert.ifError);
1839-
});
1840-
1841-
describe('error', function() {
1842-
var error = new Error('Error.');
1843-
var apiResponse = { a: 'b', c: 'd' };
1844-
1845-
beforeEach(function() {
1846-
compute.request = function(reqOpts, callback) {
1847-
callback(error, apiResponse);
1848-
};
1849-
});
1850-
1851-
it('should execute callback with error & API response', function(done) {
1852-
compute.getProject({}, function(err, project, nextQuery, resp) {
1853-
assert.strictEqual(err, error);
1854-
assert.strictEqual(project, null);
1855-
assert.strictEqual(nextQuery, null);
1856-
assert.strictEqual(resp, apiResponse);
1857-
1858-
done();
1859-
});
1860-
});
1861-
});
1862-
1863-
describe('success', function() {
1864-
var project = { name: PROJECT_ID };
1865-
var apiResponse = project;
1866-
1867-
beforeEach(function() {
1868-
compute.request = function(reqOpts, callback) {
1869-
callback(null, apiResponse);
1870-
};
1871-
});
1872-
1873-
it('should create Project object from the response', function(done) {
1874-
compute.project = function(name) {
1875-
assert.strictEqual(name, project.name);
1876-
setImmediate(done);
1877-
return project;
1878-
};
1879-
1880-
compute.getProject({}, (err) => {
1881-
assert.ifError(err);
1882-
1883-
compute.project(PROJECT_ID);
1884-
});
1885-
});
1886-
1887-
it('shouldn\'t build a nextQuery', function(done) {
1888-
var apiResponseWithNextPageToken = extend({}, apiResponse, {
1889-
nextPageToken: 'next-page-token'
1890-
});
1891-
1892-
var query = { a: 'b', c: 'd' };
1893-
var originalQuery = extend({}, query);
1894-
1895-
compute.request = function(reqOpts, callback) {
1896-
callback(null, apiResponseWithNextPageToken);
1897-
};
1898-
1899-
compute.getProject(query, function(err, project, nextQuery) {
1900-
assert.ifError(err);
1901-
1902-
assert.deepEqual(query, originalQuery);
1903-
1904-
assert.strictEqual(nextQuery, null);
1905-
1906-
done();
1907-
});
1908-
});
1909-
});
1910-
});
1911-
19121817
describe('getRegions', function() {
19131818
it('should work with only a callback', function(done) {
19141819
compute.request = function(reqOpts) {
@@ -2646,6 +2551,14 @@ describe('Compute', function() {
26462551
});
26472552
});
26482553

2554+
describe('project', function() {
2555+
it('should return a Region object', function() {
2556+
var project = compute.project();
2557+
assert(project instanceof FakeProject);
2558+
assert.strictEqual(project.calledWith_[0], compute);
2559+
});
2560+
});
2561+
26492562
describe('region', function() {
26502563
var NAME = 'region-name';
26512564

0 commit comments

Comments
 (0)