-
Notifications
You must be signed in to change notification settings - Fork 10
/
UserResource.ts
87 lines (81 loc) · 2.79 KB
/
UserResource.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import BungieResource from './BungieResoure';
import HTTPService from '../HttpService';
import { ServerResponse } from '../type-definitions/app';
import { UserMembershipData, BungieMembershipType } from '../type-definitions/user';
import { checkOauthToken } from '../util';
export default class UserResource extends BungieResource {
protected resourcePath: string;
constructor(httpService: HTTPService) {
super(httpService);
this.resourcePath = `${this.basePath}/User`;
}
/**
* Returns a list of accounts associated with signed in user. This is useful for OAuth implementations that do not give you access to the token response.
* ```js
* traveler.user
* .getMembershipDataForCurrentUser('oauthAccessToken')
* .then(response => {
* console.log(response);
* })
* .catch(err => {
* console.log(err);
* });
* ```
*
* @param {string} oauthAccesstoken
* @returns {Promise<ServerResponse<UserMembershipData>>}
* @memberof UserResource
*/
public getMembershipDataForCurrentUser(oauthAccesstoken: string): Promise<ServerResponse<UserMembershipData>> {
checkOauthToken(oauthAccesstoken);
return new Promise<ServerResponse<UserMembershipData>>((resolve, reject) => {
this.httpService
.get(`${this.resourcePath}/GetMembershipsForCurrentUser/`, oauthAccesstoken)
.then((response: ServerResponse<UserMembershipData>) => {
resolve(response);
})
.catch(err => {
reject(err);
});
});
}
/**
* Returns a list of accounts associated with the supplied membership ID and membership type.
* This will include all linked accounts (even when hidden) if supplied credentials permit it.
*
* ```js
* traveler.user
* .getMembershipDataById('membershipId', BungieMembershipType.TigerPsn, 'oauthAccessToken')
* .then(response => {
* console.log(response);
* })
* .catch(err => {
* console.log(err);
* });
* ```
*
*
* @param {string} destinyMembershipId
* @param {BungieMembershipType} membershipType
* @param {string} oauthAccesstoken
* @returns {Promise<IAPIResponse<UserMembershipData>>}
* @memberof UserResource
*/
public getMembershipDataById(
destinyMembershipId: string,
membershipType: BungieMembershipType,
oauthAccesstoken: string
): Promise<ServerResponse<UserMembershipData>> {
checkOauthToken(oauthAccesstoken);
return new Promise<ServerResponse<UserMembershipData>>((resolve, reject) => {
this.httpService
.get(`${this.resourcePath}/GetMembershipsById/${destinyMembershipId}/${membershipType}/`, oauthAccesstoken)
.then((response: ServerResponse<UserMembershipData>) => {
resolve(response);
})
.catch(err => {
reject(err);
});
});
}
}