diff --git a/detekt-baselines/metadata-extractor.xml b/detekt-baselines/metadata-extractor.xml index 97c0b7d7..05308663 100644 --- a/detekt-baselines/metadata-extractor.xml +++ b/detekt-baselines/metadata-extractor.xml @@ -1,7 +1,5 @@ - - ReturnCount:MetadataExtractor.kt$MetadataExtractor$suspend fun getExtractedMetadata(url: String): LinkMetadata - + diff --git a/metadata-extractor/src/main/kotlin/dev/msfjarvis/claw/metadata/MetadataExtractor.kt b/metadata-extractor/src/main/kotlin/dev/msfjarvis/claw/metadata/MetadataExtractor.kt index ceeb0346..7199d406 100644 --- a/metadata-extractor/src/main/kotlin/dev/msfjarvis/claw/metadata/MetadataExtractor.kt +++ b/metadata-extractor/src/main/kotlin/dev/msfjarvis/claw/metadata/MetadataExtractor.kt @@ -18,22 +18,25 @@ constructor( ) { suspend fun getExtractedMetadata(url: String): LinkMetadata { - val parsedUrl = url.toHttpUrlOrNull() ?: return makeDefault(url) - if (!parsedUrl.isHttps) return makeDefault(url) - val request = Request.Builder().url(parsedUrl).build() - val htmlContent = - okHttpClient.newCall(request).execute().use { response -> - val body = response.body ?: return makeDefault(url) - body.string() - } - val extractedMetadata = crux.extractFrom(parsedUrl, Jsoup.parse(htmlContent, url)) - val faviconUrl = extractedMetadata.urls[FAVICON_URL].toString() - val readingTime = extractedMetadata[DURATION_MS] - return LinkMetadata( - url = url, - faviconUrl = faviconUrl, - readingTime = readingTime, - ) + return run { + val parsedUrl = url.toHttpUrlOrNull() ?: return@run null + if (!parsedUrl.isHttps) return@run null + val request = Request.Builder().url(parsedUrl).build() + val htmlContent = + okHttpClient.newCall(request).execute().use { response -> + val body = response.body ?: return@run null + body.string() + } + val extractedMetadata = crux.extractFrom(parsedUrl, Jsoup.parse(htmlContent, url)) + val faviconUrl = extractedMetadata.urls[FAVICON_URL].toString() + val readingTime = extractedMetadata[DURATION_MS] + LinkMetadata( + url = url, + faviconUrl = faviconUrl, + readingTime = readingTime, + ) + } + ?: makeDefault(url) } private fun makeDefault(url: String) =