From 39de35e09424c573670d4c56742c17a3bdbe8108 Mon Sep 17 00:00:00 2001 From: YuutaW <17158086+Trumeet@users.noreply.github.com> Date: Thu, 28 Feb 2019 19:50:55 -0800 Subject: feat(app): implement Google Play App Licensing Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com> --- .../moe/yuuta/gplicense/util/URIQueryDecoder.java | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 app/src/main/java/moe/yuuta/gplicense/util/URIQueryDecoder.java (limited to 'app/src/main/java/moe/yuuta/gplicense/util/URIQueryDecoder.java') diff --git a/app/src/main/java/moe/yuuta/gplicense/util/URIQueryDecoder.java b/app/src/main/java/moe/yuuta/gplicense/util/URIQueryDecoder.java new file mode 100644 index 0000000..273e85f --- /dev/null +++ b/app/src/main/java/moe/yuuta/gplicense/util/URIQueryDecoder.java @@ -0,0 +1,42 @@ +package moe.yuuta.gplicense.util; + +import com.elvishew.xlog.XLog; + +import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.net.URLDecoder; +import java.util.Map; +import java.util.Scanner; + +public class URIQueryDecoder { + /** + * Decodes the query portion of the passed-in URI. + * + * @param encodedURI the URI containing the query to decode + * @param results a map containing all query parameters. Query parameters that do not have a + * value will map to a null string + */ + static public void DecodeQuery(URI encodedURI, Map results) { + Scanner scanner = new Scanner(encodedURI.getRawQuery()); + scanner.useDelimiter("&"); + try { + while (scanner.hasNext()) { + String param = scanner.next(); + String[] valuePair = param.split("="); + String name, value; + if (valuePair.length == 1) { + value = null; + } else if (valuePair.length == 2) { + value = URLDecoder.decode(valuePair[1], "UTF-8"); + } else { + throw new IllegalArgumentException("query parameter invalid"); + } + name = URLDecoder.decode(valuePair[0], "UTF-8"); + results.put(name, value); + } + } catch (UnsupportedEncodingException e) { + // This should never happen. + XLog.e("UQD", "UTF-8 Not Recognized as a charset. Device configuration Error."); + } + } +} -- cgit v1.2.3