Private Sub AWSDownloadFile(AWSFolder As String, AWSFilename As String, sOutputDir As String) As ResumableSub
Dim dBackupTimeZone As Double = DateTime.TimeZoneOffset
DateTime.SetTimeZone(0)
If File.Exists(sOutputDir, AWSFilename) = True Then
Try
File.Delete(sOutputDir, AWSFilename)
Catch
Log(LastException)
End Try
End If
If AWSFolder <> "" Then
If AWSFolder.CharAt(AWSFolder.Length-1) <> "/" Then AWSFolder = AWSFolder & "/"
End If
AWS_S3.AWS_Access_Key_ID = AWSAccessKeyID
AWS_S3.AWS_Secret_Access_Key = AWSSecretAccessKey
AWS_S3.AWS_Region = "eu-central-1"
AWS_S3.AWS_End_Point = AWSEndPoint
AWS_S3.AWS_S3_Bucket_Name = AWSBucketName
AWS_S3.AWS_S3_File_Name = AWSFolder & AWSFilename
AWS_S3.AWS_S3_HttpMethod = "GET"
AWS_S3.AWS_S3_Query_map.Initialize
AWS_S3.AWS_S3_Query_map.Clear
Private null_bytes() As Byte
AWS_S3.AWS_S3_Payload = null_bytes
AWS_S3.AWS_S3_GMT_DateTime = DateTime.Now
AWS_S3.AWS_S3_OtherHeader_map.Initialize
AWS_S3.AWS_S3_OtherHeader_map.Clear
Dim AWS_job As HttpJob
AWS_job.Initialize("AWS_job", Me)
AWS_job.Download(AWS_S3.URI)
Private wk_hdr_map As Map
wk_hdr_map.Initialize
wk_hdr_map = AWS_S3.FullHeaderMap
For Each a As String In wk_hdr_map.Keys
If a <> "host" Then
AWS_job.GetRequest.SetHeader(a, wk_hdr_map.Get(a))
End If
Next
AWS_job.GetRequest.SetHeader("Authorization", AWS_S3.Authorization)
' Wait for download to finish
Wait For (AWS_job) JobDone(AWS_job As HttpJob)
' Copy file
If AWS_job.Success = True Then
Private wrk_in As InputStream
wrk_in = AWS_job.GetInputStream
Private wrk_out As OutputStream
wrk_out = File.OpenOutput(sOutputDir, AWSFilename, False)
File.Copy2(wrk_in, wrk_out)
wrk_in.Close
wrk_out.Close
End If
AWS_job.Release
DateTime.SetTimeZone(dBackupTimeZone)
Return File.exists(sOutputDir, AWSFilename)
End Sub