# HG changeset patch # User Da Risk # Date 1743711064 14400 # Node ID b6b62004b1e748229d2e887843d54af8c7b63b90 # Parent 19cf2e8a06278e234de6fbb03a5568c20edb004d core: extract LicenseeParser diff -r 19cf2e8a0627 -r b6b62004b1e7 core/build.gradle.kts --- a/core/build.gradle.kts Thu Apr 03 16:08:10 2025 -0400 +++ b/core/build.gradle.kts Thu Apr 03 16:11:04 2025 -0400 @@ -25,6 +25,7 @@ id("com.android.library") kotlin("multiplatform") id("com.geekorum.build.source-license-checker") + alias(libs.plugins.org.jetbrains.kotlinx.serialization) `maven-publish` } diff -r 19cf2e8a0627 -r b6b62004b1e7 core/src/commonMain/kotlin/licensee/LicenseeLicenseInfoRepository.kt --- a/core/src/commonMain/kotlin/licensee/LicenseeLicenseInfoRepository.kt Thu Apr 03 16:08:10 2025 -0400 +++ b/core/src/commonMain/kotlin/licensee/LicenseeLicenseInfoRepository.kt Thu Apr 03 16:11:04 2025 -0400 @@ -24,10 +24,7 @@ import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.Json import okio.Source -import okio.buffer class LicenseeLicenseInfoRepository( private val produceInput: suspend () -> Source, @@ -62,60 +59,3 @@ } } - -private class LicenseeParser( - input: Source -): AutoCloseable { - private val buffered = input.buffer() - - fun readLicensee(): Map { - val json = Json { - ignoreUnknownKeys = true - } - val items: List = json.decodeFromString(buffered.readUtf8()) - - return items.associate { - val name = it.name ?: "${it.groupId}:${it.artifactId}" - val license = it.spdxLicenses.firstNotNullOfOrNull { - "${it.name}\n\n${it.url}" - } ?: it.unknownLicenses.firstNotNullOf { - "${it.name}\n\n${it.url}" - } - name to license - } - } - - override fun close() { - buffered.close() - } -} - - -@Serializable -private data class LicenseItem( - val groupId: String, - val artifactId: String, - val version: String, - val spdxLicenses: List = emptyList(), - val unknownLicenses: List = emptyList(), - val name: String? = null, - val scm: Scm? = null, -) - -@Serializable -private data class SpdxLicense( - val identifier: String, - val name: String, - val url: String, -) - -@Serializable -private data class UnknownLicense( - val name: String, - val url: String -) - -@Serializable -private data class Scm( - val url: String, -) \ No newline at end of file diff -r 19cf2e8a0627 -r b6b62004b1e7 core/src/commonMain/kotlin/licensee/LicenseeParser.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/src/commonMain/kotlin/licensee/LicenseeParser.kt Thu Apr 03 16:11:04 2025 -0400 @@ -0,0 +1,84 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.core.licensee + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import okio.Source +import okio.buffer + +class LicenseeParser( + input: Source +): AutoCloseable { + private val buffered = input.buffer() + + fun readLicensee(): Map { + val json = Json { + ignoreUnknownKeys = true + } + val items: List = json.decodeFromString(buffered.readUtf8()) + + return items.associate { + val name = it.name ?: "${it.groupId}:${it.artifactId}" + val license = it.spdxLicenses.firstNotNullOfOrNull { + "${it.name}\n\n${it.url}" + } ?: it.unknownLicenses.firstNotNullOf { + "${it.name}\n\n${it.url}" + } + name to license + } + } + + override fun close() { + buffered.close() + } +} + + +@Serializable +private data class LicenseItem( + val groupId: String, + val artifactId: String, + val version: String, + val spdxLicenses: List = emptyList(), + val unknownLicenses: List = emptyList(), + val name: String? = null, + val scm: Scm? = null, +) + +@Serializable +private data class SpdxLicense( + val identifier: String, + val name: String, + val url: String, +) + +@Serializable +private data class UnknownLicense( + val name: String, + val url: String +) + +@Serializable +private data class Scm( + val url: String, +) \ No newline at end of file