Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions pom.xml
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarentees of
~ any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
~ ownership of this software without the explicit permission of the author.
~ Copyright (c) 2024. dec4234
~ A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
~
~ GitHub -> https://github.com/dec4234/JavaDestinyAPI
~ Github -> https://github.com/dec4234/JavaDestinyAPI
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
Expand All@@ -18,7 +17,7 @@
<packaging>jar</packaging>

<name>JavaDestinyAPI</name>
<description>A Java wrapper for bungie.net platform api, allowing users to get data about the video games Destiny and Destiny 2</description>
<description>A Java wrapper for bungie.net platform API, allowing users to get data about the video games Destiny and Destiny 2</description>
<url>https://github.com/dec4234/JavaDestinyAPI</url>

<licenses>
Expand DownExpand Up@@ -51,7 +50,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
Expand All@@ -62,7 +61,7 @@
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
</dependency>
</dependencies>

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Base class for all exceptions generated when an issue occurs in the request pipeline to Bungie.
* This most common reason for this error would be when the API is offline, and all objects are misparsed.
*/
public abstract class APIException extends Exception {

public APIException() {

}

public APIException(String errorMessage) {
super(errorMessage);
}

public APIException(Exception e) {
super(e);
}
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Indicates that the request returned error code 5 (The API has been disabled by Bungie)
*/
public class APIOfflineException extends Exception {
public class APIOfflineException extends APIException {

public APIOfflineException(String returnMessage) {
super("The Bungie API returned this message: " + returnMessage);
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Self explanatory. The access token needs to be regenerated using the refresh token.
*/
public class AccessTokenExpiredException extends APIException{
}

This file was deleted.

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

public class ConnectionException extends APIException {

public ConnectionException(Exception exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* When a token is missing or wrong, or some other pre-condition was not met that was needed to execute a request.
* This is a generic error, check the associated error message for more information.
*/
public class InvalidConditionException extends APIException {

public InvalidConditionException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

import com.google.gson.JsonSyntaxException;

/**
* Malformed or non-json content found where JSON was expected. Usually at an API endpoint.
*/
public class JsonParsingError extends APIException {

public JsonParsingError(String message) {
super(message);
}

public JsonParsingError(JsonSyntaxException exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* You either have insufficient permission to attempt this OAuth action, or you forgot to authorize yourself.
* Alternatively, the access and/or refresh token has expired
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow}
*/
public class OAuthUnauthorizedException extends APIException {

public OAuthUnauthorizedException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* The name is self-expanatory. The refresh token normally used to generate a new access token has expired since it
* hasn't been refreshed in the past 90 days or it has been 1 year since the last oauth.
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow} to generate a new one.
*/
public class RefreshTokenExpiredException extends APIException {

}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.jdaSrc;
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/net/dec4234/javadestinyapi/material/DestinyAPI.java
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.material;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.dec4234.javadestinyapi.exceptions.APIException;
import net.dec4234.javadestinyapi.material.clan.Clan;
import net.dec4234.javadestinyapi.material.user.BungieUser;
import net.dec4234.javadestinyapi.material.user.DestinyPlatform;
import net.dec4234.javadestinyapi.material.user.UserCredential;
import net.dec4234.javadestinyapi.material.user.UserCredentialType;
import net.dec4234.javadestinyapi.responses.user.SanitizedUsernamesResponse;
Expand DownExpand Up@@ -132,23 +131,23 @@ public static BungieUser getUser(String id) {
return new BungieUser(id);
}

public static SanitizedUsernamesResponse getSanitizedUsernames(String id) {
public static SanitizedUsernamesResponse getSanitizedUsernames(String id) throws APIException {
return new SanitizedUsernamesResponse(httpUtils.urlRequestGET(HttpUtils.URL_BASE + "/User/GetSanitizedPlatformDisplayNames/" + id + "/").getAsJsonObject("Response"));
}

/**
* Get a BungieUser from a Steam ID
* NOT the same IDs used by Bungie to identify individual users
*/
public static BungieUser getMemberFromSteamID(String steamID) {
public static BungieUser getMemberFromSteamID(String steamID) throws APIException {
return getMemberFromPlatformID("SteamId", steamID);
}

/**
* Used to get a BungieUser from a specified platform ID
* Currently only works with Steam IDs (see getMemberFromSteamID())
*/
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) {
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) throws APIException {
JsonObject jsonObject = getHttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/GetMembershipFromHardLinkedCredential/" + platformName + "/" + platformID + "/").getAsJsonObject("Response");

return new BungieUser(jsonObject.get("membershipId").getAsString());
Expand All@@ -162,7 +161,7 @@ private static BungieUser getMemberFromPlatformID(String platformName, String pl
* <p>
* Requires OAuth
*/
public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
public static UserCredential[] getUserCredentials(BungieUser bungieUser) throws APIException {
List<UserCredential> list = new LinkedList<>();

for (JsonElement je : getHttpUtils().urlRequestGETOauth("https://www.bungie.net/Platform/User/GetCredentialTypesForTargetAccount/" + bungieUser.getID() + "/").getAsJsonArray("Response")) {
Expand All@@ -185,7 +184,7 @@ public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
/**
* Get a "UserCredential" from a BungieUser
*/
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) {
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) throws APIException {
for (UserCredential userCredential : getUserCredentials(bungieUser)) {
if (userCredential.getUserCredentialType() == type) {
return userCredential;
Expand All@@ -207,7 +206,7 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
* @param nameAndDiscrim A full name and discriminator such as "dec4234#9904"
* @return A user with the matching name and discriminator, null otherwise
*/
public static BungieUser getUserWithName(String nameAndDiscrim) {
public static BungieUser getUserWithName(String nameAndDiscrim) throws APIException {
try {
String[] split = nameAndDiscrim.split("#");
JsonObject jsonObject = new JsonObject();
Expand All@@ -229,7 +228,7 @@ public static BungieUser getUserWithName(String nameAndDiscrim) {
* BungieUser. While searching "Gladd" or "Datto" should return
* multiple.
*/
public static List<BungieUser> searchUsers(String name) {
public static List<BungieUser> searchUsers(String name) throws APIException {
List<BungieUser> users = new ArrayList<>();

JsonObject body = new JsonObject();
Expand DownExpand Up@@ -274,7 +273,7 @@ public static List<BungieUser> searchUsers(String name) {
* @param jsonArray
* @return
*/
private static BungieUser processListOfProfiles(JsonArray jsonArray) {
private static BungieUser processListOfProfiles(JsonArray jsonArray) throws APIException {
for (JsonElement jsonElement : jsonArray) {
JsonObject profile = jsonElement.getAsJsonObject();

Expand DownExpand Up@@ -325,7 +324,7 @@ private static BungieUser processListOfProfiles(JsonArray jsonArray) {
* Use searchUsers() instead
*/
@Deprecated
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
public static List<BungieUser> searchGlobalDisplayNames(String prefix) throws APIException {
prefix = StringUtils.httpEncode(prefix);

List<BungieUser> bungieUsers = new ArrayList<>();
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
22 throwing by dec4234 · Pull Request #23 · dec4234/JavaDestinyAPI · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions pom.xml
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarentees of
~ any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
~ ownership of this software without the explicit permission of the author.
~ Copyright (c) 2024. dec4234
~ A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
~
~ GitHub -> https://github.com/dec4234/JavaDestinyAPI
~ Github -> https://github.com/dec4234/JavaDestinyAPI
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
Expand All@@ -18,7 +17,7 @@
<packaging>jar</packaging>

<name>JavaDestinyAPI</name>
<description>A Java wrapper for bungie.net platform api, allowing users to get data about the video games Destiny and Destiny 2</description>
<description>A Java wrapper for bungie.net platform API, allowing users to get data about the video games Destiny and Destiny 2</description>
<url>https://github.com/dec4234/JavaDestinyAPI</url>

<licenses>
Expand DownExpand Up@@ -51,7 +50,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
Expand All@@ -62,7 +61,7 @@
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
</dependency>
</dependencies>

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Base class for all exceptions generated when an issue occurs in the request pipeline to Bungie.
* This most common reason for this error would be when the API is offline, and all objects are misparsed.
*/
public abstract class APIException extends Exception {

public APIException() {

}

public APIException(String errorMessage) {
super(errorMessage);
}

public APIException(Exception e) {
super(e);
}
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Indicates that the request returned error code 5 (The API has been disabled by Bungie)
*/
public class APIOfflineException extends Exception {
public class APIOfflineException extends APIException {

public APIOfflineException(String returnMessage) {
super("The Bungie API returned this message: " + returnMessage);
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Self explanatory. The access token needs to be regenerated using the refresh token.
*/
public class AccessTokenExpiredException extends APIException{
}

This file was deleted.

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

public class ConnectionException extends APIException {

public ConnectionException(Exception exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* When a token is missing or wrong, or some other pre-condition was not met that was needed to execute a request.
* This is a generic error, check the associated error message for more information.
*/
public class InvalidConditionException extends APIException {

public InvalidConditionException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

import com.google.gson.JsonSyntaxException;

/**
* Malformed or non-json content found where JSON was expected. Usually at an API endpoint.
*/
public class JsonParsingError extends APIException {

public JsonParsingError(String message) {
super(message);
}

public JsonParsingError(JsonSyntaxException exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* You either have insufficient permission to attempt this OAuth action, or you forgot to authorize yourself.
* Alternatively, the access and/or refresh token has expired
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow}
*/
public class OAuthUnauthorizedException extends APIException {

public OAuthUnauthorizedException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* The name is self-expanatory. The refresh token normally used to generate a new access token has expired since it
* hasn't been refreshed in the past 90 days or it has been 1 year since the last oauth.
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow} to generate a new one.
*/
public class RefreshTokenExpiredException extends APIException {

}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.jdaSrc;
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/net/dec4234/javadestinyapi/material/DestinyAPI.java
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.material;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.dec4234.javadestinyapi.exceptions.APIException;
import net.dec4234.javadestinyapi.material.clan.Clan;
import net.dec4234.javadestinyapi.material.user.BungieUser;
import net.dec4234.javadestinyapi.material.user.DestinyPlatform;
import net.dec4234.javadestinyapi.material.user.UserCredential;
import net.dec4234.javadestinyapi.material.user.UserCredentialType;
import net.dec4234.javadestinyapi.responses.user.SanitizedUsernamesResponse;
Expand DownExpand Up@@ -132,23 +131,23 @@ public static BungieUser getUser(String id) {
return new BungieUser(id);
}

public static SanitizedUsernamesResponse getSanitizedUsernames(String id) {
public static SanitizedUsernamesResponse getSanitizedUsernames(String id) throws APIException {
return new SanitizedUsernamesResponse(httpUtils.urlRequestGET(HttpUtils.URL_BASE + "/User/GetSanitizedPlatformDisplayNames/" + id + "/").getAsJsonObject("Response"));
}

/**
* Get a BungieUser from a Steam ID
* NOT the same IDs used by Bungie to identify individual users
*/
public static BungieUser getMemberFromSteamID(String steamID) {
public static BungieUser getMemberFromSteamID(String steamID) throws APIException {
return getMemberFromPlatformID("SteamId", steamID);
}

/**
* Used to get a BungieUser from a specified platform ID
* Currently only works with Steam IDs (see getMemberFromSteamID())
*/
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) {
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) throws APIException {
JsonObject jsonObject = getHttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/GetMembershipFromHardLinkedCredential/" + platformName + "/" + platformID + "/").getAsJsonObject("Response");

return new BungieUser(jsonObject.get("membershipId").getAsString());
Expand All@@ -162,7 +161,7 @@ private static BungieUser getMemberFromPlatformID(String platformName, String pl
* <p>
* Requires OAuth
*/
public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
public static UserCredential[] getUserCredentials(BungieUser bungieUser) throws APIException {
List<UserCredential> list = new LinkedList<>();

for (JsonElement je : getHttpUtils().urlRequestGETOauth("https://www.bungie.net/Platform/User/GetCredentialTypesForTargetAccount/" + bungieUser.getID() + "/").getAsJsonArray("Response")) {
Expand All@@ -185,7 +184,7 @@ public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
/**
* Get a "UserCredential" from a BungieUser
*/
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) {
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) throws APIException {
for (UserCredential userCredential : getUserCredentials(bungieUser)) {
if (userCredential.getUserCredentialType() == type) {
return userCredential;
Expand All@@ -207,7 +206,7 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
* @param nameAndDiscrim A full name and discriminator such as "dec4234#9904"
* @return A user with the matching name and discriminator, null otherwise
*/
public static BungieUser getUserWithName(String nameAndDiscrim) {
public static BungieUser getUserWithName(String nameAndDiscrim) throws APIException {
try {
String[] split = nameAndDiscrim.split("#");
JsonObject jsonObject = new JsonObject();
Expand All@@ -229,7 +228,7 @@ public static BungieUser getUserWithName(String nameAndDiscrim) {
* BungieUser. While searching "Gladd" or "Datto" should return
* multiple.
*/
public static List<BungieUser> searchUsers(String name) {
public static List<BungieUser> searchUsers(String name) throws APIException {
List<BungieUser> users = new ArrayList<>();

JsonObject body = new JsonObject();
Expand DownExpand Up@@ -274,7 +273,7 @@ public static List<BungieUser> searchUsers(String name) {
* @param jsonArray
* @return
*/
private static BungieUser processListOfProfiles(JsonArray jsonArray) {
private static BungieUser processListOfProfiles(JsonArray jsonArray) throws APIException {
for (JsonElement jsonElement : jsonArray) {
JsonObject profile = jsonElement.getAsJsonObject();

Expand DownExpand Up@@ -325,7 +324,7 @@ private static BungieUser processListOfProfiles(JsonArray jsonArray) {
* Use searchUsers() instead
*/
@Deprecated
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
public static List<BungieUser> searchGlobalDisplayNames(String prefix) throws APIException {
prefix = StringUtils.httpEncode(prefix);

List<BungieUser> bungieUsers = new ArrayList<>();
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' 22 throwing by dec4234 · Pull Request #23 · dec4234/JavaDestinyAPI · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions pom.xml
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarentees of
~ any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
~ ownership of this software without the explicit permission of the author.
~ Copyright (c) 2024. dec4234
~ A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
~
~ GitHub -> https://github.com/dec4234/JavaDestinyAPI
~ Github -> https://github.com/dec4234/JavaDestinyAPI
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
Expand All@@ -18,7 +17,7 @@
<packaging>jar</packaging>

<name>JavaDestinyAPI</name>
<description>A Java wrapper for bungie.net platform api, allowing users to get data about the video games Destiny and Destiny 2</description>
<description>A Java wrapper for bungie.net platform API, allowing users to get data about the video games Destiny and Destiny 2</description>
<url>https://github.com/dec4234/JavaDestinyAPI</url>

<licenses>
Expand DownExpand Up@@ -51,7 +50,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
Expand All@@ -62,7 +61,7 @@
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
</dependency>
</dependencies>

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Base class for all exceptions generated when an issue occurs in the request pipeline to Bungie.
* This most common reason for this error would be when the API is offline, and all objects are misparsed.
*/
public abstract class APIException extends Exception {

public APIException() {

}

public APIException(String errorMessage) {
super(errorMessage);
}

public APIException(Exception e) {
super(e);
}
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Indicates that the request returned error code 5 (The API has been disabled by Bungie)
*/
public class APIOfflineException extends Exception {
public class APIOfflineException extends APIException {

public APIOfflineException(String returnMessage) {
super("The Bungie API returned this message: " + returnMessage);
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Self explanatory. The access token needs to be regenerated using the refresh token.
*/
public class AccessTokenExpiredException extends APIException{
}

This file was deleted.

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

public class ConnectionException extends APIException {

public ConnectionException(Exception exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* When a token is missing or wrong, or some other pre-condition was not met that was needed to execute a request.
* This is a generic error, check the associated error message for more information.
*/
public class InvalidConditionException extends APIException {

public InvalidConditionException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

import com.google.gson.JsonSyntaxException;

/**
* Malformed or non-json content found where JSON was expected. Usually at an API endpoint.
*/
public class JsonParsingError extends APIException {

public JsonParsingError(String message) {
super(message);
}

public JsonParsingError(JsonSyntaxException exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* You either have insufficient permission to attempt this OAuth action, or you forgot to authorize yourself.
* Alternatively, the access and/or refresh token has expired
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow}
*/
public class OAuthUnauthorizedException extends APIException {

public OAuthUnauthorizedException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* The name is self-expanatory. The refresh token normally used to generate a new access token has expired since it
* hasn't been refreshed in the past 90 days or it has been 1 year since the last oauth.
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow} to generate a new one.
*/
public class RefreshTokenExpiredException extends APIException {

}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.jdaSrc;
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/net/dec4234/javadestinyapi/material/DestinyAPI.java
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.material;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.dec4234.javadestinyapi.exceptions.APIException;
import net.dec4234.javadestinyapi.material.clan.Clan;
import net.dec4234.javadestinyapi.material.user.BungieUser;
import net.dec4234.javadestinyapi.material.user.DestinyPlatform;
import net.dec4234.javadestinyapi.material.user.UserCredential;
import net.dec4234.javadestinyapi.material.user.UserCredentialType;
import net.dec4234.javadestinyapi.responses.user.SanitizedUsernamesResponse;
Expand DownExpand Up@@ -132,23 +131,23 @@ public static BungieUser getUser(String id) {
return new BungieUser(id);
}

public static SanitizedUsernamesResponse getSanitizedUsernames(String id) {
public static SanitizedUsernamesResponse getSanitizedUsernames(String id) throws APIException {
return new SanitizedUsernamesResponse(httpUtils.urlRequestGET(HttpUtils.URL_BASE + "/User/GetSanitizedPlatformDisplayNames/" + id + "/").getAsJsonObject("Response"));
}

/**
* Get a BungieUser from a Steam ID
* NOT the same IDs used by Bungie to identify individual users
*/
public static BungieUser getMemberFromSteamID(String steamID) {
public static BungieUser getMemberFromSteamID(String steamID) throws APIException {
return getMemberFromPlatformID("SteamId", steamID);
}

/**
* Used to get a BungieUser from a specified platform ID
* Currently only works with Steam IDs (see getMemberFromSteamID())
*/
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) {
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) throws APIException {
JsonObject jsonObject = getHttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/GetMembershipFromHardLinkedCredential/" + platformName + "/" + platformID + "/").getAsJsonObject("Response");

return new BungieUser(jsonObject.get("membershipId").getAsString());
Expand All@@ -162,7 +161,7 @@ private static BungieUser getMemberFromPlatformID(String platformName, String pl
* <p>
* Requires OAuth
*/
public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
public static UserCredential[] getUserCredentials(BungieUser bungieUser) throws APIException {
List<UserCredential> list = new LinkedList<>();

for (JsonElement je : getHttpUtils().urlRequestGETOauth("https://www.bungie.net/Platform/User/GetCredentialTypesForTargetAccount/" + bungieUser.getID() + "/").getAsJsonArray("Response")) {
Expand All@@ -185,7 +184,7 @@ public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
/**
* Get a "UserCredential" from a BungieUser
*/
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) {
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) throws APIException {
for (UserCredential userCredential : getUserCredentials(bungieUser)) {
if (userCredential.getUserCredentialType() == type) {
return userCredential;
Expand All@@ -207,7 +206,7 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
* @param nameAndDiscrim A full name and discriminator such as "dec4234#9904"
* @return A user with the matching name and discriminator, null otherwise
*/
public static BungieUser getUserWithName(String nameAndDiscrim) {
public static BungieUser getUserWithName(String nameAndDiscrim) throws APIException {
try {
String[] split = nameAndDiscrim.split("#");
JsonObject jsonObject = new JsonObject();
Expand All@@ -229,7 +228,7 @@ public static BungieUser getUserWithName(String nameAndDiscrim) {
* BungieUser. While searching "Gladd" or "Datto" should return
* multiple.
*/
public static List<BungieUser> searchUsers(String name) {
public static List<BungieUser> searchUsers(String name) throws APIException {
List<BungieUser> users = new ArrayList<>();

JsonObject body = new JsonObject();
Expand DownExpand Up@@ -274,7 +273,7 @@ public static List<BungieUser> searchUsers(String name) {
* @param jsonArray
* @return
*/
private static BungieUser processListOfProfiles(JsonArray jsonArray) {
private static BungieUser processListOfProfiles(JsonArray jsonArray) throws APIException {
for (JsonElement jsonElement : jsonArray) {
JsonObject profile = jsonElement.getAsJsonObject();

Expand DownExpand Up@@ -325,7 +324,7 @@ private static BungieUser processListOfProfiles(JsonArray jsonArray) {
* Use searchUsers() instead
*/
@Deprecated
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
public static List<BungieUser> searchGlobalDisplayNames(String prefix) throws APIException {
prefix = StringUtils.httpEncode(prefix);

List<BungieUser> bungieUsers = new ArrayList<>();
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' 22 throwing by dec4234 · Pull Request #23 · dec4234/JavaDestinyAPI · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions pom.xml
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarentees of
~ any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
~ ownership of this software without the explicit permission of the author.
~ Copyright (c) 2024. dec4234
~ A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
~
~ GitHub -> https://github.com/dec4234/JavaDestinyAPI
~ Github -> https://github.com/dec4234/JavaDestinyAPI
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
Expand All@@ -18,7 +17,7 @@
<packaging>jar</packaging>

<name>JavaDestinyAPI</name>
<description>A Java wrapper for bungie.net platform api, allowing users to get data about the video games Destiny and Destiny 2</description>
<description>A Java wrapper for bungie.net platform API, allowing users to get data about the video games Destiny and Destiny 2</description>
<url>https://github.com/dec4234/JavaDestinyAPI</url>

<licenses>
Expand DownExpand Up@@ -51,7 +50,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
Expand All@@ -62,7 +61,7 @@
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
</dependency>
</dependencies>

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Base class for all exceptions generated when an issue occurs in the request pipeline to Bungie.
* This most common reason for this error would be when the API is offline, and all objects are misparsed.
*/
public abstract class APIException extends Exception {

public APIException() {

}

public APIException(String errorMessage) {
super(errorMessage);
}

public APIException(Exception e) {
super(e);
}
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Indicates that the request returned error code 5 (The API has been disabled by Bungie)
*/
public class APIOfflineException extends Exception {
public class APIOfflineException extends APIException {

public APIOfflineException(String returnMessage) {
super("The Bungie API returned this message: " + returnMessage);
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Self explanatory. The access token needs to be regenerated using the refresh token.
*/
public class AccessTokenExpiredException extends APIException{
}

This file was deleted.

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

public class ConnectionException extends APIException {

public ConnectionException(Exception exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* When a token is missing or wrong, or some other pre-condition was not met that was needed to execute a request.
* This is a generic error, check the associated error message for more information.
*/
public class InvalidConditionException extends APIException {

public InvalidConditionException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

import com.google.gson.JsonSyntaxException;

/**
* Malformed or non-json content found where JSON was expected. Usually at an API endpoint.
*/
public class JsonParsingError extends APIException {

public JsonParsingError(String message) {
super(message);
}

public JsonParsingError(JsonSyntaxException exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* You either have insufficient permission to attempt this OAuth action, or you forgot to authorize yourself.
* Alternatively, the access and/or refresh token has expired
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow}
*/
public class OAuthUnauthorizedException extends APIException {

public OAuthUnauthorizedException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* The name is self-expanatory. The refresh token normally used to generate a new access token has expired since it
* hasn't been refreshed in the past 90 days or it has been 1 year since the last oauth.
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow} to generate a new one.
*/
public class RefreshTokenExpiredException extends APIException {

}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.jdaSrc;
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/net/dec4234/javadestinyapi/material/DestinyAPI.java
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.material;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.dec4234.javadestinyapi.exceptions.APIException;
import net.dec4234.javadestinyapi.material.clan.Clan;
import net.dec4234.javadestinyapi.material.user.BungieUser;
import net.dec4234.javadestinyapi.material.user.DestinyPlatform;
import net.dec4234.javadestinyapi.material.user.UserCredential;
import net.dec4234.javadestinyapi.material.user.UserCredentialType;
import net.dec4234.javadestinyapi.responses.user.SanitizedUsernamesResponse;
Expand DownExpand Up@@ -132,23 +131,23 @@ public static BungieUser getUser(String id) {
return new BungieUser(id);
}

public static SanitizedUsernamesResponse getSanitizedUsernames(String id) {
public static SanitizedUsernamesResponse getSanitizedUsernames(String id) throws APIException {
return new SanitizedUsernamesResponse(httpUtils.urlRequestGET(HttpUtils.URL_BASE + "/User/GetSanitizedPlatformDisplayNames/" + id + "/").getAsJsonObject("Response"));
}

/**
* Get a BungieUser from a Steam ID
* NOT the same IDs used by Bungie to identify individual users
*/
public static BungieUser getMemberFromSteamID(String steamID) {
public static BungieUser getMemberFromSteamID(String steamID) throws APIException {
return getMemberFromPlatformID("SteamId", steamID);
}

/**
* Used to get a BungieUser from a specified platform ID
* Currently only works with Steam IDs (see getMemberFromSteamID())
*/
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) {
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) throws APIException {
JsonObject jsonObject = getHttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/GetMembershipFromHardLinkedCredential/" + platformName + "/" + platformID + "/").getAsJsonObject("Response");

return new BungieUser(jsonObject.get("membershipId").getAsString());
Expand All@@ -162,7 +161,7 @@ private static BungieUser getMemberFromPlatformID(String platformName, String pl
* <p>
* Requires OAuth
*/
public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
public static UserCredential[] getUserCredentials(BungieUser bungieUser) throws APIException {
List<UserCredential> list = new LinkedList<>();

for (JsonElement je : getHttpUtils().urlRequestGETOauth("https://www.bungie.net/Platform/User/GetCredentialTypesForTargetAccount/" + bungieUser.getID() + "/").getAsJsonArray("Response")) {
Expand All@@ -185,7 +184,7 @@ public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
/**
* Get a "UserCredential" from a BungieUser
*/
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) {
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) throws APIException {
for (UserCredential userCredential : getUserCredentials(bungieUser)) {
if (userCredential.getUserCredentialType() == type) {
return userCredential;
Expand All@@ -207,7 +206,7 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
* @param nameAndDiscrim A full name and discriminator such as "dec4234#9904"
* @return A user with the matching name and discriminator, null otherwise
*/
public static BungieUser getUserWithName(String nameAndDiscrim) {
public static BungieUser getUserWithName(String nameAndDiscrim) throws APIException {
try {
String[] split = nameAndDiscrim.split("#");
JsonObject jsonObject = new JsonObject();
Expand All@@ -229,7 +228,7 @@ public static BungieUser getUserWithName(String nameAndDiscrim) {
* BungieUser. While searching "Gladd" or "Datto" should return
* multiple.
*/
public static List<BungieUser> searchUsers(String name) {
public static List<BungieUser> searchUsers(String name) throws APIException {
List<BungieUser> users = new ArrayList<>();

JsonObject body = new JsonObject();
Expand DownExpand Up@@ -274,7 +273,7 @@ public static List<BungieUser> searchUsers(String name) {
* @param jsonArray
* @return
*/
private static BungieUser processListOfProfiles(JsonArray jsonArray) {
private static BungieUser processListOfProfiles(JsonArray jsonArray) throws APIException {
for (JsonElement jsonElement : jsonArray) {
JsonObject profile = jsonElement.getAsJsonObject();

Expand DownExpand Up@@ -325,7 +324,7 @@ private static BungieUser processListOfProfiles(JsonArray jsonArray) {
* Use searchUsers() instead
*/
@Deprecated
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
public static List<BungieUser> searchGlobalDisplayNames(String prefix) throws APIException {
prefix = StringUtils.httpEncode(prefix);

List<BungieUser> bungieUsers = new ArrayList<>();
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' 22 throwing by dec4234 · Pull Request #23 · dec4234/JavaDestinyAPI · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions pom.xml
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarentees of
~ any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
~ ownership of this software without the explicit permission of the author.
~ Copyright (c) 2024. dec4234
~ A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
~
~ GitHub -> https://github.com/dec4234/JavaDestinyAPI
~ Github -> https://github.com/dec4234/JavaDestinyAPI
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
Expand All@@ -18,7 +17,7 @@
<packaging>jar</packaging>

<name>JavaDestinyAPI</name>
<description>A Java wrapper for bungie.net platform api, allowing users to get data about the video games Destiny and Destiny 2</description>
<description>A Java wrapper for bungie.net platform API, allowing users to get data about the video games Destiny and Destiny 2</description>
<url>https://github.com/dec4234/JavaDestinyAPI</url>

<licenses>
Expand DownExpand Up@@ -51,7 +50,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
Expand All@@ -62,7 +61,7 @@
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
</dependency>
</dependencies>

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Base class for all exceptions generated when an issue occurs in the request pipeline to Bungie.
* This most common reason for this error would be when the API is offline, and all objects are misparsed.
*/
public abstract class APIException extends Exception {

public APIException() {

}

public APIException(String errorMessage) {
super(errorMessage);
}

public APIException(Exception e) {
super(e);
}
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Indicates that the request returned error code 5 (The API has been disabled by Bungie)
*/
public class APIOfflineException extends Exception {
public class APIOfflineException extends APIException {

public APIOfflineException(String returnMessage) {
super("The Bungie API returned this message: " + returnMessage);
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Self explanatory. The access token needs to be regenerated using the refresh token.
*/
public class AccessTokenExpiredException extends APIException{
}

This file was deleted.

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

public class ConnectionException extends APIException {

public ConnectionException(Exception exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* When a token is missing or wrong, or some other pre-condition was not met that was needed to execute a request.
* This is a generic error, check the associated error message for more information.
*/
public class InvalidConditionException extends APIException {

public InvalidConditionException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

import com.google.gson.JsonSyntaxException;

/**
* Malformed or non-json content found where JSON was expected. Usually at an API endpoint.
*/
public class JsonParsingError extends APIException {

public JsonParsingError(String message) {
super(message);
}

public JsonParsingError(JsonSyntaxException exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* You either have insufficient permission to attempt this OAuth action, or you forgot to authorize yourself.
* Alternatively, the access and/or refresh token has expired
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow}
*/
public class OAuthUnauthorizedException extends APIException {

public OAuthUnauthorizedException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* The name is self-expanatory. The refresh token normally used to generate a new access token has expired since it
* hasn't been refreshed in the past 90 days or it has been 1 year since the last oauth.
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow} to generate a new one.
*/
public class RefreshTokenExpiredException extends APIException {

}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.jdaSrc;
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/net/dec4234/javadestinyapi/material/DestinyAPI.java
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.material;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.dec4234.javadestinyapi.exceptions.APIException;
import net.dec4234.javadestinyapi.material.clan.Clan;
import net.dec4234.javadestinyapi.material.user.BungieUser;
import net.dec4234.javadestinyapi.material.user.DestinyPlatform;
import net.dec4234.javadestinyapi.material.user.UserCredential;
import net.dec4234.javadestinyapi.material.user.UserCredentialType;
import net.dec4234.javadestinyapi.responses.user.SanitizedUsernamesResponse;
Expand DownExpand Up@@ -132,23 +131,23 @@ public static BungieUser getUser(String id) {
return new BungieUser(id);
}

public static SanitizedUsernamesResponse getSanitizedUsernames(String id) {
public static SanitizedUsernamesResponse getSanitizedUsernames(String id) throws APIException {
return new SanitizedUsernamesResponse(httpUtils.urlRequestGET(HttpUtils.URL_BASE + "/User/GetSanitizedPlatformDisplayNames/" + id + "/").getAsJsonObject("Response"));
}

/**
* Get a BungieUser from a Steam ID
* NOT the same IDs used by Bungie to identify individual users
*/
public static BungieUser getMemberFromSteamID(String steamID) {
public static BungieUser getMemberFromSteamID(String steamID) throws APIException {
return getMemberFromPlatformID("SteamId", steamID);
}

/**
* Used to get a BungieUser from a specified platform ID
* Currently only works with Steam IDs (see getMemberFromSteamID())
*/
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) {
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) throws APIException {
JsonObject jsonObject = getHttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/GetMembershipFromHardLinkedCredential/" + platformName + "/" + platformID + "/").getAsJsonObject("Response");

return new BungieUser(jsonObject.get("membershipId").getAsString());
Expand All@@ -162,7 +161,7 @@ private static BungieUser getMemberFromPlatformID(String platformName, String pl
* <p>
* Requires OAuth
*/
public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
public static UserCredential[] getUserCredentials(BungieUser bungieUser) throws APIException {
List<UserCredential> list = new LinkedList<>();

for (JsonElement je : getHttpUtils().urlRequestGETOauth("https://www.bungie.net/Platform/User/GetCredentialTypesForTargetAccount/" + bungieUser.getID() + "/").getAsJsonArray("Response")) {
Expand All@@ -185,7 +184,7 @@ public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
/**
* Get a "UserCredential" from a BungieUser
*/
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) {
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) throws APIException {
for (UserCredential userCredential : getUserCredentials(bungieUser)) {
if (userCredential.getUserCredentialType() == type) {
return userCredential;
Expand All@@ -207,7 +206,7 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
* @param nameAndDiscrim A full name and discriminator such as "dec4234#9904"
* @return A user with the matching name and discriminator, null otherwise
*/
public static BungieUser getUserWithName(String nameAndDiscrim) {
public static BungieUser getUserWithName(String nameAndDiscrim) throws APIException {
try {
String[] split = nameAndDiscrim.split("#");
JsonObject jsonObject = new JsonObject();
Expand All@@ -229,7 +228,7 @@ public static BungieUser getUserWithName(String nameAndDiscrim) {
* BungieUser. While searching "Gladd" or "Datto" should return
* multiple.
*/
public static List<BungieUser> searchUsers(String name) {
public static List<BungieUser> searchUsers(String name) throws APIException {
List<BungieUser> users = new ArrayList<>();

JsonObject body = new JsonObject();
Expand DownExpand Up@@ -274,7 +273,7 @@ public static List<BungieUser> searchUsers(String name) {
* @param jsonArray
* @return
*/
private static BungieUser processListOfProfiles(JsonArray jsonArray) {
private static BungieUser processListOfProfiles(JsonArray jsonArray) throws APIException {
for (JsonElement jsonElement : jsonArray) {
JsonObject profile = jsonElement.getAsJsonObject();

Expand DownExpand Up@@ -325,7 +324,7 @@ private static BungieUser processListOfProfiles(JsonArray jsonArray) {
* Use searchUsers() instead
*/
@Deprecated
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
public static List<BungieUser> searchGlobalDisplayNames(String prefix) throws APIException {
prefix = StringUtils.httpEncode(prefix);

List<BungieUser> bungieUsers = new ArrayList<>();
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' 22 throwing by dec4234 · Pull Request #23 · dec4234/JavaDestinyAPI · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions pom.xml
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarentees of
~ any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
~ ownership of this software without the explicit permission of the author.
~ Copyright (c) 2024. dec4234
~ A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
~
~ GitHub -> https://github.com/dec4234/JavaDestinyAPI
~ Github -> https://github.com/dec4234/JavaDestinyAPI
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
Expand All@@ -18,7 +17,7 @@
<packaging>jar</packaging>

<name>JavaDestinyAPI</name>
<description>A Java wrapper for bungie.net platform api, allowing users to get data about the video games Destiny and Destiny 2</description>
<description>A Java wrapper for bungie.net platform API, allowing users to get data about the video games Destiny and Destiny 2</description>
<url>https://github.com/dec4234/JavaDestinyAPI</url>

<licenses>
Expand DownExpand Up@@ -51,7 +50,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
Expand All@@ -62,7 +61,7 @@
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
</dependency>
</dependencies>

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Base class for all exceptions generated when an issue occurs in the request pipeline to Bungie.
* This most common reason for this error would be when the API is offline, and all objects are misparsed.
*/
public abstract class APIException extends Exception {

public APIException() {

}

public APIException(String errorMessage) {
super(errorMessage);
}

public APIException(Exception e) {
super(e);
}
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Indicates that the request returned error code 5 (The API has been disabled by Bungie)
*/
public class APIOfflineException extends Exception {
public class APIOfflineException extends APIException {

public APIOfflineException(String returnMessage) {
super("The Bungie API returned this message: " + returnMessage);
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Self explanatory. The access token needs to be regenerated using the refresh token.
*/
public class AccessTokenExpiredException extends APIException{
}

This file was deleted.

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

public class ConnectionException extends APIException {

public ConnectionException(Exception exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* When a token is missing or wrong, or some other pre-condition was not met that was needed to execute a request.
* This is a generic error, check the associated error message for more information.
*/
public class InvalidConditionException extends APIException {

public InvalidConditionException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

import com.google.gson.JsonSyntaxException;

/**
* Malformed or non-json content found where JSON was expected. Usually at an API endpoint.
*/
public class JsonParsingError extends APIException {

public JsonParsingError(String message) {
super(message);
}

public JsonParsingError(JsonSyntaxException exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* You either have insufficient permission to attempt this OAuth action, or you forgot to authorize yourself.
* Alternatively, the access and/or refresh token has expired
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow}
*/
public class OAuthUnauthorizedException extends APIException {

public OAuthUnauthorizedException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* The name is self-expanatory. The refresh token normally used to generate a new access token has expired since it
* hasn't been refreshed in the past 90 days or it has been 1 year since the last oauth.
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow} to generate a new one.
*/
public class RefreshTokenExpiredException extends APIException {

}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.jdaSrc;
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/net/dec4234/javadestinyapi/material/DestinyAPI.java
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.material;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.dec4234.javadestinyapi.exceptions.APIException;
import net.dec4234.javadestinyapi.material.clan.Clan;
import net.dec4234.javadestinyapi.material.user.BungieUser;
import net.dec4234.javadestinyapi.material.user.DestinyPlatform;
import net.dec4234.javadestinyapi.material.user.UserCredential;
import net.dec4234.javadestinyapi.material.user.UserCredentialType;
import net.dec4234.javadestinyapi.responses.user.SanitizedUsernamesResponse;
Expand DownExpand Up@@ -132,23 +131,23 @@ public static BungieUser getUser(String id) {
return new BungieUser(id);
}

public static SanitizedUsernamesResponse getSanitizedUsernames(String id) {
public static SanitizedUsernamesResponse getSanitizedUsernames(String id) throws APIException {
return new SanitizedUsernamesResponse(httpUtils.urlRequestGET(HttpUtils.URL_BASE + "/User/GetSanitizedPlatformDisplayNames/" + id + "/").getAsJsonObject("Response"));
}

/**
* Get a BungieUser from a Steam ID
* NOT the same IDs used by Bungie to identify individual users
*/
public static BungieUser getMemberFromSteamID(String steamID) {
public static BungieUser getMemberFromSteamID(String steamID) throws APIException {
return getMemberFromPlatformID("SteamId", steamID);
}

/**
* Used to get a BungieUser from a specified platform ID
* Currently only works with Steam IDs (see getMemberFromSteamID())
*/
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) {
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) throws APIException {
JsonObject jsonObject = getHttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/GetMembershipFromHardLinkedCredential/" + platformName + "/" + platformID + "/").getAsJsonObject("Response");

return new BungieUser(jsonObject.get("membershipId").getAsString());
Expand All@@ -162,7 +161,7 @@ private static BungieUser getMemberFromPlatformID(String platformName, String pl
* <p>
* Requires OAuth
*/
public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
public static UserCredential[] getUserCredentials(BungieUser bungieUser) throws APIException {
List<UserCredential> list = new LinkedList<>();

for (JsonElement je : getHttpUtils().urlRequestGETOauth("https://www.bungie.net/Platform/User/GetCredentialTypesForTargetAccount/" + bungieUser.getID() + "/").getAsJsonArray("Response")) {
Expand All@@ -185,7 +184,7 @@ public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
/**
* Get a "UserCredential" from a BungieUser
*/
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) {
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) throws APIException {
for (UserCredential userCredential : getUserCredentials(bungieUser)) {
if (userCredential.getUserCredentialType() == type) {
return userCredential;
Expand All@@ -207,7 +206,7 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
* @param nameAndDiscrim A full name and discriminator such as "dec4234#9904"
* @return A user with the matching name and discriminator, null otherwise
*/
public static BungieUser getUserWithName(String nameAndDiscrim) {
public static BungieUser getUserWithName(String nameAndDiscrim) throws APIException {
try {
String[] split = nameAndDiscrim.split("#");
JsonObject jsonObject = new JsonObject();
Expand All@@ -229,7 +228,7 @@ public static BungieUser getUserWithName(String nameAndDiscrim) {
* BungieUser. While searching "Gladd" or "Datto" should return
* multiple.
*/
public static List<BungieUser> searchUsers(String name) {
public static List<BungieUser> searchUsers(String name) throws APIException {
List<BungieUser> users = new ArrayList<>();

JsonObject body = new JsonObject();
Expand DownExpand Up@@ -274,7 +273,7 @@ public static List<BungieUser> searchUsers(String name) {
* @param jsonArray
* @return
*/
private static BungieUser processListOfProfiles(JsonArray jsonArray) {
private static BungieUser processListOfProfiles(JsonArray jsonArray) throws APIException {
for (JsonElement jsonElement : jsonArray) {
JsonObject profile = jsonElement.getAsJsonObject();

Expand DownExpand Up@@ -325,7 +324,7 @@ private static BungieUser processListOfProfiles(JsonArray jsonArray) {
* Use searchUsers() instead
*/
@Deprecated
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
public static List<BungieUser> searchGlobalDisplayNames(String prefix) throws APIException {
prefix = StringUtils.httpEncode(prefix);

List<BungieUser> bungieUsers = new ArrayList<>();
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' 22 throwing by dec4234 · Pull Request #23 · dec4234/JavaDestinyAPI · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions pom.xml
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarentees of
~ any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
~ ownership of this software without the explicit permission of the author.
~ Copyright (c) 2024. dec4234
~ A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
~
~ GitHub -> https://github.com/dec4234/JavaDestinyAPI
~ Github -> https://github.com/dec4234/JavaDestinyAPI
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
Expand All@@ -18,7 +17,7 @@
<packaging>jar</packaging>

<name>JavaDestinyAPI</name>
<description>A Java wrapper for bungie.net platform api, allowing users to get data about the video games Destiny and Destiny 2</description>
<description>A Java wrapper for bungie.net platform API, allowing users to get data about the video games Destiny and Destiny 2</description>
<url>https://github.com/dec4234/JavaDestinyAPI</url>

<licenses>
Expand DownExpand Up@@ -51,7 +50,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
Expand All@@ -62,7 +61,7 @@
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
</dependency>
</dependencies>

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Base class for all exceptions generated when an issue occurs in the request pipeline to Bungie.
* This most common reason for this error would be when the API is offline, and all objects are misparsed.
*/
public abstract class APIException extends Exception {

public APIException() {

}

public APIException(String errorMessage) {
super(errorMessage);
}

public APIException(Exception e) {
super(e);
}
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Indicates that the request returned error code 5 (The API has been disabled by Bungie)
*/
public class APIOfflineException extends Exception {
public class APIOfflineException extends APIException {

public APIOfflineException(String returnMessage) {
super("The Bungie API returned this message: " + returnMessage);
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Self explanatory. The access token needs to be regenerated using the refresh token.
*/
public class AccessTokenExpiredException extends APIException{
}

This file was deleted.

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

public class ConnectionException extends APIException {

public ConnectionException(Exception exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* When a token is missing or wrong, or some other pre-condition was not met that was needed to execute a request.
* This is a generic error, check the associated error message for more information.
*/
public class InvalidConditionException extends APIException {

public InvalidConditionException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

import com.google.gson.JsonSyntaxException;

/**
* Malformed or non-json content found where JSON was expected. Usually at an API endpoint.
*/
public class JsonParsingError extends APIException {

public JsonParsingError(String message) {
super(message);
}

public JsonParsingError(JsonSyntaxException exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* You either have insufficient permission to attempt this OAuth action, or you forgot to authorize yourself.
* Alternatively, the access and/or refresh token has expired
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow}
*/
public class OAuthUnauthorizedException extends APIException {

public OAuthUnauthorizedException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* The name is self-expanatory. The refresh token normally used to generate a new access token has expired since it
* hasn't been refreshed in the past 90 days or it has been 1 year since the last oauth.
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow} to generate a new one.
*/
public class RefreshTokenExpiredException extends APIException {

}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.jdaSrc;
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/net/dec4234/javadestinyapi/material/DestinyAPI.java
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.material;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.dec4234.javadestinyapi.exceptions.APIException;
import net.dec4234.javadestinyapi.material.clan.Clan;
import net.dec4234.javadestinyapi.material.user.BungieUser;
import net.dec4234.javadestinyapi.material.user.DestinyPlatform;
import net.dec4234.javadestinyapi.material.user.UserCredential;
import net.dec4234.javadestinyapi.material.user.UserCredentialType;
import net.dec4234.javadestinyapi.responses.user.SanitizedUsernamesResponse;
Expand DownExpand Up@@ -132,23 +131,23 @@ public static BungieUser getUser(String id) {
return new BungieUser(id);
}

public static SanitizedUsernamesResponse getSanitizedUsernames(String id) {
public static SanitizedUsernamesResponse getSanitizedUsernames(String id) throws APIException {
return new SanitizedUsernamesResponse(httpUtils.urlRequestGET(HttpUtils.URL_BASE + "/User/GetSanitizedPlatformDisplayNames/" + id + "/").getAsJsonObject("Response"));
}

/**
* Get a BungieUser from a Steam ID
* NOT the same IDs used by Bungie to identify individual users
*/
public static BungieUser getMemberFromSteamID(String steamID) {
public static BungieUser getMemberFromSteamID(String steamID) throws APIException {
return getMemberFromPlatformID("SteamId", steamID);
}

/**
* Used to get a BungieUser from a specified platform ID
* Currently only works with Steam IDs (see getMemberFromSteamID())
*/
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) {
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) throws APIException {
JsonObject jsonObject = getHttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/GetMembershipFromHardLinkedCredential/" + platformName + "/" + platformID + "/").getAsJsonObject("Response");

return new BungieUser(jsonObject.get("membershipId").getAsString());
Expand All@@ -162,7 +161,7 @@ private static BungieUser getMemberFromPlatformID(String platformName, String pl
* <p>
* Requires OAuth
*/
public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
public static UserCredential[] getUserCredentials(BungieUser bungieUser) throws APIException {
List<UserCredential> list = new LinkedList<>();

for (JsonElement je : getHttpUtils().urlRequestGETOauth("https://www.bungie.net/Platform/User/GetCredentialTypesForTargetAccount/" + bungieUser.getID() + "/").getAsJsonArray("Response")) {
Expand All@@ -185,7 +184,7 @@ public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
/**
* Get a "UserCredential" from a BungieUser
*/
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) {
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) throws APIException {
for (UserCredential userCredential : getUserCredentials(bungieUser)) {
if (userCredential.getUserCredentialType() == type) {
return userCredential;
Expand All@@ -207,7 +206,7 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
* @param nameAndDiscrim A full name and discriminator such as "dec4234#9904"
* @return A user with the matching name and discriminator, null otherwise
*/
public static BungieUser getUserWithName(String nameAndDiscrim) {
public static BungieUser getUserWithName(String nameAndDiscrim) throws APIException {
try {
String[] split = nameAndDiscrim.split("#");
JsonObject jsonObject = new JsonObject();
Expand All@@ -229,7 +228,7 @@ public static BungieUser getUserWithName(String nameAndDiscrim) {
* BungieUser. While searching "Gladd" or "Datto" should return
* multiple.
*/
public static List<BungieUser> searchUsers(String name) {
public static List<BungieUser> searchUsers(String name) throws APIException {
List<BungieUser> users = new ArrayList<>();

JsonObject body = new JsonObject();
Expand DownExpand Up@@ -274,7 +273,7 @@ public static List<BungieUser> searchUsers(String name) {
* @param jsonArray
* @return
*/
private static BungieUser processListOfProfiles(JsonArray jsonArray) {
private static BungieUser processListOfProfiles(JsonArray jsonArray) throws APIException {
for (JsonElement jsonElement : jsonArray) {
JsonObject profile = jsonElement.getAsJsonObject();

Expand DownExpand Up@@ -325,7 +324,7 @@ private static BungieUser processListOfProfiles(JsonArray jsonArray) {
* Use searchUsers() instead
*/
@Deprecated
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
public static List<BungieUser> searchGlobalDisplayNames(String prefix) throws APIException {
prefix = StringUtils.httpEncode(prefix);

List<BungieUser> bungieUsers = new ArrayList<>();
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); 22 throwing by dec4234 · Pull Request #23 · dec4234/JavaDestinyAPI · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions pom.xml
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarentees of
~ any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
~ ownership of this software without the explicit permission of the author.
~ Copyright (c) 2024. dec4234
~ A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
~
~ GitHub -> https://github.com/dec4234/JavaDestinyAPI
~ Github -> https://github.com/dec4234/JavaDestinyAPI
-->

<project xmlns="http://maven.apache.org/POM/4.0.0"
Expand All@@ -18,7 +17,7 @@
<packaging>jar</packaging>

<name>JavaDestinyAPI</name>
<description>A Java wrapper for bungie.net platform api, allowing users to get data about the video games Destiny and Destiny 2</description>
<description>A Java wrapper for bungie.net platform API, allowing users to get data about the video games Destiny and Destiny 2</description>
<url>https://github.com/dec4234/JavaDestinyAPI</url>

<licenses>
Expand DownExpand Up@@ -51,7 +50,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
Expand All@@ -62,7 +61,7 @@
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
</dependency>
</dependencies>

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Base class for all exceptions generated when an issue occurs in the request pipeline to Bungie.
* This most common reason for this error would be when the API is offline, and all objects are misparsed.
*/
public abstract class APIException extends Exception {

public APIException() {

}

public APIException(String errorMessage) {
super(errorMessage);
}

public APIException(Exception e) {
super(e);
}
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Indicates that the request returned error code 5 (The API has been disabled by Bungie)
*/
public class APIOfflineException extends Exception {
public class APIOfflineException extends APIException {

public APIOfflineException(String returnMessage) {
super("The Bungie API returned this message: " + returnMessage);
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* Self explanatory. The access token needs to be regenerated using the refresh token.
*/
public class AccessTokenExpiredException extends APIException{
}

This file was deleted.

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

public class ConnectionException extends APIException {

public ConnectionException(Exception exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* When a token is missing or wrong, or some other pre-condition was not met that was needed to execute a request.
* This is a generic error, check the associated error message for more information.
*/
public class InvalidConditionException extends APIException {

public InvalidConditionException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

import com.google.gson.JsonSyntaxException;

/**
* Malformed or non-json content found where JSON was expected. Usually at an API endpoint.
*/
public class JsonParsingError extends APIException {

public JsonParsingError(String message) {
super(message);
}

public JsonParsingError(JsonSyntaxException exception) {
super(exception);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* You either have insufficient permission to attempt this OAuth action, or you forgot to authorize yourself.
* Alternatively, the access and/or refresh token has expired
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow}
*/
public class OAuthUnauthorizedException extends APIException {

public OAuthUnauthorizedException(String message) {
super(message);
}
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
/*
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.exceptions;

/**
* The name is self-expanatory. The refresh token normally used to generate a new access token has expired since it
* hasn't been refreshed in the past 90 days or it has been 1 year since the last oauth.
* See {@link net.dec4234.javadestinyapi.utils.framework.OAuthFlow} to generate a new one.
*/
public class RefreshTokenExpiredException extends APIException {

}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.jdaSrc;
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/net/dec4234/javadestinyapi/material/DestinyAPI.java
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
/*
* Copyright (c) dec4234 2021. Access is granted, without any express warranties or guarantees of
* any kind, to all wishing to use this software for their benefit. No one may specifically claim credit, or
* ownership of this software without the explicit permission of the author.
* Copyright (c) 2024. dec4234
* A standard open MIT license applies. Modififcation and usage permitted with credit. No warranties or express guarentees are given in any way.
*
* GitHub -> https://github.com/dec4234/JavaDestinyAPI
* Github -> https://github.com/dec4234/JavaDestinyAPI
*/

package net.dec4234.javadestinyapi.material;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.dec4234.javadestinyapi.exceptions.APIException;
import net.dec4234.javadestinyapi.material.clan.Clan;
import net.dec4234.javadestinyapi.material.user.BungieUser;
import net.dec4234.javadestinyapi.material.user.DestinyPlatform;
import net.dec4234.javadestinyapi.material.user.UserCredential;
import net.dec4234.javadestinyapi.material.user.UserCredentialType;
import net.dec4234.javadestinyapi.responses.user.SanitizedUsernamesResponse;
Expand DownExpand Up@@ -132,23 +131,23 @@ public static BungieUser getUser(String id) {
return new BungieUser(id);
}

public static SanitizedUsernamesResponse getSanitizedUsernames(String id) {
public static SanitizedUsernamesResponse getSanitizedUsernames(String id) throws APIException {
return new SanitizedUsernamesResponse(httpUtils.urlRequestGET(HttpUtils.URL_BASE + "/User/GetSanitizedPlatformDisplayNames/" + id + "/").getAsJsonObject("Response"));
}

/**
* Get a BungieUser from a Steam ID
* NOT the same IDs used by Bungie to identify individual users
*/
public static BungieUser getMemberFromSteamID(String steamID) {
public static BungieUser getMemberFromSteamID(String steamID) throws APIException {
return getMemberFromPlatformID("SteamId", steamID);
}

/**
* Used to get a BungieUser from a specified platform ID
* Currently only works with Steam IDs (see getMemberFromSteamID())
*/
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) {
private static BungieUser getMemberFromPlatformID(String platformName, String platformID) throws APIException {
JsonObject jsonObject = getHttpUtils().urlRequestGET("https://www.bungie.net/Platform/User/GetMembershipFromHardLinkedCredential/" + platformName + "/" + platformID + "/").getAsJsonObject("Response");

return new BungieUser(jsonObject.get("membershipId").getAsString());
Expand All@@ -162,7 +161,7 @@ private static BungieUser getMemberFromPlatformID(String platformName, String pl
* <p>
* Requires OAuth
*/
public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
public static UserCredential[] getUserCredentials(BungieUser bungieUser) throws APIException {
List<UserCredential> list = new LinkedList<>();

for (JsonElement je : getHttpUtils().urlRequestGETOauth("https://www.bungie.net/Platform/User/GetCredentialTypesForTargetAccount/" + bungieUser.getID() + "/").getAsJsonArray("Response")) {
Expand All@@ -185,7 +184,7 @@ public static UserCredential[] getUserCredentials(BungieUser bungieUser) {
/**
* Get a "UserCredential" from a BungieUser
*/
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) {
public static UserCredential getUserCredential(UserCredentialType type, BungieUser bungieUser) throws APIException {
for (UserCredential userCredential : getUserCredentials(bungieUser)) {
if (userCredential.getUserCredentialType() == type) {
return userCredential;
Expand All@@ -207,7 +206,7 @@ public static UserCredential getUserCredential(UserCredentialType type, BungieUs
* @param nameAndDiscrim A full name and discriminator such as "dec4234#9904"
* @return A user with the matching name and discriminator, null otherwise
*/
public static BungieUser getUserWithName(String nameAndDiscrim) {
public static BungieUser getUserWithName(String nameAndDiscrim) throws APIException {
try {
String[] split = nameAndDiscrim.split("#");
JsonObject jsonObject = new JsonObject();
Expand All@@ -229,7 +228,7 @@ public static BungieUser getUserWithName(String nameAndDiscrim) {
* BungieUser. While searching "Gladd" or "Datto" should return
* multiple.
*/
public static List<BungieUser> searchUsers(String name) {
public static List<BungieUser> searchUsers(String name) throws APIException {
List<BungieUser> users = new ArrayList<>();

JsonObject body = new JsonObject();
Expand DownExpand Up@@ -274,7 +273,7 @@ public static List<BungieUser> searchUsers(String name) {
* @param jsonArray
* @return
*/
private static BungieUser processListOfProfiles(JsonArray jsonArray) {
private static BungieUser processListOfProfiles(JsonArray jsonArray) throws APIException {
for (JsonElement jsonElement : jsonArray) {
JsonObject profile = jsonElement.getAsJsonObject();

Expand DownExpand Up@@ -325,7 +324,7 @@ private static BungieUser processListOfProfiles(JsonArray jsonArray) {
* Use searchUsers() instead
*/
@Deprecated
public static List<BungieUser> searchGlobalDisplayNames(String prefix) {
public static List<BungieUser> searchGlobalDisplayNames(String prefix) throws APIException {
prefix = StringUtils.httpEncode(prefix);

List<BungieUser> bungieUsers = new ArrayList<>();
Expand Down
Loading