Реализация облачной подписанной загрузки в Котлине
Я испытываю трудности с выполнением подписанной загрузки в Cloudinary с использованием Kotlin. Я реализовал свой бэкэнд, чтобы предоставить мне сигнатуру и метку времени. Вот что я сделал для создания конфигурации:
var config = HashMap<String, Any> ()
config.put("cloud_name", "my_cloud_name");
//config.put("apiKey", my_api_key);
config.put("use_filename", true);
Теперь я не могу сделать MediaManager.init, используя подпись. Может кто-нибудь, пожалуйста, помогите? В Java-коде сказано сделать следующее, но я не могу воспроизвести то же самое в Kotlin:
MediaManager.init(this, new SignatureProvider() {
@Override
public Signature provideSignature(Map options) {
// call server signature endpoint
}
}, null);
2 ответа
Вот как вы запускаете MediaManager с провайдером подписи в Kotlin:
MediaManager.init(thiscontext!!, object: SignatureProvider {
override fun provideSignature(options: MutableMap<Any?, Any?>?): Signature {
return myBackendConnector.signRequest(options)
}
override fun getName(): String {
return "myCustomSignatureProvider"
}
}, config)
Это будет работать при условии, что ваш бэкэнд уже имеет ключ api (так и должно быть) и что тип возвращаемого значения из вашего коннектора Signature
, В противном случае вам нужно будет адаптировать результат вашего бэкенда к Signature
(заполните POJO с результатом, предоставленным вашим сервером).
Получить
timestamp
а также
signature
из вашего бэкэнда, затем добавьте их в качестве параметров.
val options = mapOf(
"timestamp" to // timestamp from backend,
"signature" to // signature from backend,
// other options from backend
)
MediaManager.get()
.upload(uri)
.options(options)
.callback(uploadCallback)
.dispatch()
Таким образом, это означает, что не нужно создавать файл .
Я пришел к использованию этого, потому что не мог заставить это работать с
SignatureProvider
в
MediaManager.init()
.