Delphi Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Character Encoding
Digital Certificates
Digital Signatures
Email
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
RSA Encryption
S/MIME
Socket
Spider
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA

Unreleased...
Bzip2
LZW
Bz2
Icon

Type Conversion

 

Article: Understanding COM References in Delphi

Amazon S3 - Add Text Object to Bucket

This example writes some text and metadata into the "Neo" object in the "chilkat" bucket:

Download Chilkat Crypt ActiveX

Download Chilkat HTTP ActiveX

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATHTTPLib_TLB,
    CHILKATCRYPT2Lib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
http: TChilkatHttp;
success: Integer;
crypt: TChilkatCrypt2;
curDateTime: String;
textData: String;
objName: String;
md5Hash: String;
strToSign: String;
AWSAccessKeyId: String;
AWSSecretAccessKey: String;
signature: String;
authValue: String;
bGzip: Integer;
bMd5: Integer;
url: String;
strResponse: String;

begin
http := TChilkatHttp.Create(Self);
success := http.UnlockComponent('Anything for 30-day trial.');
if (success <> 1) then
  begin
    //  Unlock failed.
    ShowMessage(http.LastErrorText);
    Exit;
  end;

//  We'll need this for HMAC and MD5...
crypt := TChilkatCrypt2.Create(Self);

success := crypt.UnlockComponent('Anything for 30-day trial.');
if (success <> 1) then
  begin
    ShowMessage(crypt.LastErrorText);
    Exit;
  end;

//  The HTTP component now includes a method to generate
//  the current date/time in RFC 2616 compliant format.
//  Note: The GenTimeStamp method is available as a pre-release (as of 18-June-2008).
//  It will become available in the next new version dated after
//  18-June-2008.
curDateTime := http.GenTimeStamp();

//  This is the content of the text object to be added to
//  the "chilkat" bucket:
textData := 'woah';

//  This is the name of the object to be added:
objName := 'Neo';

//  Calculate the MD5 hash of the object's content:
crypt.HashAlgorithm := 'md5';
crypt.EncodingMode := 'base64';
crypt.Charset := 'windows-1252';
md5Hash := crypt.HashStringENC(textData);

//  Create the string to be signed.
//  IMPORTANT:
//  If a Content-MD5 header is added (see below), then
//  you also need to include the MD5 hash of the content
//  here.
//  The content-type (text/plain) must match the content-type
//  passed to the PutText method (below).
strToSign := 'PUT' + #10 + md5Hash + #10 + 'text/plain' + #10 + curDateTime + #10 + '/chilkat/' + objName;

//  We want SHA1 for the HMAC hash algorithm:
crypt.HashAlgorithm := 'sha1';

//  These must be changed for your account:
AWSAccessKeyId := 'zzzzzzzzzzzzzzzzzzzz';
AWSSecretAccessKey := 'zzzzzzzzzzzzzzzzzzzzzzzzzzzz';

//  Set the HMAC secret key:
crypt.SetHmacKeyString(AWSSecretAccessKey);

//  By setting the charset = "utf-8", the string will be converted
//  to utf-8 (internal to the Chilkat component) prior to signing:
crypt.Charset := 'utf-8';

//  Indicate that Base64 output is desired:
crypt.EncodingMode := 'base64';

signature := crypt.HmacStringENC(strToSign);

authValue := 'AWS ' + AWSAccessKeyId + ':' + signature;

//  The bucket to be used is specified in the Host header.
//  In this example, the object is added to the "chilkat" bucket:
http.SetRequestHeader('Host','chilkat.s3.amazonaws.com');

http.SetRequestHeader('Authorization',authValue);
http.SetRequestHeader('Date',curDateTime);

//  Do not GZIP the request body.  To send a gzip compressed
//  object, simply set this to 1
bGzip := 0;
//  Automatically add an MD5 hash of the request body in the HTTP header
//  (using the Content-MD5 header field).
bMd5 := 1;

url := 'http://s3.amazonaws.com/' + objName;

strResponse := http.PutText(url,textData,'windows-1252','text/plain',bMd5,bGzip);
if (http.LastStatus = 200) then
  begin

    ShowMessage('Object added to bucket!');

    //  Let's check out the response header anyway...
    Memo1.Lines.Add(http.LastResponseHeader);

  end
else
  begin

    //  Failed.  Show the last request header, response header,
    //  and response body.
    Memo1.Lines.Add(http.LastHeader);
    Memo1.Lines.Add('---');
    Memo1.Lines.Add(http.LastResponseHeader);
    Memo1.Lines.Add('---');
    Memo1.Lines.Add(http.LastErrorText);

  end;
end;

 

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2007 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser