use of net.dv8tion.jda.internal.utils.Checks in project JDA by DV8FromTheWorld.
the class OptionData method fromData.
/**
* Parses the provided serialization back into an OptionData instance.
* <br>This is the reverse function for {@link #toData()}.
*
* @param json
* The serialized {@link DataObject} representing the option
*
* @throws net.dv8tion.jda.api.exceptions.ParsingException
* If the serialized object is missing required fields
* @throws IllegalArgumentException
* If any of the values are failing the respective checks such as length
*
* @return The parsed OptionData instance, which can be further configured through setters
*/
@Nonnull
public static OptionData fromData(@Nonnull DataObject json) {
String name = json.getString("name");
String description = json.getString("description");
OptionType type = OptionType.fromKey(json.getInt("type"));
OptionData option = new OptionData(type, name, description);
option.setRequired(json.getBoolean("required"));
option.setAutoComplete(json.getBoolean("autocomplete"));
if (type == OptionType.INTEGER || type == OptionType.NUMBER) {
if (!json.isNull("min_value")) {
if (json.isType("min_value", DataType.INT))
option.setMinValue(json.getLong("min_value"));
else if (json.isType("min_value", DataType.FLOAT))
option.setMinValue(json.getDouble("min_value"));
}
if (!json.isNull("max_value")) {
if (json.isType("max_value", DataType.INT))
option.setMaxValue(json.getLong("max_value"));
else if (json.isType("max_value", DataType.FLOAT))
option.setMaxValue(json.getDouble("max_value"));
}
}
if (type == OptionType.CHANNEL) {
option.setChannelTypes(json.optArray("channel_types").map(it -> it.stream(DataArray::getInt).map(ChannelType::fromId).collect(Collectors.toSet())).orElse(Collections.emptySet()));
}
json.optArray("choices").ifPresent(choices1 -> choices1.stream(DataArray::getObject).forEach(o -> {
if (o.isType("value", DataType.FLOAT))
option.addChoice(o.getString("name"), o.getDouble("value"));
else if (o.isType("value", DataType.INT))
option.addChoice(o.getString("name"), o.getLong("value"));
else
option.addChoice(o.getString("name"), o.get("value").toString());
}));
return option;
}
Aggregations