-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from spotify/first-transfer
Transfer codebase
- Loading branch information
Showing
44 changed files
with
2,036 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# Compiled class file | ||
*.class | ||
|
||
# Log file | ||
*.log | ||
|
||
# BlueJ files | ||
*.ctxt | ||
|
||
# Mobile Tools for Java (J2ME) | ||
.mtj.tmp/ | ||
|
||
# Package Files # | ||
*.jar | ||
*.war | ||
*.nar | ||
*.ear | ||
*.zip | ||
*.tar.gz | ||
*.rar | ||
|
||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml | ||
hs_err_pid* | ||
|
||
|
||
# Gradle files | ||
.gradle/ | ||
build/ | ||
gradlew | ||
gradlew.bat | ||
|
||
# Local configuration file (sdk path, etc) | ||
local.properties | ||
|
||
# IntelliJ | ||
*.iml | ||
.idea/ | ||
misc.xml | ||
deploymentTargetDropDown.xml | ||
render.experimental.xml | ||
|
||
# Android Profiling | ||
*.hprof | ||
|
||
# Other | ||
*.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
plugins { | ||
id("com.android.library") | ||
id("org.jetbrains.kotlin.android") | ||
id("maven-publish") | ||
kotlin("plugin.serialization") version "1.8.10" | ||
} | ||
|
||
android { | ||
namespace = "dev.openfeature.sdk" | ||
compileSdk = 33 | ||
|
||
defaultConfig { | ||
minSdk = 26 | ||
version = "0.0.1" | ||
|
||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
} | ||
|
||
buildTypes { | ||
getByName("release") { | ||
isMinifyEnabled = false | ||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") | ||
} | ||
} | ||
compileOptions { | ||
sourceCompatibility = JavaVersion.VERSION_11 | ||
targetCompatibility = JavaVersion.VERSION_11 | ||
} | ||
kotlinOptions { | ||
jvmTarget = JavaVersion.VERSION_11.toString() | ||
} | ||
} | ||
|
||
dependencies { | ||
implementation("com.google.android.material:material:1.8.0") | ||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1") | ||
testImplementation("junit:junit:4.13.2") | ||
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4") | ||
} | ||
|
||
publishing { | ||
publications { | ||
register<MavenPublication>("release") { | ||
groupId = "dev.openfeature" | ||
artifactId = "kotlin-sdk" | ||
version = "0.0.1-SNAPSHOT" | ||
|
||
afterEvaluate { | ||
from(components["release"]) | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Add project specific ProGuard rules here. | ||
# You can control the set of applied configuration files using the | ||
# proguardFiles setting in build.gradle.kts. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} | ||
|
||
# Uncomment this to preserve the line number information for | ||
# debugging stack traces. | ||
#-keepattributes SourceFile,LineNumberTable | ||
|
||
# If you keep the line number information, uncomment this to | ||
# hide the original source file name. | ||
#-renamesourcefileattribute SourceFile |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest> | ||
</manifest> |
11 changes: 11 additions & 0 deletions
11
OpenFeature/src/main/java/dev/openfeature/sdk/BaseEvaluation.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package dev.openfeature.sdk | ||
|
||
import dev.openfeature.sdk.exceptions.ErrorCode | ||
|
||
interface BaseEvaluation<T> { | ||
val value: T | ||
val variant: String? | ||
val reason: String? | ||
val errorCode: ErrorCode? | ||
val errorMessage: String? | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package dev.openfeature.sdk | ||
|
||
interface Client: Features { | ||
val metadata: Metadata | ||
val hooks: List<Hook<*>> | ||
|
||
fun addHooks(hooks: List<Hook<*>>) | ||
} |
10 changes: 10 additions & 0 deletions
10
OpenFeature/src/main/java/dev/openfeature/sdk/EvaluationContext.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package dev.openfeature.sdk | ||
|
||
interface EvaluationContext: Structure { | ||
fun getTargetingKey(): String | ||
fun setTargetingKey(targetingKey: String) | ||
|
||
// Make sure these are implemented for correct object comparisons | ||
override fun hashCode(): Int | ||
override fun equals(other: Any?): Boolean | ||
} |
16 changes: 16 additions & 0 deletions
16
OpenFeature/src/main/java/dev/openfeature/sdk/FeatureProvider.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package dev.openfeature.sdk | ||
|
||
interface FeatureProvider { | ||
val hooks: List<Hook<*>> | ||
val metadata: Metadata | ||
|
||
// Called by OpenFeatureAPI whenever the new Provider is registered | ||
suspend fun initialize(initialContext: EvaluationContext?) | ||
// Called by OpenFeatureAPI whenever a new EvaluationContext is set by the application | ||
suspend fun onContextSet(oldContext: EvaluationContext?, newContext: EvaluationContext) | ||
fun getBooleanEvaluation(key: String, defaultValue: Boolean): ProviderEvaluation<Boolean> | ||
fun getStringEvaluation(key: String, defaultValue: String): ProviderEvaluation<String> | ||
fun getIntegerEvaluation(key: String, defaultValue: Int): ProviderEvaluation<Int> | ||
fun getDoubleEvaluation(key: String, defaultValue: Double): ProviderEvaluation<Double> | ||
fun getObjectEvaluation(key: String, defaultValue: Value): ProviderEvaluation<Value> | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package dev.openfeature.sdk | ||
|
||
interface Features { | ||
fun getBooleanValue(key: String, defaultValue: Boolean): Boolean | ||
fun getBooleanValue(key: String, defaultValue: Boolean, options: FlagEvaluationOptions): Boolean | ||
fun getBooleanDetails(key: String, defaultValue: Boolean): FlagEvaluationDetails<Boolean> | ||
fun getBooleanDetails(key: String, defaultValue: Boolean, options: FlagEvaluationOptions): FlagEvaluationDetails<Boolean> | ||
fun getStringValue(key: String, defaultValue: String): String | ||
fun getStringValue(key: String, defaultValue: String, options: FlagEvaluationOptions): String | ||
fun getStringDetails(key: String, defaultValue: String): FlagEvaluationDetails<String> | ||
fun getStringDetails(key: String, defaultValue: String, options: FlagEvaluationOptions): FlagEvaluationDetails<String> | ||
fun getIntegerValue(key: String, defaultValue: Int): Int | ||
fun getIntegerValue(key: String, defaultValue: Int, options: FlagEvaluationOptions): Int | ||
fun getIntegerDetails(key: String, defaultValue: Int): FlagEvaluationDetails<Int> | ||
fun getIntegerDetails(key: String, defaultValue: Int, options: FlagEvaluationOptions): FlagEvaluationDetails<Int> | ||
fun getDoubleValue(key: String, defaultValue: Double): Double | ||
fun getDoubleValue(key: String, defaultValue: Double, options: FlagEvaluationOptions): Double | ||
fun getDoubleDetails(key: String, defaultValue: Double): FlagEvaluationDetails<Double> | ||
fun getDoubleDetails(key: String, defaultValue: Double, options: FlagEvaluationOptions): FlagEvaluationDetails<Double> | ||
fun getObjectValue(key: String, defaultValue: Value): Value | ||
fun getObjectValue(key: String, defaultValue: Value, options: FlagEvaluationOptions): Value | ||
fun getObjectDetails(key: String, defaultValue: Value): FlagEvaluationDetails<Value> | ||
fun getObjectDetails(key: String, defaultValue: Value, options: FlagEvaluationOptions): FlagEvaluationDetails<Value> | ||
} |
25 changes: 25 additions & 0 deletions
25
OpenFeature/src/main/java/dev/openfeature/sdk/FlagEvaluationDetails.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package dev.openfeature.sdk | ||
|
||
import dev.openfeature.sdk.exceptions.ErrorCode | ||
|
||
data class FlagEvaluationDetails<T>( | ||
val flagKey: String, | ||
override var value: T, | ||
override var variant: String? = null, | ||
override var reason: String? = null, | ||
override var errorCode: ErrorCode? = null, | ||
override var errorMessage: String? = null | ||
) : BaseEvaluation<T> { | ||
companion object | ||
} | ||
|
||
fun <T> FlagEvaluationDetails.Companion.from(providerEval: ProviderEvaluation<T>, flagKey: String): FlagEvaluationDetails<T> { | ||
return FlagEvaluationDetails( | ||
flagKey, | ||
providerEval.value, | ||
providerEval.variant, | ||
providerEval.reason, | ||
providerEval.errorCode, | ||
providerEval.errorMessage | ||
) | ||
} |
6 changes: 6 additions & 0 deletions
6
OpenFeature/src/main/java/dev/openfeature/sdk/FlagEvaluationOptions.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package dev.openfeature.sdk | ||
|
||
data class FlagEvaluationOptions( | ||
var hooks: List<Hook<*>> = listOf(), | ||
var hookHints: Map<String, Any> = mapOf() | ||
) |
9 changes: 9 additions & 0 deletions
9
OpenFeature/src/main/java/dev/openfeature/sdk/FlagValueType.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package dev.openfeature.sdk | ||
enum class FlagValueType { | ||
BOOLEAN, | ||
STRING, | ||
INTEGER, | ||
DOUBLE, | ||
OBJECT; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package dev.openfeature.sdk | ||
|
||
interface Hook<T> { | ||
fun before(ctx: HookContext<T>, hints: Map<String, Any>) = Unit | ||
fun after(ctx: HookContext<T>, details: FlagEvaluationDetails<T>, hints: Map<String, Any>) = Unit | ||
fun error(ctx: HookContext<T>, error: Exception, hints: Map<String, Any>) = Unit | ||
fun finallyAfter(ctx: HookContext<T>, hints: Map<String, Any>) = Unit | ||
fun supportsFlagValueType(flagValueType: FlagValueType): Boolean = true | ||
} |
10 changes: 10 additions & 0 deletions
10
OpenFeature/src/main/java/dev/openfeature/sdk/HookContext.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package dev.openfeature.sdk | ||
|
||
data class HookContext<T>( | ||
var flagKey: String, | ||
val type: FlagValueType, | ||
var defaultValue: T, | ||
var ctx: EvaluationContext, | ||
var clientMetadata: Metadata?, | ||
var providerMetadata: Metadata | ||
) |
Oops, something went wrong.