PureBasic
PureBasic
REST Upload String
See more Amazon S3 (new) Examples
Example to upload the contents of a string to the Amazon S3 service.Chilkat PureBasic Downloads
IncludeFile "CkAuthAws.pb"
IncludeFile "CkRest.pb"
IncludeFile "CkFileAccess.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to the Amazon AWS REST server.
bTls.i = 1
port.i = 443
bAutoReconnect.i = 1
success = CkRest::ckConnect(rest,"s3.amazonaws.com",port,bTls,bAutoReconnect)
; ----------------------------------------------------------------------------
; Important: For buckets created in regions outside us-east-1,
; there are three important changes that need to be made.
; See Working with S3 Buckets in Non-us-east-1 Regions for the details.
; ----------------------------------------------------------------------------
; Provide AWS credentials for the REST call.
authAws.i = CkAuthAws::ckCreate()
If authAws.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkAuthAws::setCkAccessKey(authAws, "AWS_ACCESS_KEY")
CkAuthAws::setCkSecretKey(authAws, "AWS_SECRET_KEY")
CkAuthAws::setCkServiceName(authAws, "s3")
success = CkRest::ckSetAuthAws(rest,authAws)
; Set the bucket name via the HOST header.
; In this case, the bucket name is "chilkat100".
CkRest::setCkHost(rest, "chilkat100.s3.amazonaws.com")
; Load a text file into memory.
fac.i = CkFileAccess::ckCreate()
If fac.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
fileContents.s = CkFileAccess::ckReadEntireTextFile(fac,"qa_data/xml/hamlet.xml","utf-8")
If CkFileAccess::ckLastMethodSuccess(fac) <> 1
Debug CkFileAccess::ckLastErrorText(fac)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkFileAccess::ckDispose(fac)
ProcedureReturn
EndIf
; To send the file in gzip or deflate compressed format, set the Content-Encoding request
; header to "gzip" or "deflate". (this is optional)
success = CkRest::ckAddHeader(rest,"Content-Encoding","gzip")
; Indicate the Content-Type of our upload. (This is optional)
success = CkRest::ckAddHeader(rest,"Content-Type","text/xml")
; We can add an "Expect: 100-continue" header so that if the request is rejected
; by the server immediately after receiving the request header, it can respond
; and the client (Chilkat) can avoid sending the file data.
; (this is optional)
success = CkRest::ckAddHeader(rest,"Expect","100-continue")
; Upload the file to Amazon S3.
responseBodyStr.s = CkRest::ckFullRequestString(rest,"PUT","/hamlet_play.xml",fileContents)
If CkRest::ckLastMethodSuccess(rest) <> 1
Debug CkRest::ckLastErrorText(rest)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkFileAccess::ckDispose(fac)
ProcedureReturn
EndIf
; Did we get a 200 response indicating success?
statusCode.i = CkRest::ckResponseStatusCode(rest)
If statusCode <> 200
Debug "Error response: " + responseBodyStr
Debug "Status code: " + Str(statusCode) + ", Status text: " + CkRest::ckResponseStatusText(rest)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkFileAccess::ckDispose(fac)
ProcedureReturn
EndIf
Debug "File successfully uploaded."
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkFileAccess::ckDispose(fac)
ProcedureReturn
EndProcedure