Gitnuro/src/main/kotlin/com/jetpackduba/gitnuro/credentials/HttpCredentialsProvider.kt
2022-09-28 01:56:21 +02:00

51 lines
1.7 KiB
Kotlin

package com.jetpackduba.gitnuro.credentials
import org.eclipse.jgit.transport.CredentialItem
import org.eclipse.jgit.transport.CredentialsProvider
import org.eclipse.jgit.transport.URIish
class HttpCredentialsProvider : CredentialsProvider() {
private val credentialsStateManager = CredentialsStateManager
override fun isInteractive(): Boolean {
return true
}
override fun supports(vararg items: CredentialItem?): Boolean {
println(items)
val fields = items.map { credentialItem -> credentialItem?.promptText }
return if (fields.isEmpty()) {
true
} else
fields.size == 2 &&
fields.contains("Username") &&
fields.contains("Password")
}
override fun get(uri: URIish?, vararg items: CredentialItem?): Boolean {
CredentialsStateManager.updateState(CredentialsState.HttpCredentialsRequested)
var credentials = CredentialsStateManager.currentCredentialsState
while (credentials is CredentialsState.CredentialsRequested) {
credentials = CredentialsStateManager.currentCredentialsState
}
if (credentials is CredentialsState.HttpCredentialsAccepted) {
val userItem = items.firstOrNull { it?.promptText == "Username" }
val passwordItem = items.firstOrNull { it?.promptText == "Password" }
if (userItem is CredentialItem.Username &&
passwordItem is CredentialItem.Password
) {
userItem.value = credentials.user
passwordItem.value = credentials.password.toCharArray()
return true
}
}
return false
}
}