PureBasic
PureBasic
Emoji Tweet
Demonstrates posting a status update that includes an emoji character.This example is deprecated and no longer valid.
Chilkat PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkRest.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkOAuth1.pb"
Procedure ChilkatExample()
success.i = 0
; 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 = 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