public static S3UploadInfo uploadRawAudio()

in source/aws-connect-vm-serverless/src/main/java/com/amazonaws/audio/AudioUtils.java [81:128]


    public static S3UploadInfo uploadRawAudio(Regions region, String bucketName, String keyPrefix, String audioFilePath,
                                              String agentId, String contactId, boolean publicReadAcl,
                                              AWSCredentialsProvider awsCredentials) {
        File wavFile = null;
        S3UploadInfo uploadInfo = null;

        try {

            AmazonS3Client s3Client = (AmazonS3Client)AmazonS3ClientBuilder.standard()
                    .withRegion(region)
                    .withCredentials(awsCredentials)
                    .build();

            wavFile = convertToWav(audioFilePath);

            // upload the raw audio file to the designated S3 location
            String objectKey = keyPrefix + wavFile.getName();

            logger.info(String.format("Uploading Audio: to %s/%s from %s", bucketName, objectKey, wavFile));
            PutObjectRequest request = new PutObjectRequest(bucketName, objectKey, wavFile);
            ObjectMetadata metadata = new ObjectMetadata();
            metadata.setContentType("audio/wav");
            metadata.addUserMetadata("contact-id", contactId);
            metadata.addUserMetadata("agent-id", agentId);
            request.setMetadata(metadata);

            if (publicReadAcl) {
                request.setCannedAcl(CannedAccessControlList.PublicRead);
            }

            PutObjectResult s3result = s3Client.putObject(request);

            logger.info("putObject completed successfully " + s3result.getETag());
            uploadInfo = new S3UploadInfo(bucketName, objectKey, region);

        } catch (SdkClientException e) {
            logger.error("Audio upload to S3 failed: ", e);
            throw e;
        } catch (UnsupportedAudioFileException|IOException e) {
            logger.error("Failed to convert to wav: ", e);
        } finally {
            if (wavFile != null) {
                wavFile.delete();
            }
        }

        return uploadInfo;
    }