package com.fireworksdk.bridge.utils import android.net.Uri object FWUrlUtils { /** * Get parameters in URL * * @param urlStr url * @param key key * @return string * e.g. queryParamString("https://www.example.com?a=1&c=2", "a") will return "1" * e.g. queryParamString("https://www.example.com#a=1&c=2", "a") will return "1" */ fun queryParamString(urlStr: String?, key: String?): String? { if (urlStr.isNullOrBlank() || key.isNullOrBlank()) { return null } return if (urlStr.contains("#")) { queryHashParamString(urlStr, key) } else { queryBrowserParamString(urlStr, key) } } /** * Get browser parameters in URL * * @param urlStr url * @param key key * @return string * e.g. queryParamString("https://www.example.com?a=1&c=2", "a") will return "1" */ private fun queryBrowserParamString(urlStr: String?, key: String?): String? { if (urlStr.isNullOrBlank() || key.isNullOrBlank()) { return null } val uri = Uri.parse(urlStr) return uri?.getQueryParameter(key) } /** * Get hash parameters in URL * * @param urlStr url * @param key key * @return string * e.g. queryParamString("https://www.example.com#a=1&c=2", "a") will return "1" */ private fun queryHashParamString(urlStr: String?, key: String?): String? { if (urlStr.isNullOrBlank() || key.isNullOrBlank()) { return null } val urlParts = urlStr.split("#").filter(String::isNotEmpty) if (urlParts.size < 2) { return null } val query = urlParts[1] val queryParts = query.split("&") for (queryPart in queryParts) { val paramParts = queryPart.split("=") if (paramParts[0] == key) return paramParts[1] } return null } }