Skip to content

Commit edf31be

Browse files
author
BuildTools
committed
searchGlobalDisplayNames() and Documentation
1 parent 04775c1 commit edf31be

2 files changed

Lines changed: 64 additions & 2 deletions

File tree

src/main/java/material/DestinyAPI.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,12 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
170170
}
171171

172172
/**
173-
* Gets the users with this name (There can be multiple users with the same name)
173+
* Search for a user
174+
*
175+
* You need to enter both their username and discriminator
176+
*
177+
* e.g. "dec4234#9904"
178+
* If you only know their name, use searchBungieGlobalDisplayNames()
174179
*/
175180
public static List<BungieUser> getUsersWithName(String name) {
176181
HttpUtils hu = new HttpUtils();
@@ -208,6 +213,31 @@ public static List<BungieUser> getValidUsers(String name) {
208213
return list;
209214
}
210215

216+
/**
217+
* You use this method to search for a user purely by their username
218+
*
219+
* For getUsersWithName() you would need to search "dec4234#9904"
220+
* while for this you can search with "dec4234"
221+
*/
222+
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
223+
List<BungieUser> bungieUsers = new ArrayList<>();
224+
225+
JsonArray jsonArray = new HttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/Search/Prefix/" + prefix + "/0/").getAsJsonObject("Response").getAsJsonArray("searchResults");
226+
227+
for(JsonElement jsonElement : jsonArray) {
228+
JsonObject jsonObject = jsonElement.getAsJsonObject();
229+
JsonObject destinyMembership = jsonObject.getAsJsonArray("destinyMemberships").get(0).getAsJsonObject();
230+
231+
BungieUser bungieUser = new BungieUser(destinyMembership.get("membershipId").getAsString(), destinyMembership.get("displayName").getAsString(),
232+
destinyMembership.get("bungieGlobalDisplayName").getAsString(), destinyMembership.get("crossSaveOverride").getAsInt(), destinyMembership.get("membershipType").getAsInt(),
233+
destinyMembership.get("isPublic").getAsBoolean());
234+
235+
bungieUsers.add(bungieUser);
236+
}
237+
238+
return bungieUsers;
239+
}
240+
211241
public static Clan getClan(long id) {
212242
return new Clan(id);
213243
}

src/main/java/material/user/BungieUser.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
*/
3434
public class BungieUser extends ContentFramework {
3535

36-
private String bungieMembershipID, displayName, supplementalDisplayName, discriminator;
36+
private String bungieMembershipID, displayName, globalDisplayName, supplementalDisplayName, discriminator;
3737
private Date lastPlayed;
3838
private JsonObject je; // The JsonObject of the profile used to get most information
3939
private HttpUtils hu = new HttpUtils();
@@ -92,6 +92,18 @@ public BungieUser(String bungieMembershipID, String displayName, int crossSaveOv
9292
this.isPublic = isPublic;
9393
}
9494

95+
public BungieUser(String bungieMembershipID, String displayName, String globalDisplayName, int crossSaveOverride, int membershipType, boolean isPublic) {
96+
super("https://www.bungie.net/Platform/Destiny2/-1/Profile/" + bungieMembershipID + "/LinkedProfiles/?components=200", source -> {
97+
return source.getAsJsonObject("Response");
98+
});
99+
this.bungieMembershipID = bungieMembershipID;
100+
this.displayName = displayName;
101+
this.globalDisplayName = globalDisplayName;
102+
this.crossSaveOverride = crossSaveOverride;
103+
this.membershipType = membershipType;
104+
this.isPublic = isPublic;
105+
}
106+
95107
/**
96108
* Gets the bungie membership ID of the user
97109
*/
@@ -121,6 +133,21 @@ public String getDisplayName() {
121133
return displayName;
122134
}
123135

136+
public String getGlobalDisplayName() {
137+
getJE();
138+
139+
if(globalDisplayName == null) {
140+
141+
}
142+
143+
return globalDisplayName;
144+
}
145+
146+
/**
147+
* Returns the combined displayname and user discriminator as used in friend requests and user searches
148+
*
149+
* E.g. dec4234#9904
150+
*/
124151
public String getSupplementalDisplayName() {
125152
if(supplementalDisplayName == null) {
126153
supplementalDisplayName = getJO().getAsJsonObject("bnetMembership").get("supplementalDisplayName").getAsString();
@@ -129,6 +156,11 @@ public String getSupplementalDisplayName() {
129156
return supplementalDisplayName;
130157
}
131158

159+
/**
160+
* Get the discriminator of a user's name
161+
*
162+
* E.g. "9904" of dec4234#9904
163+
*/
132164
public String getDiscriminator() {
133165
if(discriminator == null) {
134166
discriminator = getSupplementalDisplayName().split("#")[1];

0 commit comments

Comments
 (0)