Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Unified Diff: polymer_1.0.4/bower_components/ga-api-utils/lib/account-summaries/index.js

Issue 1205703007: Add polymer 1.0 to npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Renamed folder to 1.0.4 Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: polymer_1.0.4/bower_components/ga-api-utils/lib/account-summaries/index.js
diff --git a/polymer_1.0.4/bower_components/ga-api-utils/lib/account-summaries/index.js b/polymer_1.0.4/bower_components/ga-api-utils/lib/account-summaries/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..7c7afef1e53af35a572047474d0788f5e358f1bb
--- /dev/null
+++ b/polymer_1.0.4/bower_components/ga-api-utils/lib/account-summaries/index.js
@@ -0,0 +1,95 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// 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.
+
+
+/* global gapi */
+
+var AccountSummaries = require('./account-summaries');
+
+
+/**
+ * Store the accountSummaries result in a promise so the API isn't
+ * queried unneccesarily.
+ */
+var cache;
+
+
+/**
+ * Make a request to the Management API's accountSummaries#list method.
+ * If the requests returns a partial, paginated response, query again
+ * until the full summaries are retrieved.
+ * @return {goog.Promise} A promise that will be resolved with an
+ * AccountSummaries object.
+ */
+function requestAccountSummaries() {
+
+ var promise = gapi.client.analytics.management.accountSummaries.list()
+ // An extra `then` is needed here because `.list` doesn't return a
+ // "real" promise, just a thenable. Calling `.then` gets us access
+ // to the underlying goog.Promise instance and thus its constructor.
+ .then(function(resp) { return resp; });
+
+ return new promise.constructor(function(resolve, reject) {
+
+ // Store the summaries array in the closure so multiple requests can
+ // concat to it.
+ var summaries = [];
+
+ promise.then(function fn(resp) {
+ var result = resp.result;
+ if (result.items) {
+ summaries = summaries.concat(result.items);
+ }
+ else {
+ reject(new Error('You do not have any Google Analytics accounts. ' +
+ 'Go to http://google.com/analytics to sign up.'));
+ }
+
+ if (result.startIndex + result.itemsPerPage <= result.totalResults) {
+ gapi.client.analytics.management.accountSummaries
+ .list({'start-index': result.startIndex + result.itemsPerPage})
+ // Recursively call this function until the full results are in.
+ .then(fn);
+ }
+ else {
+ resolve(new AccountSummaries(summaries));
+ }
+ })
+ // Reject the promise if there are any uncaught errors;
+ .then(null, reject);
+ });
+}
+
+
+/**
+ * @module accountSummaries
+ *
+ * This module requires the `gapi.client.analytics` library to be installed
+ * and the user to be authenticated.
+ */
+module.exports = {
+
+ /**
+ * Return the `requestAccountSummaries` promise. If the promise exists,
+ * return it to avoid multiple requests. If the promise does not exist,
+ * initiate the request and cache the promise.
+ *
+ * @param {boolean} noCache When true make a request no matter what.
+ * @return {Promise} A promise fulfilled with an AccountSummaries instance.
+ */
+ get: function(noCache) {
+ if (noCache) cache = null;
+ return cache || (cache = requestAccountSummaries());
+ }
+};

Powered by Google App Engine
This is Rietveld 408576698