#kotlinDevChallenge – 19


Create a Kotlin function that takes a URL string as input and extracts various components from it, such as the protocol, domain, path, and query parameters.

Task Description:

  1. Implement a function named extractUrlComponents that accepts a URL string.
  2. The function should return a data class UrlComponents containing the extracted components: protocol, domain, path, and a map of query parameters.
  3. Handle different URL formats and edge cases, such as URLs without certain components (e.g., missing query parameters).

Test cases

 * Test Cases:
 * - extractUrlComponents("http://www.example.com/test/path?query=123&item=value")
 *   should return UrlComponents(protocol="http", domain="www.example.com", path="/test/path", queryParams={"query"="123", "item"="value"})
 * - extractUrlComponents("https://sub.example.com/path?param=value")
 *   should return UrlComponents(protocol="https", domain="sub.example.com", path="/path", queryParams={"param"="value"})
 * - extractUrlComponents("https://www.example.com/path?name=&age=30")
 *   should return UrlComponents(protocol="https", domain="www.example.com", path="/path", queryParams={"name"="", "age"="30"})
 * - extractUrlComponents("http://www.example.com/path/to/resource?param1=value1&param2=value2")
 *   should return UrlComponents(protocol="http", domain="www.example.com", path="/path/to/resource", queryParams={"param1"="value1", "param2"="value2"})
  1. Fill in the code.
  2. You can copy the code into IntelliJ/Android Studio, but it shouldn’t be necessary.
  3. Click “run” – the green triangle. The code will compile and several tests will be run.
  4. In the logs, you will see “try again” if the solution is incorrect, or “success” and a special code.
  5. Provide this code in the form below along with your email and click “send”.
data class UrlComponents(val protocol: String, val domain: String, val path: String, val queryParams: Map<String, String>)

Join The Android Architect cohort #2

6 weeks cohort course on Architecture and Mobile Devops

✅ Mentor + peer homework review

Learn from Kotlin GDE, Jarosław Michalik: Draw on the expertise of a seasoned Android professional.

high-level design guide for Android Architects

Wow finally something straightforward” ~ Marcin, Senior Android Engineer

  • high-level design overview
  • explanatory video
  • you were probably looking for it for a long time

Read more:

  • #kotlinDevChallenge 2023 summary

    #kotlinDevChallenge 2023 summary

    The KotlinDevChallenge was not just a competition, but a journey of learning, growth, and community engagement. Every participant in this challenge is a winner…

  • #kotlinDevChallenge – 24

    #kotlinDevChallenge – 24

    What do you love most about Kotlin? Productivity increase? Idioms? Or that it isn’t Java? Maybe something else! Share it. It can be short.…

  • #kotlinDevChallenge – 23

    #kotlinDevChallenge – 23

    Challenge checking your generics knowledge 🙂 No long description is necessary. You can select more than one answer. Good luck!