UNPKG

@esri/arcgis-rest-request

Version:

Common methods and utilities for @esri/arcgis-rest-js packages.

83 lines 3.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthenticationManagerBase = void 0; const request_js_1 = require("./request.js"); const clean_url_js_1 = require("./utils/clean-url.js"); class AuthenticationManagerBase { constructor(options) { this.portal = options.portal ? (0, clean_url_js_1.cleanUrl)(options.portal) : "https://www.arcgis.com/sharing/rest"; this._username = options.username; } /** * The username of the currently authenticated user. */ get username() { if (this._username) { return this._username; } if (this._user && this._user.username) { return this._user.username; } } /** * Returns the username for the currently logged in [user](https://developers.arcgis.com/rest/users-groups-and-items/user.htm). Subsequent calls will *not* result in additional web traffic. This is also used internally when a username is required for some requests but is not present in the options. * * ```js * manager.getUsername() * .then(response => { * console.log(response); // "casey_jones" * }) * ``` */ getUsername() { if (this.username) { return Promise.resolve(this.username); } else { return this.getUser().then((user) => { return user.username; }); } } /** * Returns information about the currently logged in [user](https://developers.arcgis.com/rest/users-groups-and-items/user.htm). Subsequent calls will *not* result in additional web traffic. * * ```js * manager.getUser() * .then(response => { * console.log(response.role); // "org_admin" * }) * ``` * * @param requestOptions - Options for the request. NOTE: `rawResponse` is not supported by this operation. * @returns A Promise that will resolve with the data from the response. */ getUser(requestOptions) { if (this._pendingUserRequest) { return this._pendingUserRequest; } else if (this._user) { return Promise.resolve(this._user); } else { const url = `${this.portal}/community/self`; const options = Object.assign(Object.assign({ httpMethod: "GET", authentication: this }, requestOptions), { rawResponse: false }); this._pendingUserRequest = (0, request_js_1.request)(url, options).then((response) => { this._user = response; this._pendingUserRequest = null; return response; }); return this._pendingUserRequest; } } /** * Clear the cached user infornation. Usefull to ensure that the most recent user information from {@linkcode AuthenticationManagerBase.getUser} is used. */ clearCachedUserInfo() { this._user = null; } } exports.AuthenticationManagerBase = AuthenticationManagerBase; //# sourceMappingURL=AuthenticationManagerBase.js.map