Skip to content

Commit

Permalink
refactor: Use Kotlin's Base64-encoding
Browse files Browse the repository at this point in the history
Use Kotlin's built-in functionality as much as possible for portability.

Signed-off-by: Sebastian Schuberth <[email protected]>
  • Loading branch information
sschuberth committed Feb 20, 2024
1 parent 15b4ee1 commit 76a2057
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 13 deletions.
1 change: 1 addition & 0 deletions buildSrc/src/main/kotlin/ort-kotlin-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ tasks.withType<KotlinCompile>().configureEach {

val customCompilerArgs = buildList {
add("-opt-in=kotlin.contracts.ExperimentalContracts")
add("-opt-in=kotlin.io.encoding.ExperimentalEncodingApi")
add("-opt-in=kotlin.io.path.ExperimentalPathApi")
add("-opt-in=kotlin.time.ExperimentalTime")
if (hasSerialization) add("-opt-in=kotlinx.serialization.ExperimentalSerializationApi")
Expand Down
19 changes: 9 additions & 10 deletions clients/fossid-webapp/src/main/kotlin/Extensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
package org.ossreviewtoolkit.clients.fossid

import java.io.File
import java.util.Base64

import kotlin.io.encoding.Base64

import okio.buffer
import okio.sink
Expand All @@ -41,8 +42,6 @@ internal const val SCAN_GROUP = "scans"
private const val FILES_AND_FOLDERS_GROUP = "files_and_folders"
private const val PROJECT_GROUP = "projects"

private val base64Encoder = Base64.getEncoder()

/**
* Verify that a request for the given [operation] was successful. [operation] is a free label describing the operation.
* If [withDataCheck] is true, also the payload data is checked, otherwise that check is skipped.
Expand Down Expand Up @@ -260,7 +259,7 @@ suspend fun FossIdRestService.listSnippets(
scanCode: String,
path: String
): PolymorphicResponseBody<Snippet> {
val base64Path = base64Encoder.encodeToString(path.toByteArray())
val base64Path = Base64.encode(path.toByteArray())
return listSnippets(
PostRequestBody(
"get_fossid_results",
Expand All @@ -285,7 +284,7 @@ suspend fun FossIdRestService.listMatchedLines(
path: String,
snippetId: Int
): EntityResponseBody<MatchedLines> {
val base64Path = base64Encoder.encodeToString(path.toByteArray())
val base64Path = Base64.encode(path.toByteArray())
return listMatchedLines(
PostRequestBody(
"get_matched_lines",
Expand Down Expand Up @@ -463,7 +462,7 @@ suspend fun FossIdRestService.markAsIdentified(
path: String,
isDirectory: Boolean
): EntityResponseBody<Nothing> {
val base64Path = base64Encoder.encodeToString(path.toByteArray())
val base64Path = Base64.encode(path.toByteArray())
val directoryFlag = if (isDirectory) "1" else "0"
return markAsIdentified(
PostRequestBody(
Expand All @@ -488,7 +487,7 @@ suspend fun FossIdRestService.unmarkAsIdentified(
path: String,
isDirectory: Boolean
): EntityResponseBody<Nothing> {
val base64Path = base64Encoder.encodeToString(path.toByteArray())
val base64Path = Base64.encode(path.toByteArray())
val directoryFlag = if (isDirectory) "1" else "0"
return unmarkAsIdentified(
PostRequestBody(
Expand All @@ -515,7 +514,7 @@ suspend fun FossIdRestService.addLicenseIdentification(
identificationOn: LicenseMatchType,
isDirectory: Boolean
): EntityResponseBody<Nothing> {
val base64Path = base64Encoder.encodeToString(path.toByteArray())
val base64Path = Base64.encode(path.toByteArray())
val directoryFlag = if (isDirectory) "1" else "0"
return addLicenseIdentification(
PostRequestBody(
Expand Down Expand Up @@ -552,7 +551,7 @@ suspend fun FossIdRestService.addComponentIdentification(
isDirectory: Boolean,
preserveExistingIdentifications: Boolean = true
): EntityResponseBody<Nothing> {
val base64Path = base64Encoder.encodeToString(path.toByteArray())
val base64Path = Base64.encode(path.toByteArray())
val directoryFlag = if (isDirectory) "1" else "0"
val preserveExistingIdentificationsFlag = if (preserveExistingIdentifications) "1" else "0"
return addComponentIdentification(
Expand Down Expand Up @@ -587,7 +586,7 @@ suspend fun FossIdRestService.addFileComment(
isImportant: Boolean = false,
includeInReport: Boolean = false
): EntityResponseBody<Nothing> {
val base64Path = base64Encoder.encodeToString(path.toByteArray())
val base64Path = Base64.encode(path.toByteArray())
val isImportantFlag = if (isImportant) "1" else "0"
val includeInReportFlag = if (includeInReport) "1" else "0"
return addFileComment(
Expand Down
7 changes: 4 additions & 3 deletions model/src/main/kotlin/Hash.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize
import com.fasterxml.jackson.databind.util.StdConverter

import java.io.File
import java.util.Base64

import kotlin.io.encoding.Base64

import org.ossreviewtoolkit.utils.common.decodeHex
import org.ossreviewtoolkit.utils.common.encodeHex
Expand Down Expand Up @@ -59,7 +60,7 @@ data class Hash(
// Support Subresource Integrity (SRI) hashes, see
// https://w3c.github.io/webappsec-subresource-integrity/
Hash(
value = Base64.getDecoder().decode(splitValue.last()).encodeHex(),
value = Base64.decode(splitValue.last()).encodeHex(),
algorithm = HashAlgorithm.fromString(splitValue.first())
)
} else {
Expand All @@ -82,7 +83,7 @@ data class Hash(
/**
* Return the hash in Support Subresource Integrity (SRI) format.
*/
fun toSri() = algorithm.name.lowercase() + "-" + Base64.getEncoder().encodeToString(value.decodeHex())
fun toSri() = algorithm.name.lowercase() + "-" + Base64.encode(value.decodeHex())

/**
* Verify that the [file] matches this hash.
Expand Down

0 comments on commit 76a2057

Please sign in to comment.