PureBasic Requires Chilkat v11.0.0+
PureBasic
Upload Media to Twitter
Demonstrates uploading image or video files to Twitter. After uploading, the media_id can be used to attach the uploaded media to a tweet.This example is deprecated and no longer valid.
Chilkat PureBasic Downloads
IncludeFile "CkFileAccess.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkHttpRequest.pb"
IncludeFile "CkHttpResponse.pb"
Procedure ChilkatExample()
success.i = 0
; It requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; Assume we've previously obtained an access token and saved it to a JSON file..
jsonToken.i = CkJsonObject::ckCreate()
If jsonToken.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/twitter.json")
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Provide the OAuth 1.0a credentials:
CkHttp::setCkOAuth1(http, 1)
CkHttp::setCkOAuthConsumerKey(http, "TWITTER_CONSUMER_KEY")
CkHttp::setCkOAuthConsumerSecret(http, "TWITTER_CONSUMER_SECRET")
CkHttp::setCkOAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"oauth_token"))
CkHttp::setCkOAuthTokenSecret(http, CkJsonObject::ckStringOf(jsonToken,"oauth_token_secret"))
req.i = CkHttpRequest::ckCreate()
If req.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHttpRequest::setCkHttpVerb(req, "POST")
CkHttpRequest::setCkContentType(req, "multipart/form-data")
CkHttpRequest::setCkPath(req, "/1.1/media/upload.json")
CkHttpRequest::ckAddHeader(req,"Expect","100-continue")
; Add a JPEG image file to the upload.
fac.i = CkFileAccess::ckCreate()
If fac.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
ERROR - PureBasic is an array language
jpgBytes = CkFileAccess::ckReadEntireFile(fac,"qa_data/jpg/starfish.jpg")
CkHttpRequest::ckAddBytesForUpload(req,"media","starfish.jpg",jpgBytes)
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpSReq(http,"upload.twitter.com",443,1,req,resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkJsonObject::ckDispose(jsonToken)
CkHttp::ckDispose(http)
CkHttpRequest::ckDispose(req)
CkFileAccess::ckDispose(fac)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
jsonResponse.i = CkJsonObject::ckCreate()
If jsonResponse.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::setCkEmitCompact(jsonResponse, 0)
CkJsonObject::ckLoad(jsonResponse,CkHttpResponse::ckBodyStr(resp))
If CkHttpResponse::ckStatusCode(resp) <> 200
Debug CkJsonObject::ckEmit(jsonResponse)
CkJsonObject::ckDispose(jsonToken)
CkHttp::ckDispose(http)
CkHttpRequest::ckDispose(req)
CkFileAccess::ckDispose(fac)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jsonResponse)
ProcedureReturn
EndIf
; Show the successful response:
Debug CkJsonObject::ckEmit(jsonResponse)
Debug "Success."
; A successful JSON response looks like this:
; {
; "media_id": 793137045996646400,
; "media_id_string": "793137045996646400",
; "size": 6229,
; "expires_after_secs": 86400,
; "image": {
; "image_type": "image\/jpeg",
; "w": 120,
; "h": 120
; }
; }
;
; Get the information from the JSON:
Debug "media_id_string = " + CkJsonObject::ckStringOf(jsonResponse,"media_id_string")
Debug "size = " + Str(CkJsonObject::ckIntOf(jsonResponse,"size"))
Debug "image_type = " + CkJsonObject::ckStringOf(jsonResponse,"image.image_type")
Debug "height/width = " + Str(CkJsonObject::ckIntOf(jsonResponse,"image.w")) + "," + Str(CkJsonObject::ckIntOf(jsonResponse,"image.h"))
CkJsonObject::ckDispose(jsonToken)
CkHttp::ckDispose(http)
CkHttpRequest::ckDispose(req)
CkFileAccess::ckDispose(fac)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jsonResponse)
ProcedureReturn
EndProcedure