From 3425e0f1fca8f03bcac50a141f23822c75aa0cf5 Mon Sep 17 00:00:00 2001 From: KingRainbow44 Date: Fri, 13 May 2022 11:38:54 -0400 Subject: [PATCH] Add JSON-related methods to `Utils.java` --- .../java/emu/grasscutter/utils/Utils.java | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/src/main/java/emu/grasscutter/utils/Utils.java b/src/main/java/emu/grasscutter/utils/Utils.java index 4af62bfb4..1fe026bd8 100644 --- a/src/main/java/emu/grasscutter/utils/Utils.java +++ b/src/main/java/emu/grasscutter/utils/Utils.java @@ -6,10 +6,7 @@ import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.time.*; import java.time.temporal.TemporalAdjusters; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; -import java.util.Locale; +import java.util.*; import emu.grasscutter.Grasscutter; import io.netty.buffer.ByteBuf; @@ -308,10 +305,42 @@ public final class Utils { } /** - * get language code from Locale + * Gets the language code from a given locale. + * @param locale A locale. + * @return A string in the format of 'XX-XX'. */ public static String getLanguageCode(Locale locale) { return String.format("%s-%s", locale.getLanguage(), locale.getCountry()); } + /** + * Base64 encodes a given byte array. + * @param toEncode An array of bytes. + * @return A base64 encoded string. + */ + public static String base64Encode(byte[] toEncode) { + return Base64.getEncoder().encodeToString(toEncode); + } + + /** + * Base64 decodes a given string. + * @param toDecode A base64 encoded string. + * @return An array of bytes. + */ + public static byte[] base64Decode(String toDecode) { + return Base64.getDecoder().decode(toDecode); + } + + /** + * Safely JSON decodes a given string. + * @param jsonData The JSON-encoded data. + * @return JSON decoded data, or null if an exception occurred. + */ + public static T jsonDecode(String jsonData, Class classType) { + try { + return Grasscutter.getGsonFactory().fromJson(jsonData, classType); + } catch (Exception ignored) { + return null; + } + } }