forked from github/szkolny
[Lab] Allow setting custom API key.
This commit is contained in:
parent
fd407b2b03
commit
0d4dee765a
@ -1,6 +1,7 @@
|
|||||||
<component name="ProjectCodeStyleConfiguration">
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
<code_scheme name="Project" version="173">
|
<code_scheme name="Project" version="173">
|
||||||
<JetCodeStyleSettings>
|
<JetCodeStyleSettings>
|
||||||
|
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
|
||||||
<option name="ALLOW_TRAILING_COMMA" value="true" />
|
<option name="ALLOW_TRAILING_COMMA" value="true" />
|
||||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
</JetCodeStyleSettings>
|
</JetCodeStyleSettings>
|
||||||
|
@ -39,6 +39,7 @@ class Config(db: AppDb) : BaseConfig(db) {
|
|||||||
|
|
||||||
var apiAvailabilityCheck by config<Boolean>(true)
|
var apiAvailabilityCheck by config<Boolean>(true)
|
||||||
var apiInvalidCert by config<String?>(null)
|
var apiInvalidCert by config<String?>(null)
|
||||||
|
var apiKeyCustom by config<String?>(null)
|
||||||
var appInstalledTime by config<Long>(0L)
|
var appInstalledTime by config<Long>(0L)
|
||||||
var appRateSnackbarTime by config<Long>(0L)
|
var appRateSnackbarTime by config<Long>(0L)
|
||||||
var appVersion by config<Int>(BuildConfig.VERSION_CODE)
|
var appVersion by config<Int>(BuildConfig.VERSION_CODE)
|
||||||
|
@ -12,10 +12,11 @@ import pl.szczodrzynski.edziennik.ext.bodyToString
|
|||||||
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
||||||
import pl.szczodrzynski.edziennik.ext.hmacSHA1
|
import pl.szczodrzynski.edziennik.ext.hmacSHA1
|
||||||
import pl.szczodrzynski.edziennik.ext.md5
|
import pl.szczodrzynski.edziennik.ext.md5
|
||||||
|
import pl.szczodrzynski.edziennik.ext.takeValue
|
||||||
|
|
||||||
class SignatureInterceptor(val app: App) : Interceptor {
|
class SignatureInterceptor(val app: App) : Interceptor {
|
||||||
companion object {
|
companion object {
|
||||||
private const val API_KEY = "szkolny_android_42a66f0842fc7da4e37c66732acf705a"
|
const val API_KEY = "szkolny_android_42a66f0842fc7da4e37c66732acf705a"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun intercept(chain: Interceptor.Chain): Response {
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
@ -27,7 +28,7 @@ class SignatureInterceptor(val app: App) : Interceptor {
|
|||||||
|
|
||||||
return chain.proceed(
|
return chain.proceed(
|
||||||
request.newBuilder()
|
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-AppVersion", BuildConfig.VERSION_CODE.toString())
|
||||||
.header("X-Timestamp", timestamp.toString())
|
.header("X-Timestamp", timestamp.toString())
|
||||||
.header("X-Signature", sign(timestamp, body, url))
|
.header("X-Signature", sign(timestamp, body, url))
|
||||||
|
@ -76,4 +76,6 @@ fun pendingIntentFlag(): Int {
|
|||||||
fun Int?.takeValue() = if (this == -1) null else this
|
fun Int?.takeValue() = if (this == -1) null else this
|
||||||
fun Int?.takePositive() = if (this == -1 || this == 0) 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
|
fun Any?.ignore() = Unit
|
||||||
|
@ -11,6 +11,7 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.core.widget.doAfterTextChanged
|
||||||
import androidx.sqlite.db.SimpleSQLiteQuery
|
import androidx.sqlite.db.SimpleSQLiteQuery
|
||||||
import com.chuckerteam.chucker.api.Chucker
|
import com.chuckerteam.chucker.api.Chucker
|
||||||
import com.chuckerteam.chucker.api.Chucker.SCREEN_HTTP
|
import com.chuckerteam.chucker.api.Chucker.SCREEN_HTTP
|
||||||
@ -21,6 +22,7 @@ import kotlinx.coroutines.Job
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.config.Config
|
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.databinding.LabFragmentBinding
|
||||||
import pl.szczodrzynski.edziennik.ext.*
|
import pl.szczodrzynski.edziennik.ext.*
|
||||||
import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment
|
import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment
|
||||||
@ -141,6 +143,16 @@ class LabPageFragment : LazyFragment(), CoroutineScope {
|
|||||||
app.config.apiInvalidCert = null
|
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 {
|
b.rebuildConfig.onClick {
|
||||||
App.config = Config(App.db)
|
App.config = Config(App.db)
|
||||||
}
|
}
|
||||||
|
@ -133,6 +133,18 @@
|
|||||||
android:text="Reset API signature"
|
android:text="Reset API signature"
|
||||||
android:textAllCaps="false" />
|
android:textAllCaps="false" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp">
|
||||||
|
|
||||||
|
<pl.szczodrzynski.edziennik.utils.TextInputKeyboardEdit
|
||||||
|
android:id="@+id/apiKey"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="API Key" />
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/disableDebug"
|
android:id="@+id/disableDebug"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
Loading…
Reference in New Issue
Block a user