| Index: remoting/webapp/crd/js/oauth2_api_impl.js
|
| diff --git a/remoting/webapp/crd/js/oauth2_api_impl.js b/remoting/webapp/crd/js/oauth2_api_impl.js
|
| deleted file mode 100644
|
| index de5d9df49e6c25165888c67f2c12705337d22686..0000000000000000000000000000000000000000
|
| --- a/remoting/webapp/crd/js/oauth2_api_impl.js
|
| +++ /dev/null
|
| @@ -1,243 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -/**
|
| - * @fileoverview
|
| - * OAuth2 API flow implementations.
|
| - */
|
| -
|
| -/** @suppress {duplicate} */
|
| -var remoting = remoting || {};
|
| -
|
| -(function() {
|
| -
|
| -'use strict';
|
| -
|
| -/**
|
| - * @constructor
|
| - * @implements {remoting.OAuth2Api}
|
| - */
|
| -remoting.OAuth2ApiImpl = function() {
|
| -};
|
| -
|
| -/** @private
|
| - * @return {string} OAuth2 token URL.
|
| - */
|
| -remoting.OAuth2ApiImpl.prototype.getOAuth2TokenEndpoint_ = function() {
|
| - return remoting.settings.OAUTH2_BASE_URL + '/token';
|
| -};
|
| -
|
| -/** @private
|
| - * @return {string} OAuth2 userinfo API URL.
|
| - */
|
| -remoting.OAuth2ApiImpl.prototype.getOAuth2ApiUserInfoEndpoint_ = function() {
|
| - return remoting.settings.OAUTH2_API_BASE_URL + '/v1/userinfo';
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Interprets HTTP error responses in authentication XMLHttpRequests.
|
| - *
|
| - * @private
|
| - * @param {number} xhrStatus Status (HTTP response code) of the XMLHttpRequest.
|
| - * @return {!remoting.Error} An error code to be raised.
|
| - */
|
| -remoting.OAuth2ApiImpl.prototype.interpretXhrStatus_ =
|
| - function(xhrStatus) {
|
| - // Return AUTHENTICATION_FAILED by default, so that the user can try to
|
| - // recover from an unexpected failure by signing in again.
|
| - /** @type {!remoting.Error} */
|
| - var error = new remoting.Error(remoting.Error.Tag.AUTHENTICATION_FAILED);
|
| - if (xhrStatus == 400 || xhrStatus == 401 || xhrStatus == 403) {
|
| - error = new remoting.Error(remoting.Error.Tag.AUTHENTICATION_FAILED);
|
| - } else if (xhrStatus == 502 || xhrStatus == 503) {
|
| - error = new remoting.Error(remoting.Error.Tag.SERVICE_UNAVAILABLE);
|
| - } else if (xhrStatus == 0) {
|
| - error = new remoting.Error(remoting.Error.Tag.NETWORK_FAILURE);
|
| - } else {
|
| - console.warn('Unexpected authentication response code: ' + xhrStatus);
|
| - }
|
| - return error;
|
| -};
|
| -
|
| -/**
|
| - * Asynchronously retrieves a new access token from the server.
|
| - *
|
| - * @param {function(string, number): void} onDone Callback to invoke when
|
| - * the access token and expiration time are successfully fetched.
|
| - * @param {function(!remoting.Error):void} onError Callback invoked if an
|
| - * error occurs.
|
| - * @param {string} clientId OAuth2 client ID.
|
| - * @param {string} clientSecret OAuth2 client secret.
|
| - * @param {string} refreshToken OAuth2 refresh token to be redeemed.
|
| - * @return {void} Nothing.
|
| - */
|
| -remoting.OAuth2ApiImpl.prototype.refreshAccessToken = function(
|
| - onDone, onError, clientId, clientSecret, refreshToken) {
|
| - /** @param {!remoting.Xhr.Response} response */
|
| - var onResponse = function(response) {
|
| - if (response.status == 200) {
|
| - try {
|
| - // Don't use base.jsonParseSafe here unless you also include base.js,
|
| - // otherwise this won't work from the OAuth trampoline.
|
| - // TODO(jamiewalch): Fix this once we're no longer using the trampoline.
|
| - var tokens = JSON.parse(response.getText());
|
| - onDone(tokens['access_token'], tokens['expires_in']);
|
| - } catch (/** @type {Error} */ err) {
|
| - console.error('Invalid "token" response from server:', err);
|
| - onError(remoting.Error.unexpected());
|
| - }
|
| - } else {
|
| - console.error('Failed to refresh token. Status: ' + response.status +
|
| - ' response: ' + response.getText());
|
| - onError(remoting.Error.fromHttpStatus(response.status));
|
| - }
|
| - };
|
| -
|
| - new remoting.Xhr({
|
| - method: 'POST',
|
| - url: this.getOAuth2TokenEndpoint_(),
|
| - formContent: {
|
| - 'client_id': clientId,
|
| - 'client_secret': clientSecret,
|
| - 'refresh_token': refreshToken,
|
| - 'grant_type': 'refresh_token'
|
| - }
|
| - }).start().then(onResponse);
|
| -};
|
| -
|
| -/**
|
| - * Asynchronously exchanges an authorization code for access and refresh tokens.
|
| - *
|
| - * @param {function(string, string, number): void} onDone Callback to
|
| - * invoke when the refresh token, access token and access token expiration
|
| - * time are successfully fetched.
|
| - * @param {function(!remoting.Error):void} onError Callback invoked if an
|
| - * error occurs.
|
| - * @param {string} clientId OAuth2 client ID.
|
| - * @param {string} clientSecret OAuth2 client secret.
|
| - * @param {string} code OAuth2 authorization code.
|
| - * @param {string} redirectUri Redirect URI used to obtain this code.
|
| - * @return {void} Nothing.
|
| - */
|
| -remoting.OAuth2ApiImpl.prototype.exchangeCodeForTokens = function(
|
| - onDone, onError, clientId, clientSecret, code, redirectUri) {
|
| - /** @param {!remoting.Xhr.Response} response */
|
| - var onResponse = function(response) {
|
| - if (response.status == 200) {
|
| - try {
|
| - // Don't use base.jsonParseSafe here unless you also include base.js,
|
| - // otherwise this won't work from the OAuth trampoline.
|
| - // TODO(jamiewalch): Fix this once we're no longer using the trampoline.
|
| - var tokens = JSON.parse(response.getText());
|
| - onDone(tokens['refresh_token'],
|
| - tokens['access_token'], tokens['expires_in']);
|
| - } catch (/** @type {Error} */ err) {
|
| - console.error('Invalid "token" response from server:', err);
|
| - onError(remoting.Error.unexpected());
|
| - }
|
| - } else {
|
| - console.error('Failed to exchange code for token. Status: ' +
|
| - response.status + ' response: ' + response.getText());
|
| - onError(remoting.Error.fromHttpStatus(response.status));
|
| - }
|
| - };
|
| -
|
| - new remoting.Xhr({
|
| - method: 'POST',
|
| - url: this.getOAuth2TokenEndpoint_(),
|
| - formContent: {
|
| - 'client_id': clientId,
|
| - 'client_secret': clientSecret,
|
| - 'redirect_uri': redirectUri,
|
| - 'code': code,
|
| - 'grant_type': 'authorization_code'
|
| - }
|
| - }).start().then(onResponse);
|
| -};
|
| -
|
| -/**
|
| - * Get the user's email address.
|
| - *
|
| - * @param {function(string):void} onDone Callback invoked when the email
|
| - * address is available.
|
| - * @param {function(!remoting.Error):void} onError Callback invoked if an
|
| - * error occurs.
|
| - * @param {string} token Access token.
|
| - * @return {void} Nothing.
|
| - */
|
| -remoting.OAuth2ApiImpl.prototype.getEmail = function(onDone, onError, token) {
|
| - /** @param {!remoting.Xhr.Response} response */
|
| - var onResponse = function(response) {
|
| - if (response.status == 200) {
|
| - try {
|
| - var result = JSON.parse(response.getText());
|
| - onDone(result['email']);
|
| - } catch (/** @type {Error} */ err) {
|
| - console.error('Invalid "userinfo" response from server:', err);
|
| - onError(remoting.Error.unexpected());
|
| - }
|
| - } else {
|
| - console.error('Failed to get email. Status: ' + response.status +
|
| - ' response: ' + response.getText());
|
| - onError(remoting.Error.fromHttpStatus(response.status));
|
| - }
|
| - };
|
| - new remoting.Xhr({
|
| - method: 'GET',
|
| - url: this.getOAuth2ApiUserInfoEndpoint_(),
|
| - oauthToken: token
|
| - }).start().then(onResponse);
|
| -};
|
| -
|
| -/**
|
| - * Get the user's email address and full name.
|
| - *
|
| - * @param {function(string, string):void} onDone Callback invoked when the email
|
| - * address and full name are available.
|
| - * @param {function(!remoting.Error):void} onError Callback invoked if an
|
| - * error occurs.
|
| - * @param {string} token Access token.
|
| - * @return {void} Nothing.
|
| - */
|
| -remoting.OAuth2ApiImpl.prototype.getUserInfo =
|
| - function(onDone, onError, token) {
|
| - /** @param {!remoting.Xhr.Response} response */
|
| - var onResponse = function(response) {
|
| - if (response.status == 200) {
|
| - try {
|
| - var result = JSON.parse(response.getText());
|
| - onDone(result['email'], result['name']);
|
| - } catch (/** @type {Error} */ err) {
|
| - console.error('Invalid "userinfo" response from server:', err);
|
| - onError(remoting.Error.unexpected());
|
| - }
|
| - } else {
|
| - console.error('Failed to get user info. Status: ' + response.status +
|
| - ' response: ' + response.getText());
|
| - onError(remoting.Error.fromHttpStatus(response.status));
|
| - }
|
| - };
|
| - new remoting.Xhr({
|
| - method: 'GET',
|
| - url: this.getOAuth2ApiUserInfoEndpoint_(),
|
| - oauthToken: token
|
| - }).start().then(onResponse);
|
| -};
|
| -
|
| -/** @returns {!remoting.Error} */
|
| -function fromHttpStatus(/** number */ status) {
|
| - var error = remoting.Error.fromHttpStatus(status);
|
| - if (error === remoting.Error.unexpected()) {
|
| - // Return AUTHENTICATION_FAILED by default, so that the user can try to
|
| - // recover from an unexpected failure by signing in again.
|
| - return new remoting.Error(remoting.Error.Tag.AUTHENTICATION_FAILED);
|
| - }
|
| - return error;
|
| -}
|
| -
|
| -/** @type {remoting.OAuth2Api} */
|
| -remoting.oauth2Api = new remoting.OAuth2ApiImpl();
|
| -
|
| -})();
|
|
|