Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicCkPythonChilkat2-PythonRubySQL ServerSwift 2Swift 3/4TclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcelGo

Unicode C Web API Examples

Primary Categories

CardConnect
Facebook
GeoOp
Jira
Microsoft Calendar
PayPal
Peoplevox

QuickBooks
Shopify
Stripe
SugarCRM
Twitter
VoiceBase
Walmart
Xero
eBay
effectconnect

 

 

 

(Unicode C) Emoji Tweet

Demonstrates posting a status update that includes an emoji character.

Chilkat C/C++ Library Downloads

MS Visual C/C++

Linux/CentOS C/C++

Alpine Linux C/C++

MAC OS X C/C++

armhf/aarch64 C/C++

C++ Builder

iOS C/C++

Android C/C++

Win Mobile 5.0/Pocket PC 2003

Solaris C/C++

FreeBSD C/C++

OpenBSD C/C++

MinGW C/C++

#include <C_CkJsonObjectW.h>
#include <C_CkRestW.h>
#include <C_CkOAuth1W.h>
#include <C_CkStringBuilderW.h>

void ChilkatSample(void)
    {
    HCkJsonObjectW json;
    BOOL success;
    HCkRestW rest;
    HCkOAuth1W oauth1;
    BOOL bAutoReconnect;
    HCkStringBuilderW sbText;
    const wchar_t *resp;
    HCkJsonObjectW jsonResponse;

    // 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 = CkJsonObjectW_Create();
    success = CkJsonObjectW_LoadFile(json,L"qa_data/tokens/twitter.json");

    rest = CkRestW_Create();
    oauth1 = CkOAuth1W_Create();

    CkOAuth1W_putConsumerKey(oauth1,L"TWITTER_CONSUMER_KEY");
    CkOAuth1W_putConsumerSecret(oauth1,L"TWITTER_CONSUMER_SECRET");
    CkOAuth1W_putToken(oauth1,CkJsonObjectW_stringOf(json,L"oauth_token"));
    CkOAuth1W_putTokenSecret(oauth1,CkJsonObjectW_stringOf(json,L"oauth_token_secret"));
    CkOAuth1W_putSignatureMethod(oauth1,L"HMAC-SHA1");
    CkOAuth1W_GenNonce(oauth1,16);

    CkRestW_SetAuthOAuth1(rest,oauth1,FALSE);

    bAutoReconnect = TRUE;
    success = CkRestW_Connect(rest,L"api.twitter.com",443,TRUE,bAutoReconnect);
    if (success != TRUE) {
        wprintf(L"%s\n",CkRestW_lastErrorText(rest));
        CkJsonObjectW_Dispose(json);
        CkRestW_Dispose(rest);
        CkOAuth1W_Dispose(oauth1);
        return;
    }

    // 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 = CkStringBuilderW_Create();
    CkStringBuilderW_LoadFile(sbText,L"qa_data/txt/ghost_emoji.txt",L"utf-8");
    CkStringBuilderW_Prepend(sbText,L"Test tweet using two emoji chars: ");

    // Send a tweet...
    CkRestW_ClearAllQueryParams(rest);
    CkRestW_AddQueryParam(rest,L"status",CkStringBuilderW_getAsString(sbText));
    resp = CkRestW_fullRequestFormUrlEncoded(rest,L"POST",L"/1.1/statuses/update.json");
    if (CkRestW_getLastMethodSuccess(rest) != TRUE) {
        wprintf(L"%s\n",CkRestW_lastErrorText(rest));
        CkJsonObjectW_Dispose(json);
        CkRestW_Dispose(rest);
        CkOAuth1W_Dispose(oauth1);
        CkStringBuilderW_Dispose(sbText);
        return;
    }

    jsonResponse = CkJsonObjectW_Create();
    CkJsonObjectW_putEmitCompact(jsonResponse,FALSE);
    CkJsonObjectW_Load(jsonResponse,resp);

    if (CkRestW_getResponseStatusCode(rest) != 200) {
        wprintf(L"%s\n",CkJsonObjectW_emit(jsonResponse));
        CkJsonObjectW_Dispose(json);
        CkRestW_Dispose(rest);
        CkOAuth1W_Dispose(oauth1);
        CkStringBuilderW_Dispose(sbText);
        CkJsonObjectW_Dispose(jsonResponse);
        return;
    }

    // Show the successful response:
    wprintf(L"%s\n",CkJsonObjectW_emit(jsonResponse));
    wprintf(L"Success.\n");


    CkJsonObjectW_Dispose(json);
    CkRestW_Dispose(rest);
    CkOAuth1W_Dispose(oauth1);
    CkStringBuilderW_Dispose(sbText);
    CkJsonObjectW_Dispose(jsonResponse);

    }

 

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