/* * @copyright * Copyright © Microsoft Open Technologies, 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 * * THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION * ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A * PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT. * * See the Apache License, Version 2.0 for the specific language * governing permissions and limitations under the License. */ 'use strict'; var constants = require('./constants'); var Logger = require('./log').Logger; var Mex = require('./mex'); var OAuth2Client = require('./oauth2client'); var OAuth2Parameters = constants.OAuth2.Parameters; var TokenResponseFields = constants.TokenResponseFields; var OAuth2GrantType = constants.OAuth2.GrantType; var OAuth2Scope = constants.OAuth2.Scope; /** * Constructs a new CodeRequest object. * @constructor * @private * @param {object} callContext Contains any context information that applies to the request. * @param {AuthenticationContext} authenticationContext * @param {string} resource * @param {string} clientId */ // TODO: probably need to modify the parameter list. function CodeRequest(callContext, authenticationContext, clientId, resource) { this._log = new Logger('DeviceCodeRequest', callContext._logContext); this._callContext = callContext; this._authenticationContext = authenticationContext; this._resource = resource; this._clientId = clientId; // This should be set at the beginning of getToken // functions that have a userId. this._userId = null; }; /** * Get user code info. * @private * @param {object} oauthParameters containing all the parameters needed to get the user code info. * @param {callback} callback */ CodeRequest.prototype._getUserCodeInfo = function (oauthParameters, callback) { var oauth2Client = this._createOAuth2Client(); oauth2Client.getUserCodeInfo(oauthParameters, callback); }; CodeRequest.prototype._createOAuth2Client = function () { return new OAuth2Client(this._callContext, this._authenticationContext._authority); }; /** * Creates a set of basic, common, OAuthParameters based on values that the CodeRequest was created with. * @private * @return {object} containing all the basic parameters. */ CodeRequest.prototype._createOAuthParameters = function () { var oauthParameters = {}; oauthParameters[OAuth2Parameters.CLIENT_ID] = this._clientId; oauthParameters[OAuth2Parameters.RESOURCE] = this._resource; return oauthParameters; }; /** * Get the user code information. * @param {string} language optional parameter used to get the user code info. * @param {callback} callback */ CodeRequest.prototype.getUserCodeInfo = function(language, callback) { this._log.info('Getting user code info.'); var oauthParameters = this._createOAuthParameters(); if (language){ oauthParameters[OAuth2Parameters.LANGUAGE] = language; } this._getUserCodeInfo(oauthParameters, callback); }; module.exports = CodeRequest;