bungienetplatformjs
Version:
node API for the Bungie.net Platform
1,727 lines (1,443 loc) • 177 kB
JavaScript
"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