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
(PureBasic) Emoji TweetDemonstrates posting a status update that includes an emoji character.
IncludeFile "CkStringBuilder.pb" IncludeFile "CkRest.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkOAuth1.pb" Procedure ChilkatExample() ; 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.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(json,"qa_data/tokens/twitter.json") rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf oauth1.i = CkOAuth1::ckCreate() If oauth1.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkOAuth1::setCkConsumerKey(oauth1, "TWITTER_CONSUMER_KEY") CkOAuth1::setCkConsumerSecret(oauth1, "TWITTER_CONSUMER_SECRET") CkOAuth1::setCkToken(oauth1, CkJsonObject::ckStringOf(json,"oauth_token")) CkOAuth1::setCkTokenSecret(oauth1, CkJsonObject::ckStringOf(json,"oauth_token_secret")) CkOAuth1::setCkSignatureMethod(oauth1, "HMAC-SHA1") CkOAuth1::ckGenNonce(oauth1,16) CkRest::ckSetAuthOAuth1(rest,oauth1,0) bAutoReconnect.i = 1 success = CkRest::ckConnect(rest,"api.twitter.com",443,1,bAutoReconnect) If success <> 1 Debug CkRest::ckLastErrorText(rest) CkJsonObject::ckDispose(json) CkRest::ckDispose(rest) CkOAuth1::ckDispose(oauth1) ProcedureReturn EndIf ; 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.i = CkStringBuilder::ckCreate() If sbText.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringBuilder::ckLoadFile(sbText,"qa_data/txt/ghost_emoji.txt","utf-8") CkStringBuilder::ckPrepend(sbText,"Test tweet using two emoji chars: ") ; Send a tweet... CkRest::ckClearAllQueryParams(rest) CkRest::ckAddQueryParam(rest,"status",CkStringBuilder::ckGetAsString(sbText)) resp.s = CkRest::ckFullRequestFormUrlEncoded(rest,"POST","/1.1/statuses/update.json") If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkJsonObject::ckDispose(json) CkRest::ckDispose(rest) CkOAuth1::ckDispose(oauth1) CkStringBuilder::ckDispose(sbText) ProcedureReturn EndIf jsonResponse.i = CkJsonObject::ckCreate() If jsonResponse.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::setCkEmitCompact(jsonResponse, 0) CkJsonObject::ckLoad(jsonResponse,resp) If CkRest::ckResponseStatusCode(rest) <> 200 Debug CkJsonObject::ckEmit(jsonResponse) CkJsonObject::ckDispose(json) CkRest::ckDispose(rest) CkOAuth1::ckDispose(oauth1) CkStringBuilder::ckDispose(sbText) CkJsonObject::ckDispose(jsonResponse) ProcedureReturn EndIf ; Show the successful response: Debug CkJsonObject::ckEmit(jsonResponse) Debug "Success." CkJsonObject::ckDispose(json) CkRest::ckDispose(rest) CkOAuth1::ckDispose(oauth1) CkStringBuilder::ckDispose(sbText) CkJsonObject::ckDispose(jsonResponse) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.