Skip to content

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

Open
@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 featurestorageRelated to the Storage category/plugins

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions