/// <summary>
        /// adds the stream to s3 with the specified key
        /// </summary>
        /// <param name="fileStream"></param>
        /// <param name="key"></param>
        /// <param name="tempFolder"></param>
        public static void AddS3File(Stream fileStream, string key, string tempFolder)
        {
            var uploader = new S3UploadHelper(Settings.Default.AWSAccessKey,
                                              Settings.Default.AWSSecretKey,
                                              Settings.Default.AWSRegionName,
                                              Settings.Default.AWSS3BucketName);

            uploader.Upload(fileStream, key, tempFolder);
        }
        /// <summary>
        /// deletes this file from s3
        /// </summary>
        /// <param name="sourcePath"></param>
        public static void DeleteS3File(string sourcePath)
        {
            var s3 = new S3UploadHelper(Settings.Default.AWSAccessKey,
                                        Settings.Default.AWSSecretKey,
                                        Settings.Default.AWSRegionName,
                                        Settings.Default.AWSS3BucketName);

            s3.DeleteFile(sourcePath);
        }
        /// <summary>
        /// uploads this file stream to the S3 Archive bucket
        /// </summary>
        /// <param name="archivePath"></param>
        /// <param name="fileStream"></param>
        /// <param name="fileName"></param>
        /// <param name="tempFolder"></param>
        public static void CopyFileToS3Archive(string archivePath, Stream fileStream, string fileName, string tempFolder)
        {
            var uploader = new S3UploadHelper(Settings.Default.AWSAccessKey,
                                              Settings.Default.AWSSecretKey,
                                              Settings.Default.AWSRegionName,
                                              Settings.Default.AWSS3BucketName);

            var archiveFileName = archivePath + fileName;

            uploader.Upload(fileStream, archiveFileName, tempFolder);
        }
        /// <summary>
        /// returns whether the specified item exits in the s3 bucket
        /// </summary>
        /// <param name="sourcePath"></param>
        /// <returns></returns>
        public static bool S3FileExists(string sourcePath)
        {
            var s3 = new S3UploadHelper(Settings.Default.AWSAccessKey,
                                        Settings.Default.AWSSecretKey,
                                        Settings.Default.AWSRegionName,
                                        Settings.Default.AWSS3BucketName);

            var response = s3.FileExists(sourcePath);

            return(!string.IsNullOrEmpty(response.Item));
        }
        /// <summary>
        /// gets this file from s3
        /// </summary>
        /// <param name="sourcePath"></param>
        public static Stream GetS3File(string sourcePath)
        {
            var s3 = new S3UploadHelper(Settings.Default.AWSAccessKey,
                                        Settings.Default.AWSSecretKey,
                                        Settings.Default.AWSRegionName,
                                        Settings.Default.AWSS3BucketName);

            var response = s3.GetFile(sourcePath);

            //  convert to memory stream so that we can seek

            if (response.Item == null)
            {
                return(null);
            }
            else
            {
                return(response.Item);
            }
        }