All Downloads are FREE. Search and download functionalities are using the official Maven repository.

android.net.Uri.kt Maven / Gradle / Ivy

Go to download

The Firebase Java SDK is a pure java port of the Firebase Android SDK to run in clientside java environments such as the desktop.

The newest version!
package android.net

import java.net.URI
import java.util.Collections

class Uri(private val uri: URI) {

    companion object {
        @JvmStatic
        fun parse(uriString: String) = Uri(URI.create(uriString))
    }

    val scheme get() = uri.scheme
    val port get() = uri.port
    val host get() = uri.host

    fun getQueryParameterNames(): Set {
        val query: String = uri.query ?: return emptySet()
        val names: MutableSet = LinkedHashSet()
        var start = 0
        do {
            val next = query.indexOf('&', start)
            val end = if ((next == -1)) query.length else next
            var separator = query.indexOf('=', start)
            if (separator > end || separator == -1) {
                separator = end
            }
            val name = query.substring(start, separator)
            names.add(name)
            // Move start to end of name.
            start = end + 1
        } while (start < query.length)
        return Collections.unmodifiableSet(names)
    }

    fun getQueryParameter(key: String?): String? {
        if (key == null) {
            throw NullPointerException("key")
        }
        val query: String = uri.query ?: return null
        val length = query.length
        var start = 0
        do {
            val nextAmpersand = query.indexOf('&', start)
            val end = if (nextAmpersand != -1) nextAmpersand else length
            var separator = query.indexOf('=', start)
            if (separator > end || separator == -1) {
                separator = end
            }
            if (separator - start == key.length &&
                query.regionMatches(start, key, 0, key.length)
            ) {
                if (separator == end) {
                    return ""
                } else {
                    return query.substring(separator + 1, end)
                }
            }
            // Move start to end of name.
            if (nextAmpersand != -1) {
                start = nextAmpersand + 1
            } else {
                break
            }
        } while (true)
        return null
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy