UNPKG

bungienetplatformjs

Version:
1,727 lines (1,443 loc) 177 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /*eslint valid-jsdoc: off, require-jsdoc: off*/ var _BungieNet = require("./BungieNet.js"); var _BungieNet2 = _interopRequireDefault(_BungieNet); var _Frame = require("./Frame.js"); var _Frame2 = _interopRequireDefault(_Frame); var _FrameSet = require("./FrameSet.js"); var _FrameSet2 = _interopRequireDefault(_FrameSet); var _FrameManager = require("./FrameManager.js"); var _FrameManager2 = _interopRequireDefault(_FrameManager); var _PlatformRequest = require("./PlatformRequest.js"); var _PlatformRequest2 = _interopRequireDefault(_PlatformRequest); var _Plugin = require("./Plugin.js"); var _Plugin2 = _interopRequireDefault(_Plugin); var _Request = require("./Request.js"); var _Request2 = _interopRequireDefault(_Request); var _urijs = require("urijs"); var _urijs2 = _interopRequireDefault(_urijs); var _URITemplate = require("urijs/src/URITemplate"); var _URITemplate2 = _interopRequireDefault(_URITemplate); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** * Platform */ var Platform = function () { _createClass(Platform, [{ key: "_init", /** * Initialise objects * @return {undefined} */ value: function _init() { /** * @type {Object} */ this._options = Platform.defaultOptions; /** * @type {FrameSet} */ this._frames = new _FrameSet2.default(); /** * @type {FrameManager} */ this._frameManager = new _FrameManager2.default(this._frames); /** * @type {Set<Plugin>} */ this._plugins = new Set(); //set default plugins this._plugins.add(new _Plugin2.default.CookieJarMemoryPlugin()); } /** * @param {Object} opts = {} * @param {String} [opts.apiKey = ""] bungie.net API key * @param {Number} [opts.maxConcurrent = -1] - maximum concurrent requests, default is no limit * @param {Number} [opts.timeout = 5000] - network timeout in milliseconds */ }]); function Platform() { var _this = this; var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, Platform); this._init(); //copy any value in opts to this._options //only copy matching keys //DON'T use hasOwnProperty - opts could be any object and that's OK Object.keys(this._options).filter(function (x) { return x in opts; }).forEach(function (x) { _this._options[x] = opts[x]; }); } /** * Prepares the request and queues it * @param {Frame} frame - frame to prepare * @return {undefined} */ _createClass(Platform, [{ key: "_prepareRequest", value: function _prepareRequest(frame) { var _this2 = this, _listeners; frame.platformRequest = new _PlatformRequest2.default(frame); //set up a beforeSend handler to add other details frame.platformRequest.once(_PlatformRequest2.default.events.beforeSend, function () { var opts = frame.platformRequest.options; opts.timeout = _this2._options.timeout; opts.forever = true; opts.gzip = true; opts.headers[Platform.headers.contentType] = Platform.contentType; opts.headers[Platform.headers.apiKey] = _this2._options.apiKey; }); //listen for frame info var listeners = (_listeners = {}, _defineProperty(_listeners, _PlatformRequest2.default.events.beforeSend, this._frameBeforeSend), _defineProperty(_listeners, _PlatformRequest2.default.events.httpSuccess, this._frameHttpSuccess), _defineProperty(_listeners, _PlatformRequest2.default.events.httpFail, this._frameHttpError), _defineProperty(_listeners, _PlatformRequest2.default.events.httpDone, this._frameHttpDone), _defineProperty(_listeners, _PlatformRequest2.default.events.responseParsed, this._frameResponseParsed), _defineProperty(_listeners, _PlatformRequest2.default.events.responseCorrupt, this._frameResponseCorrupt), _defineProperty(_listeners, _PlatformRequest2.default.events.error, this._frameError), _defineProperty(_listeners, _PlatformRequest2.default.events.success, this._frameSuccess), _defineProperty(_listeners, _PlatformRequest2.default.events.done, this._frameDone), _listeners); var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { var _loop = function _loop() { var _step$value = _slicedToArray(_step.value, 2), eventName = _step$value[0], handler = _step$value[1]; frame.platformRequest.on(eventName, function (p) { return handler.call(_this2, p); }); }; for (var _iterator = Object.entries(listeners)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { _loop(); } //queue it, then try the queue } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } this._queueFrame(frame); this._tryFrame(); } /** * API-level request method * @param {Request} req * @return {Promise.<Response>} */ }, { key: "_serviceRequest", value: function _serviceRequest(req) { var _this3 = this; return new Promise(function (resolve, reject) { var frame = new _Frame2.default(); _BungieNet2.default.logger.log("info", "Received service request", { endpoint: req.uri.toString(), frameId: frame.id }); frame.platform = _this3; frame.request = req; frame.serviceResolve = resolve; frame.serviceReject = reject; //construct the full path //copy any query string params //add the locale frame.request.uri = _BungieNet2.default.platformPath.segment(req.uri.path()).setSearch(req.uri.search(true)); //urijs is smart enough to remove the trailing forward-slash //so add it back in manually if (!frame.request.uri.path().endsWith("/")) { frame.request.uri.path(frame.request.uri.path() + "/"); } _this3._prepareRequest(frame); }); } /** * @param {Frame} frame - frame to set as active */ }, { key: "_queueFrame", /** * @param {Frame} frame - frame to queue */ value: function _queueFrame(frame) { _BungieNet2.default.logger.log("verbose", "Frame queued", { frameId: frame.id }); frame.state = _Frame2.default.state.waiting; this._frameManager.addFrame(frame); } /** * Attempts to begin a request, taking any conditiions into account * @return {Bool} true if frame was obtained and set active */ }, { key: "_tryFrame", value: function _tryFrame() { _BungieNet2.default.logger.log("verbose", "Trying for a frame..."); //check if too many ongoing requests if (this._options.maxConcurrent >= 0) { if (this._frameManager.getActive().size >= this._options.maxConcurrent) { _BungieNet2.default.logger.log("warn", "Cannot get a frame - too many active requests"); return false; } } var frame = this._frameManager.getFrame(); if (frame === null) { return false; } Platform._activeFrame(frame); return true; } /** * Updates plugins with the given event name and any data * @param {String} eventName * @param {*} args - arguments to be passed to plugin function * @return {Promise} */ }, { key: "_notifyPlugins", value: function _notifyPlugins(eventName) { for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = this._plugins[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var p = _step2.value; p.update.apply(p, [eventName].concat(args)); } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } } }, { key: "_frameBeforeSend", value: function _frameBeforeSend(e) { this._notifyPlugins(Platform.events.frameBeforeSend, e); } }, { key: "_frameHttpError", value: function _frameHttpError(e) { this._notifyPlugins(Platform.events.frameHttpError, e); } }, { key: "_frameHttpSuccess", value: function _frameHttpSuccess(e) { this._notifyPlugins(Platform.events.frameHttpSuccess, e); } }, { key: "_frameHttpDone", value: function _frameHttpDone(e) { e.target.frame.state = _Frame2.default.state.done; this._notifyPlugins(Platform.events.frameHttpDone, e); } }, { key: "_frameResponseParsed", value: function _frameResponseParsed(e) { this._notifyPlugins(Platform.events.frameResponseParsed, e); } }, { key: "_frameResponseCorrupt", value: function _frameResponseCorrupt(e) { this._notifyPlugins(Platform.events.frameResponseCorrupt, e); } }, { key: "_frameError", value: function _frameError(e) { this._notifyPlugins(Platform.events.frameError, e); e.target.frame.serviceReject(); } }, { key: "_frameSuccess", value: function _frameSuccess(e) { this._notifyPlugins(Platform.events.frameSuccess, e); e.target.frame.serviceResolve(e.target.frame.response); } }, { key: "_frameDone", value: function _frameDone(e) { this._notifyPlugins(Platform.events.frameDone, e); this._frameManager.removeFrame(e.target.frame); } /// Platform Info/Options /** * Number of active requests * @return {Number} */ }, { key: "applicationSearch", /// Application Service /** * @param {Number} ownerMembershipId - member id to search apps for * @param {Number} currentPage - result page * @return {Promise.<Response>} */ value: function applicationSearch(ownerMembershipId) { var currentPage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; return this._serviceRequest(new _Request2.default(new _urijs2.default("/App/Search/"), "POST", { ownerMembershipId: ownerMembershipId, currentPage: currentPage })); } /** * @param {String} keyId - API key id * @param {BungieNet.enums.apiKeyStatus} state - new key state * @return {Promise.<Response>} */ }, { key: "changeApiKeyStatus", value: function changeApiKeyStatus(keyId, state) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/App/ChangeApiKeyState/{keyId}/{state}/", { keyId: keyId, state: state }), "POST", null)); } /** * Response: { * apiKey: "-new-api-key", * apiKeyId: 783639, * authorizationUrl: "https://www.bungie.net/en/Application/Authorize/783639", * creationDate: "2016-12-19T11:05:41.603Z", * status: 1 * } * @param {Number} appId - application id number * @return {Promise.<Response>} */ }, { key: "createApiKey", value: function createApiKey(appId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/App/CreateApiKey/{appId}/", { appId: appId }), "POST", null)); } /** * @param {Object} details * @param {Boolean} details.agreedToCurrentEula - true to agree * @param {String} details.link - website link for appId * @param {String} details.name - name of app * @param {String} details.origin - origin header * @param {String} details.redirectUrl - oauth redirect url * @param {BigNumber} details.scope - scope of app access * @return {Promise.<Response>} */ }, { key: "createApplication", value: function createApplication(details) { return this._serviceRequest(new _Request2.default(new _urijs2.default("/App/CreateApplication/"), "POST", details)); } /** * @param {Object} details * @param {String} details.link - website link for app * @param {String} details.name - name of app * @param {String} details.origin - origin header * @param {String} details.redirectUrl - oauth redirect url * @param {BigNumber} details.scope - scope of app access * @param {BigNumber} details.status - app status * @return {Promise.<Response>} */ }, { key: "editApplication", value: function editApplication(appId, details) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/App/EditApplication/{appId}/", { appId: appId }), "POST", details)); } /** * @param {String} code - obtained from user * @return {Promise.<Response>} */ }, { key: "getAccessTokensFromCode", value: function getAccessTokensFromCode(code) { return this._serviceRequest(new _Request2.default(new _urijs2.default("/App/GetAccessTokensFromCode/"), "POST", { code: code })); } /** * @param {String} refreshToken * @return {Promise.<Response>} */ }, { key: "getAccessTokensFromRefreshToken", value: function getAccessTokensFromRefreshToken(refreshToken) { return this._serviceRequest(new _Request2.default(new _urijs2.default("/App/GetAccessTokensFromRefreshToken/"), "POST", { refreshToken: refreshToken })); } /** * @param {Number} appId * @return {Promise.<Response>} */ }, { key: "getApplication", value: function getApplication(appId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/App/Application/{appId}/", { appId: appId }))); } /** * Response: [ * { * "apiKeyId": 999, * "apiKey": "-hex-str-", * "authorizationUrl": "https://www.bungie.net/en/Application/Authorize/1", * "creationDate": "2015-10-22T07:45:42.941Z", * "status": 1 * }, * ... * ] * @param {Number} appId * @return {Promise.<Response>} */ }, { key: "getApplicationApiKeys", value: function getApplicationApiKeys(appId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/App/ApplicationApiKeys/{appId}/", { appId: appId }))); } /** * Response: { * "applicationId": 1, * "name": "name of app", * "redirectUrl": "https://example.com/app", * "link": "", * "scope": "129", * "origin": "*", * "applicationStatus": 1, * "membershipId": "68974", * "authorizationStatus": 1, * "authExpirationDate": "2017-12-25T14:18:08.459Z", * "authorizationDate": "2016-12-25T14:18:08.092Z", * "sessionId": "4223682639057300080" * } * @param {BigNumber} membershipId * @param {Number} appId * @return {Promise.<Response>} */ }, { key: "getAuthorizationForUserAndApplication", value: function getAuthorizationForUserAndApplication(membershipId, appId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/App/Authorization/{mId}/{appId}/", { mId: membershipId.toString(), appId: appId }))); } /** * Response: { * "results": [ * { * "applicationId": 1, * "name": "name of app", * "redirectUrl": "https://example.com/app", * "link": "", * "scope": "129", * "origin": "*", * "applicationStatus": 1, * "membershipId": "68974", * "authorizationStatus": 1, * "authExpirationDate": "2017-12-25T14:18:08.459Z", * "authorizationDate": "2016-12-25T14:18:08.092Z", * "sessionId": "4223682639057300080" * }, * ... * ] * } * @param {BigNumber} membershipId * @return {Promise.<Response>} */ }, { key: "getAuthorizations", value: function getAuthorizations(membershipId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/App/Authorizations/{mId}/", { mId: membershipId.toString() }))); } /** * @return {Promise.<Response>} */ }, { key: "privateApplicationSearch", value: function privateApplicationSearch() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/App/PrivateSearch/"), "POST", {})); } /** * @param {BigNumber} membershipId - membershipId of user who is revoking access * @param {Number} appId - id of the app user is revoking * @return {Promise.<Response>} */ }, { key: "revokeAuthorization", value: function revokeAuthorization(membershipId, appId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/App/RevokeAuthorization/{mId}/{appId}/", { mId: membershipId.toString(), appId: appId }), "POST", null)); } /// User Service /** * @return {Promise.<Response>} */ }, { key: "createUser", value: function createUser() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/CreateUser/"), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "editSuccessMessageFlags", value: function editSuccessMessageFlags(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/MessageFlags/Success/Update/{p1}/", { p1: p1 }), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "getAvailableAvatars", value: function getAvailableAvatars() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetAvailableAvatars/"))); } /** * @return {Promise.<Response>} */ }, { key: "getAvailableAvatarsAdmin", value: function getAvailableAvatarsAdmin(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/GetAvailableAvatarsAdmin/{p1}/", { p1: p1 }))); } /** * @return {Promise.<Response>} */ }, { key: "getAvailableThemes", value: function getAvailableThemes() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetAvailableThemes/"))); } /** * @param {BigNumber} membershipId * @param {BungieNet.enums.bungieMembershipType} membershipType */ }, { key: "getBungieAccount", value: function getBungieAccount(membershipId, membershipType) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/GetBungieAccount/{membershipId}/{membershipType}/", { membershipId: membershipId.toString(), membershipType: membershipType }))); } /** * @param {BigNumber} membershipId - bungie.net memberId * @return {Promise.<Response>} */ }, { key: "getBungieNetUserById", value: function getBungieNetUserById(membershipId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/GetBungieNetUserById/{membershipId}/", { membershipId: membershipId.toString() }))); } /** * @return {Promise.<Response>} */ }, { key: "getCountsForCurrentUser", value: function getCountsForCurrentUser() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetCounts/"))); } /** * @return {Promise.<Response>} * Response: [ * { * credentialType: 2, * credentialDisplayName: "Psnid", * isPublic: false * }, * ... * ] */ }, { key: "getCredentialTypesForAccount", value: function getCredentialTypesForAccount() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetCredentialTypesForAccount/"))); } /** * @return {Promise.<Response>} * Response: { * destinyAccounts: [], * bungieNetUser: {}, * clans: [], * relatedGroups: {}, * destinyAccountErrors: [] * } */ }, { key: "getCurrentBungieAccount", value: function getCurrentBungieAccount() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetCurrentBungieAccount/"))); } /** * @return {Promise.<Response>} */ }, { key: "getCurrentUser", value: function getCurrentUser() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetBungieNetUser/"))); } /** * @return {Promise.<Response>} * @example * Response: [ * { * AppInstallationId: "-guid-", * AppType: "BnetMobile", * DeviceName: "Nexus", * DeviceType: 3, * MembershipId: "-bungie.net membership id-", * MembershipType: "-bnext enum-", * PairId: "-BigNumber-", * PairingDate: "iso date string" * } * ... * ] */ }, { key: "getMobileAppPairings", value: function getMobileAppPairings() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetMobileAppPairings/"))); } /** * @return {Promise.<Response>} * @example {@see getMobileAppPairings} */ }, { key: "getMobileAppPairingsUncached", value: function getMobileAppPairingsUncached() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetMobileAppPairingsUncached/"))); } /** * @return {Promise.<Response>} * @example * Response: [ * { * notificationSettingId: "-BigNumber-", * membershipId: "-BigNumber-", * optInFlags: "", * scheduleFlags: 0, * notificationMethod: "-BigNumber-", * notificationType: "-BigNumber-", * displayName: "New Messages", * settingDescription: "Tell me if I have a new Bungie.net Private Message", * possibleMethods: 7 * }, * ... * ] */ }, { key: "getNotificationSettings", value: function getNotificationSettings() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetNotificationSettings/"))); } /** * @return {Promise.<Response>} */ }, { key: "getPartnerships", value: function getPartnerships(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/{p1}/Partnerships/", { p1: p1 }))); } /** * @return {Promise.<Response>} * @example * Response: [ * { * apiKey: "hex", * ownerMembershipId: "0", * creationDate: "iso date string", * expirationDate: "iso date string", * apiEulaVersion: 1 * } * ] */ }, { key: "getPlatformApiKeysForUser", value: function getPlatformApiKeysForUser() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetPlatformApiKeysForUser/"))); } /** * @return {Promise.<Response>} * @example * Response: "/ExpireWebAuth.ashx?..." */ }, { key: "getSignOutUrl", value: function getSignOutUrl() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/GetSignOutUrl/"))); } /** * @param {BigNumber} membershipId - bungie.net membership id * @return {Promise.<Response>} * @example * Response: [ * { * userAliasId: "-BigNumber-", * membershipId: "-BigNumber-", * akaDisplayName: "-the-alias-", * akaUniqueName: "-the-unique-name-", * changedDate: "-date-string-" * }, * ... * ] */ }, { key: "getUserAliases", value: function getUserAliases(membershipId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/GetUserAliases/{membershipId}/", { membershipId: membershipId.toString() }))); } /** * @param {Boolean} [excludeBungieNet = false] - exclude bungie.net member id * @return {Promise.<Response>} * @example * Response: { * -id-as-key-: -membership-type-as-value-, * "68974": 254, * ... * } */ }, { key: "getUserMembershipIds", value: function getUserMembershipIds() { var excludeBungieNet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/GetMembershipIds/{?excludebungienet}", { excludebungienet: excludeBungieNet }))); } /** * @return {Promise.<Response>} */ }, { key: "linkOverride", value: function linkOverride() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/LinkOverride/"), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "registerMobileAppPair", value: function registerMobileAppPair() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/RegisterMobileAppPair/"), "POST", {})); } /** * @param {*} p1 * @return {Promise.<Response>} */ }, { key: "removePartnership", value: function removePartnership(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/Partnerships/{p1}/Remove/", { p1: p1 }), "POST", {})); } /** * @param {String} username - query to search for * @return {Promise.<Response>} * @example * Response: [ * { user information }, * ... * ] */ }, { key: "searchUsers", value: function searchUsers(username) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/SearchUsers/{?q}", { q: username }))); } /** * @param {String} username - search query * @param {Number} [page = 1] - 1-based page number * @return {Promise.<Response>} * @example {@see searchUsers} */ }, { key: "searchUsersPaged", value: function searchUsersPaged(username) { var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/SearchUsersPaged/{searchTerm}/{page}/", { searchTerm: username, page: page }))); } /** * @param {String} username - search query * @param {Number} [page = 1] 1-based page number * @param {*} [p3 = null] UNKNOWN * @return {Promise.<Response>} * @example {@see SearchUsersPaged} */ }, { key: "searchUsersPagedV2", value: function searchUsersPagedV2(username) { var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var p3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/SearchUsersPaged/{searchTerm}/{page}/{p3}/", { searchTerm: username, page: page, p3: p3 }))); } /** * @return {Promise.<Response>} */ }, { key: "setAcknowledged", value: function setAcknowledged(ackId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/Acknowledged/{ackId}/", { ackId: ackId }), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "unregisterMobileAppPair", value: function unregisterMobileAppPair(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/UnregisterMobileAppPair/{p1}/", { p1: p1 }), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "updateDestinyEmblemAvatar", value: function updateDestinyEmblemAvatar() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/UpdateDestinyEmblemAvatar/"), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "updateNotificationSetting", value: function updateNotificationSetting() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/Notification/Update/"), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "updateStateInfoForMobileAppPair", value: function updateStateInfoForMobileAppPair() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/UpdateStateInfoForMobileAppPair/"), "POST", {})); } /** * Updates the user with the given options * @link https://destinydevs.github.io/BungieNetPlatform/docs/UserService/UpdateUser#/JSON-POST-Parameters * @param {Object} opts * @return {Promise.<Response>} */ }, { key: "updateUser", value: function updateUser(opts) { return this._serviceRequest(new _Request2.default(new _urijs2.default("/User/UpdateUser/"), "POST", opts)); } /** * @return {Promise.<Response>} */ }, { key: "updateUserAdmin", value: function updateUserAdmin(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/User/UpdateUserAdmin/{p1}/", { p1: p1 }), "POST", {})); } /// Message Service /** * @param {BigNumber[]} membersTo - array of memberIDs * @param {String} body - body of the message * @return {Promise.<Response>} */ }, { key: "createConversation", value: function createConversation(membersTo, body) { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/CreateConversation/"), "POST", { membersToId: membersTo.map(function (bn) { return bn.toString(); }), body: body })); } /** * @return {Promise.<Response>} */ }, { key: "createConversationV2", value: function createConversationV2() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/CreateConversationV2/"), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "getAllianceInvitedToJoinInvitations", value: function getAllianceInvitedToJoinInvitations(p1, p2) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/AllianceInvitations/InvitationsToJoinAnotherGroup/{p1}/{p2}/", { p1: p1, p2: p2 }))); } /** * @return {Promise.<Response>} */ }, { key: "getAllianceJoinInvitations", value: function getAllianceJoinInvitations(p1, p2) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/AllianceInvitations/RequestsToJoinYourGroup/{p1}/{p2}/", { p1: p1, p2: p2 }))); } /** * @param {BigNumber} conversationId * @return {Promise.<Response>} */ }, { key: "getConversationById", value: function getConversationById(conversationId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationById/{conversationId}/", { conversationId: conversationId.toString() }))); } /** * @param {BigNumber} conversationId - conversation id * @return {Promise.<Response>} */ }, { key: "getConversationByIdV2", value: function getConversationByIdV2(conversationId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationByIdV2/{id}/", { id: conversationId.toString() }))); } /** * @return {Promise.<Response>} */ }, { key: "getConversationsV2", value: function getConversationsV2(p1, p2) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationsV2/{p1}/{p2}/", { p1: p1, p2: p2 }))); } /** * @return {Promise.<Response>} */ }, { key: "getConversationsV3", value: function getConversationsV3(p1, p2) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationsV3/{p1}/{p2}/", { p1: p1, p2: p2 }))); } /** * @return {Promise.<Response>} */ }, { key: "getConversationsV4", value: function getConversationsV4(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationsV4/{p1}/", { p1: p1 }))); } /** * @param {Number} [page = 1] * @return {Promise.<Response>} */ }, { key: "getConversationsV5", value: function getConversationsV5() { var page = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationsV5/{page}/", { page: page }))); } /** * @return {Promise.<Response>} */ }, { key: "getConversationThreadV2", value: function getConversationThreadV2(p1, p2, p3) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationThreadV2/{p1}/{p2}/{p3}/", { p1: p1, p2: p2, p3: p3 }))); } /** * Get a page of a conversation * params.before can be set using BigNumber like so: * (new BigNumber(2)).pow(63).minus(1) * @param {Object} params * @param {BigNumber} params.id - conversation id * @param {Number} params.page - page to return * @param {BigNumber} params.before - message id filter * @param {BigNumber} params.after - message id filter * @return {Promise.<Response>} */ }, { key: "getConversationThreadV3", value: function getConversationThreadV3(params) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationThreadV3/{id}/{page}/{?after,before}", { id: params.id.toString(), page: params.page, after: params.after.toString(), before: params.before.toString() }))); } /** * @param {BigNumber} membershipId * @return {Promise.<Response>} */ }, { key: "getConversationWithMemberId", value: function getConversationWithMemberId(membershipId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationWithMember/{id}/", { id: membershipId.toString() }))); } /** * @param {BigNumber} membershipId * @return {Promise.<Response>} */ }, { key: "getConversationWithMemberIdV2", value: function getConversationWithMemberIdV2(membershipId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetConversationWithMemberV2/{id}/", { id: membershipId.toString() }))); } /** * @param {Number} [page = 1] - 1-based * @return {Promise.<Response>} */ }, { key: "getGroupConversations", value: function getGroupConversations() { var page = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/GetGroupConversations/{page}/", { page: page }))); } /** * @return {Promise.<Response>} */ }, { key: "getInvitationDetails", value: function getInvitationDetails(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/Invitations/{p1}/Details/", { p1: p1 }))); } /** * @return {Promise.<Response>} */ }, { key: "getTotalConversationCount", value: function getTotalConversationCount() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/GetTotalConversationCount/"))); } /** * @return {Promise.<Response>} */ }, { key: "getUnreadConversationCountV2", value: function getUnreadConversationCountV2() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/GetUnreadPrivateConversationCount/"))); } /** * @return {Promise.<Response>} */ }, { key: "getUnreadConversationCountV3", value: function getUnreadConversationCountV3() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/GetTotalConversationCountV3/"))); } /** * @return {Promise.<Response>} */ }, { key: "getUnreadConversationCountV4", value: function getUnreadConversationCountV4() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/GetUnreadConversationCountV4/"))); } /** * @return {Promise.<Response>} */ }, { key: "getUnreadGroupConversationCount", value: function getUnreadGroupConversationCount() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/GetUnreadGroupConversationCount/"))); } /** * Leave a given conversation by id * @param {BigNumber} conversationId * @return {Promise.<Response>} */ }, { key: "leaveConversation", value: function leaveConversation(conversationId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/LeaveConversation/{id}/", { id: conversationId.toString() }))); } /** * @param {BigNumber} groupId * @param {BigNumber} messageId * @return {Promise.<Response>} */ }, { key: "moderateGroupWall", value: function moderateGroupWall(groupId, messageId) { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/ModerateGroupWall/{groupId}/{messageId}/"), "POST", { groupId: groupId.toString(), messageId: messageId.toString() })); } /** * @return {Promise.<Response>} */ }, { key: "reviewAllInvitations", value: function reviewAllInvitations(p1, p2) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/Invitations/ReviewAllDirect/{p1}/{p2}/", { p1: p1, p2: p2 }), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "reviewInvitation", value: function reviewInvitation(p1, p2, p3) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/Invitations/{p1}/{p2}/{p3}/", { p1: p1, p2: p2, p3: p3 }), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "reviewInvitationDirect", value: function reviewInvitationDirect(invitationId, invitationResponseState) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/Invitations/ReviewDirect/{id}/{state}/", { id: invitationId, state: invitationResponseState }), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "reviewInvitations", value: function reviewInvitations(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Message/Invitations/ReviewListDirect/{p1}/", { p1: p1 }), "POST", {})); } /** * @return {Promise.<Response>} */ }, { key: "saveMessageV2", value: function saveMessageV2() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/SaveMessageV2/"), "POST", {})); } /** * Add a message to a conversation * @param {String} body * @param {BigNumber} conversationId * @return {Promise.<Response>} */ }, { key: "saveMessageV3", value: function saveMessageV3(body, conversationId) { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/SaveMessageV3/"), "POST", { body: body, conversationId: conversationId.toString() })); } /** * Currently used by bungie.net to save a message to a group wall * @param {String} body * @param {BigNumber} conversationId * @param {String} [subject = ""] * @return {Promise.<Response>} */ }, { key: "saveMessageV4", value: function saveMessageV4(conversationId, body) { var subject = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ""; return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/SaveMessageV4/"), "POST", { conversationId: conversationId.toString(), body: body, subject: subject })); } /** * @return {Promise.<Response>} */ }, { key: "updateConversationLastViewedTimestamp", value: function updateConversationLastViewedTimestamp() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/Conversation/UpdateLastViewedTimestamp/"), "POST", {})); } /** * Signal that the current user is typing a message * * Bungie.net sends a number as the conversationId rather than as a string, * but both appear to work * * @param {BigNumber} conversationId * @return {Promise.<Response>} */ }, { key: "userIsTyping", value: function userIsTyping(conversationId) { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Message/UserIsTyping/"), "POST", { conversationId: conversationId.toString() })); } /// Notification Service /** * @return {Promise.<Response>} */ }, { key: "getRealTimeEvents", value: function getRealTimeEvents(p1, p2, timeout) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Notification/Events/{p1}/{p2}/{?timeout}", { timeout: timeout }))); } /** * @deprecated * @return {Promise.<Response>} */ }, { key: "getRecentNotificationCount", value: function getRecentNotificationCount() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Notification/GetCount/"))); } /** * @return {Promise.<Response>} */ }, { key: "getRecentNotifications", value: function getRecentNotifications() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Notification/GetRecent/"))); } /** * @return {Promise.<Response>} */ }, { key: "resetNotification", value: function resetNotification() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Notification/Reset/"))); } /// Content Service /** * @param {BigNumber} careerId * @return {Promise.<Response>} * @example * Response: { * careerId: "44767", * title: "Lead Weapons and Vehicles Artist", * category: "Art", * categoryTag: "art", * tags: [], * detail: "-html-string-" * } */ }, { key: "getCareer", value: function getCareer(careerId) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/Careers/{id}/", { id: careerId.toString() }))); } /** * @return {Promise.<Response>} * @example * Response: { * categories: [ * { * categoryName: "Art", * tag: "art", * careers: [ * { * careerId: "44767", * title: "Lead Weapons and Vehicle Artist " * } * ... * ] * } * ... * ] * } */ }, { key: "getCareers", value: function getCareers() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Content/Careers/"))); } /** * @return {Promise.<Response>} */ }, { key: "getContentById", value: function getContentById(p1, p2, head) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/GetContentById/{p1}/{p2}/{?head}", { p1: p1, p2: p2, head: head }))); } /** * @return {Promise.<Response>} */ }, { key: "getContentByTagAndType", value: function getContentByTagAndType(params) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/GetContentByTagAndType/{p1}/{p2}/{p3}/{?,head}", { p1: params.p1, p2: params.p2, p3: params.p3, head: params.head }))); } /** * @return {Promise.<Response>} */ }, { key: "getContentType", value: function getContentType(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/GetContentType/{p1}/", { p1: p1 }))); } /** * @return {Promise.<Response>} */ }, { key: "getDestinyContent", value: function getDestinyContent(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/Site/Destiny/{p1}/", { p1: p1 }))); } /** * @return {Promise.<Response>} */ }, { key: "getDestinyContentV2", value: function getDestinyContentV2(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/Site/Destiny/V2/{p1}/", { p1: p1 }))); } /** * @return {Promise.<Response>} */ }, { key: "getFeaturedArticle", value: function getFeaturedArticle() { return this._serviceRequest(new _Request2.default(new _urijs2.default("/Content/Site/Featured/"))); } /** * @return {Promise.<Response>} */ }, { key: "getHomepageContent", value: function getHomepageContent(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/Site/Homepage/{p1}/", { p1: p1 }))); } /** * @return {Promise.<Response>} */ }, { key: "getHomepageContentV2", value: function getHomepageContentV2() { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/Site/Homepage/V2/"))); } /** * @return {Promise.<Response>} */ }, { key: "getJobs", value: function getJobs(p1) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/Site/Jobs/{p1}/", { p1: p1 }))); } /** * @return {Promise.<Response>} * @param {Number} currentPage = 1 */ }, { key: "getNews", value: function getNews(params) { return this._serviceRequest(new _Request2.default(_urijs2.default.expand("/Content/Site/News/{p1}/{p2}/{?itemsperpage,currentpage}", { p1: params.p1, p2: params.p2, itemsperpage: params.itemsPerPage, currentpage: params.currentPage }))); } /** * @return {Promise.<Response>} */ }, { key: "getPromoWidget", value: function getPromoWidget() { return th