From ab67180d1986ce7c2213f482f525391a696a1bdc Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 11 Oct 2019 00:10:19 +0600 Subject: [PATCH] now scope in SauceNaoAPI can be passed via constructor --- .../insanusmokrassar/SauceNaoAPI/Launcher.kt | 20 +++++++------------ .../SauceNaoAPI/SauceNaoAPI.kt | 7 ++++--- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/Launcher.kt b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/Launcher.kt index 10f3c99..0feab82 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/Launcher.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/Launcher.kt @@ -3,20 +3,14 @@ package com.github.insanusmokrassar.SauceNaoAPI import kotlinx.coroutines.* fun main(vararg args: String) { - val key = args.first() - val api = SauceNaoAPI(key) - - val launch = GlobalScope.launch { - api.use { - it.request( - args[1] - ).also { - println(it) - } - } - } + val (key, requestUrl) = args runBlocking { - launch.join() + val api = SauceNaoAPI(key, scope = GlobalScope) + api.use { + println( + it.request(requestUrl) + ) + } } } diff --git a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/SauceNaoAPI.kt b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/SauceNaoAPI.kt index 95ea7d7..eba233a 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/SauceNaoAPI.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/SauceNaoAPI/SauceNaoAPI.kt @@ -32,7 +32,8 @@ data class SauceNaoAPI( private val apiToken: String, private val outputType: OutputType = JsonOutputType, private val client: HttpClient = HttpClient(OkHttp), - private val searchUrl: String = SEARCH_URL + private val searchUrl: String = SEARCH_URL, + private val scope: CoroutineScope = CoroutineScope(Dispatchers.Default) ) : Closeable { private val logger = Logger.getLogger("SauceNaoAPI") @@ -40,7 +41,7 @@ data class SauceNaoAPI( private val requestsSendTimes = mutableListOf() init { - CoroutineScope(Dispatchers.Default).launch { + scope.launch { for ((callback, requestBuilder) in requestsChannel) { try { val answer = makeRequest(requestBuilder) @@ -191,7 +192,7 @@ data class SauceNaoAPI( override fun close() { requestsChannel.close() - requestsSendTimes.clear() client.close() + requestsSendTimes.clear() } } \ No newline at end of file