Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) Emoji TweetDemonstrates posting a status update that includes an emoji character.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, OAuth1, Rest, JsonObject, StringBuilder; ... procedure TForm1.Button1Click(Sender: TObject); var json: HCkJsonObject; success: Boolean; rest: HCkRest; oauth1: HCkOAuth1; bAutoReconnect: Boolean; sbText: HCkStringBuilder; resp: PWideChar; jsonResponse: HCkJsonObject; begin // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // ---------------------------------------------------------------------- // This initial setup, which involves setting the OAuth1 properties and connecting // to api.twitter.com, is only required once at the beginning. Once connected, the same // object instance may be re-used, and if necessary, it will automatically reconnect // as needed. // Assume we've previously obtained an access token and saved it to a JSON file.. json := CkJsonObject_Create(); success := CkJsonObject_LoadFile(json,'qa_data/tokens/twitter.json'); rest := CkRest_Create(); oauth1 := CkOAuth1_Create(); CkOAuth1_putConsumerKey(oauth1,'TWITTER_CONSUMER_KEY'); CkOAuth1_putConsumerSecret(oauth1,'TWITTER_CONSUMER_SECRET'); CkOAuth1_putToken(oauth1,CkJsonObject__stringOf(json,'oauth_token')); CkOAuth1_putTokenSecret(oauth1,CkJsonObject__stringOf(json,'oauth_token_secret')); CkOAuth1_putSignatureMethod(oauth1,'HMAC-SHA1'); CkOAuth1_GenNonce(oauth1,16); CkRest_SetAuthOAuth1(rest,oauth1,False); bAutoReconnect := True; success := CkRest_Connect(rest,'api.twitter.com',443,True,bAutoReconnect); if (success <> True) then begin Memo1.Lines.Add(CkRest__lastErrorText(rest)); Exit; end; // This ends the initial setup... // ---------------------------------------------------------------------- // For this example, I've pre-created a text file containing two emoji // characters (the "ghost" emoji, and a "face savouring delicious food" emoji). // This text file was saved using the utf-8 encoding. // The utf-8 bytes for the ghost emoji are 0x9f 0x91 0xbb. (Note: This is the utf-8 // representation that does not use surrogate pairs.) // // The utf-8 bytes for the "face savouring delicious food" emoji are \xF0\x9F\x98\x8B. sbText := CkStringBuilder_Create(); CkStringBuilder_LoadFile(sbText,'qa_data/txt/ghost_emoji.txt','utf-8'); CkStringBuilder_Prepend(sbText,'Test tweet using two emoji chars: '); // Send a tweet... CkRest_ClearAllQueryParams(rest); CkRest_AddQueryParam(rest,'status',CkStringBuilder__getAsString(sbText)); resp := CkRest__fullRequestFormUrlEncoded(rest,'POST','/1.1/statuses/update.json'); if (CkRest_getLastMethodSuccess(rest) <> True) then begin Memo1.Lines.Add(CkRest__lastErrorText(rest)); Exit; end; jsonResponse := CkJsonObject_Create(); CkJsonObject_putEmitCompact(jsonResponse,False); CkJsonObject_Load(jsonResponse,resp); if (CkRest_getResponseStatusCode(rest) <> 200) then begin Memo1.Lines.Add(CkJsonObject__emit(jsonResponse)); Exit; end; // Show the successful response: Memo1.Lines.Add(CkJsonObject__emit(jsonResponse)); Memo1.Lines.Add('Success.'); CkJsonObject_Dispose(json); CkRest_Dispose(rest); CkOAuth1_Dispose(oauth1); CkStringBuilder_Dispose(sbText); CkJsonObject_Dispose(jsonResponse); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.