```suspend fun read(): PlayerDatabase { re...
# ktor
b
Copy code
suspend fun read(): PlayerDatabase {
        return coroutineScope {
            HttpClient(CIO).use { client ->
                competitions.map {
                    async(client.dispatcher) {
                        client.call(createUrl(it)).response.readBytes().toString(Charsets.UTF_8)
                    }
                }.map { responseAsString -> responseAsString.await() }
                        .flatMap { responseAsString -> getLines(responseAsString) }
                        .filter { line -> isRankingLine(line) }
                        .flatMap { line -> getPlayers(line) }
                        .associateBy { player -> player.licenseNumber }
            }
        }
    }