Skip to content

TransferUtility.upload()'s TransferObserver or TransferListener should include the eTag of uploaded file #3674

@kenyee

Description

@kenyee

Before opening, please confirm:

Language and Async Model

Kotlin, Kotlin - Coroutines

Amplify Categories

Storage

Gradle script dependencies

com-amazonaws = "2.77.0"
com-amazonaws-aws-android-sdk-s3 = { module = "com.amazonaws:aws-android-sdk-s3", version.ref = "com-amazonaws" }

Environment information

N.A.

Please include any relevant guides or documentation you're referencing

https://docs.amplify.aws/android/build-a-backend/storage/upload-files/

Describe the feature request

The use case is that temporary credentials are used to upload to a server but we also need to include the eTag to make sure we have the latest version of a file. However, the credentials don't allow .getObject or .getObjectMetadata calls for security reasons.

Using TransferObserver, you get the id and state but not the eTag:

object : TransferListener {
                    override fun onStateChanged(
                        id: Int,
                        state: TransferState,
                    ) {
                        if (TransferState.COMPLETED == state) {
                            continuation.resume(state.name)
                        } else {
                            Timber.d("State changed to ${state.name}")
                        }
                    }

Please include the eTag in the onStateChanged parameters. Or include it in the fields of the TransferObserver when it's completed.

Initialization steps (if applicable)

No response

Code Snippet

// Put your code below this line.

amplifyconfiguration.json

No response

GraphQL Schema

// Put your schema below this line

Additional information and screenshots

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature-requestRequest a new features3Issues with the AWS Android SDK for Simple Storage Service (S3).

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions