1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-11-26 03:58:44 +00:00

add passport in API

This commit is contained in:
InsanusMokrassar 2021-01-25 10:43:51 +06:00
parent 0c71133969
commit 1dc3ce2fb5
3 changed files with 49 additions and 1 deletions

View File

@ -19,6 +19,8 @@
* `onVisualMediaGroup` now is just an alternative to `onVisualGallery` * `onVisualMediaGroup` now is just an alternative to `onVisualGallery`
* `command` and `onCommand` expectations has been added for commands `String` variant * `command` and `onCommand` expectations has been added for commands `String` variant
* New extensions `BehaviourContext#oneOf`, `BehaviourContext#parallel` and `Deferred<T>#withAction` * New extensions `BehaviourContext#oneOf`, `BehaviourContext#parallel` and `Deferred<T>#withAction`
* `API`:
* **PASSPORT** New extensions `TelegramBot#setPassportDataErrors`
## 0.31.0 ## 0.31.0

View File

@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.utils.passport
import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.DownloadFile import dev.inmo.tgbotapi.requests.DownloadFile
import dev.inmo.tgbotapi.requests.get.GetFile import dev.inmo.tgbotapi.requests.get.GetFile
import dev.inmo.tgbotapi.types.passport.EncryptedCredentials
import dev.inmo.tgbotapi.types.passport.encrypted_data.PassportFile import dev.inmo.tgbotapi.types.passport.encrypted_data.PassportFile
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.WithData import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.WithData
import dev.inmo.tgbotapi.utils.nonstrictJsonFormat import dev.inmo.tgbotapi.utils.nonstrictJsonFormat
@ -25,7 +26,7 @@ suspend fun Decryptor.decrypt(
).decrypt() ).decrypt()
} }
fun Decryptor.decryptData( fun Decryptor.decryptData(
data: WithData data: EncryptedCredentials
) = nonstrictJsonFormat.decodeFromString( ) = nonstrictJsonFormat.decodeFromString(
JsonObject.serializer(), JsonObject.serializer(),
data.data.encodeToByteArray().decrypt().decodeToString() data.data.encodeToByteArray().decrypt().decodeToString()

View File

@ -0,0 +1,45 @@
package dev.inmo.tgbotapi.extensions.api.passport
import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.SetPassportDataErrors
import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.message.PassportMessage
import dev.inmo.tgbotapi.types.passport.PassportData
import dev.inmo.tgbotapi.types.passport.PassportElementError
import dev.inmo.tgbotapi.types.passport.encrypted_data.abstracts.EncryptedPassportElement
import dev.inmo.tgbotapi.utils.passport.Decryptor
suspend fun TelegramBot.setPassportDataErrors(
userId: UserId,
errors: List<PassportElementError>
) = execute(SetPassportDataErrors(userId, errors))
suspend fun TelegramBot.setPassportDataErrors(
user: User,
errors: List<PassportElementError>
) = setPassportDataErrors(user.id, errors)
suspend fun TelegramBot.setPassportDataErrors(
userId: UserId,
passportData: PassportData,
decryptor: Decryptor,
mapper: suspend Decryptor.(EncryptedPassportElement) -> PassportElementError
): Boolean = setPassportDataErrors(
userId,
passportData.data.map { decryptor.mapper(it) }.also {
if (it.isEmpty()) {
return@setPassportDataErrors false
}
}
)
suspend fun TelegramBot.setPassportDataErrors(
user: User,
passportData: PassportData,
decryptor: Decryptor,
mapper: suspend Decryptor.(EncryptedPassportElement) -> PassportElementError
) = setPassportDataErrors(user.id, passportData, decryptor, mapper)
suspend fun TelegramBot.setPassportDataErrors(
passportMessage: PassportMessage,
decryptor: Decryptor,
mapper: suspend Decryptor.(EncryptedPassportElement) -> PassportElementError
) = setPassportDataErrors(passportMessage.user, passportMessage.passportData, decryptor, mapper)