diff --git a/aws-kinesis/build.gradle.kts b/aws-kinesis/build.gradle.kts index c58c2b5d02..1864b49a6f 100644 --- a/aws-kinesis/build.gradle.kts +++ b/aws-kinesis/build.gradle.kts @@ -30,6 +30,7 @@ dependencies { implementation(project(":foundation-bridge")) implementation(libs.androidx.appcompat) + implementation(libs.aws.http) implementation(libs.aws.kinesis) implementation(libs.kotlin.serializationJson) implementation(libs.androidx.sqlite) diff --git a/aws-kinesis/src/main/java/com/amplifyframework/kinesis/AmplifyKinesisClient.kt b/aws-kinesis/src/main/java/com/amplifyframework/kinesis/AmplifyKinesisClient.kt index 1e508ded2a..6d6504fc98 100644 --- a/aws-kinesis/src/main/java/com/amplifyframework/kinesis/AmplifyKinesisClient.kt +++ b/aws-kinesis/src/main/java/com/amplifyframework/kinesis/AmplifyKinesisClient.kt @@ -1,7 +1,10 @@ package com.amplifyframework.kinesis import android.content.Context +import aws.sdk.kotlin.runtime.http.operation.customUserAgentMetadata import aws.sdk.kotlin.services.kinesis.KinesisClient +import aws.smithy.kotlin.runtime.client.RequestInterceptorContext +import aws.smithy.kotlin.runtime.http.interceptors.HttpInterceptor import com.amplifyframework.annotations.InternalAmplifyApi import com.amplifyframework.foundation.credentials.AwsCredentials import com.amplifyframework.foundation.credentials.AwsCredentialsProvider @@ -75,6 +78,18 @@ class AmplifyKinesisClient( val kinesisClient: KinesisClient = KinesisClient { this.region = this@AmplifyKinesisClient.region this.credentialsProvider = this@AmplifyKinesisClient.credentialsProvider.toSmithyProvider() + + // Add user agent metadata for tracking Kinesis feature usage + this.interceptors += object : HttpInterceptor { + override suspend fun modifyBeforeSerialization(context: RequestInterceptorContext): Any { + context.executionContext.customUserAgentMetadata.add( + "kinesis", + BuildConfig.VERSION_NAME + ) + return super.modifyBeforeSerialization(context) + } + } + options.configureClient?.applyConfiguration(this) }