package com.ustadmobile.ustadapiconsumer import android.accounts.AccountManager import android.content.Context import android.content.Intent import android.net.Uri import android.os.Parcelable import androidx.activity.result.contract.ActivityResultContract import kotlinx.parcelize.Parcelize @Parcelize data class GetTokenResult( val resultCode: Int, val accountName: String?, val accountType: String?, val authToken: String?, val sourcedId: String?, val endpointUrl: String?, val onerosterUrl: String? = null, ): Parcelable { fun authHeaders(): Map = mapOf( "Authorization" to "Bearer $authToken" ) } class GetOfflineAuthActivityResultContract: ActivityResultContract() { /** * @param input where the desired endpoint servername is known, it can provided. */ override fun createIntent(context: Context, input: String?): Intent { return Intent("com.ustadmobile.AUTH_GET_TOKEN", Uri.parse("local-auth://${input ?: ""}")) } override fun parseResult(resultCode: Int, intent: Intent?): GetTokenResult { return GetTokenResult( resultCode = resultCode, accountName = intent?.getStringExtra(AccountManager.KEY_ACCOUNT_NAME), accountType = intent?.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE), authToken = intent?.getStringExtra(AccountManager.KEY_AUTHTOKEN), sourcedId = intent?.getStringExtra("sourcedId"), endpointUrl = intent?.getStringExtra("endpointUrl"), onerosterUrl = intent?.getStringExtra("onerosterUrl"), ) } }