diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index f7a03145..c8ff3936 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,6 +1,7 @@ + diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt b/app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt index 4da4180e..fffa77a8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/config/Config.kt @@ -39,6 +39,7 @@ class Config(db: AppDb) : BaseConfig(db) { var apiAvailabilityCheck by config(true) var apiInvalidCert by config(null) + var apiKeyCustom by config(null) var appInstalledTime by config(0L) var appRateSnackbarTime by config(0L) var appVersion by config(BuildConfig.VERSION_CODE) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/SignatureInterceptor.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/SignatureInterceptor.kt index b766cea5..710bcb74 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/SignatureInterceptor.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/SignatureInterceptor.kt @@ -12,10 +12,11 @@ import pl.szczodrzynski.edziennik.ext.bodyToString import pl.szczodrzynski.edziennik.ext.currentTimeUnix import pl.szczodrzynski.edziennik.ext.hmacSHA1 import pl.szczodrzynski.edziennik.ext.md5 +import pl.szczodrzynski.edziennik.ext.takeValue class SignatureInterceptor(val app: App) : Interceptor { companion object { - private const val API_KEY = "szkolny_android_42a66f0842fc7da4e37c66732acf705a" + const val API_KEY = "szkolny_android_42a66f0842fc7da4e37c66732acf705a" } override fun intercept(chain: Interceptor.Chain): Response { @@ -27,7 +28,7 @@ class SignatureInterceptor(val app: App) : Interceptor { return chain.proceed( request.newBuilder() - .header("X-ApiKey", API_KEY) + .header("X-ApiKey", app.config.apiKeyCustom?.takeValue() ?: API_KEY) .header("X-AppVersion", BuildConfig.VERSION_CODE.toString()) .header("X-Timestamp", timestamp.toString()) .header("X-Signature", sign(timestamp, body, url)) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/MiscExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/MiscExtensions.kt index 26dc442a..5ddb5dcb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/MiscExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/MiscExtensions.kt @@ -76,4 +76,6 @@ fun pendingIntentFlag(): Int { fun Int?.takeValue() = if (this == -1) null else this fun Int?.takePositive() = if (this == -1 || this == 0) null else this +fun String?.takeValue() = if (this.isNullOrBlank()) null else this + fun Any?.ignore() = Unit diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabPageFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabPageFragment.kt index ed3237ab..1c580968 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabPageFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabPageFragment.kt @@ -11,6 +11,7 @@ import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isVisible +import androidx.core.widget.doAfterTextChanged import androidx.sqlite.db.SimpleSQLiteQuery import com.chuckerteam.chucker.api.Chucker import com.chuckerteam.chucker.api.Chucker.SCREEN_HTTP @@ -21,6 +22,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.config.Config +import pl.szczodrzynski.edziennik.data.api.szkolny.interceptor.SignatureInterceptor import pl.szczodrzynski.edziennik.databinding.LabFragmentBinding import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment @@ -141,6 +143,16 @@ class LabPageFragment : LazyFragment(), CoroutineScope { app.config.apiInvalidCert = null } + b.apiKey.setText(app.config.apiKeyCustom ?: SignatureInterceptor.API_KEY) + b.apiKey.doAfterTextChanged { + it?.toString()?.let { key -> + if (key == SignatureInterceptor.API_KEY) + app.config.apiKeyCustom = null + else + app.config.apiKeyCustom = key.takeValue()?.trim() + } + } + b.rebuildConfig.onClick { App.config = Config(App.db) } diff --git a/app/src/main/res/layout/lab_fragment.xml b/app/src/main/res/layout/lab_fragment.xml index 1b9ef55d..c1326fa3 100644 --- a/app/src/main/res/layout/lab_fragment.xml +++ b/app/src/main/res/layout/lab_fragment.xml @@ -133,6 +133,18 @@ android:text="Reset API signature" android:textAllCaps="false" /> + + + + +