Sample code for 30+ languages & platforms
Visual FoxPro Requires Chilkat v11.0.0+

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loJsonToken
LOCAL loHttp
LOCAL loReq
LOCAL loFac
LOCAL loJpgBytes
LOCAL loResp
LOCAL loJsonResponse

lnSuccess = 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..
loJsonToken = CreateObject('Chilkat.JsonObject')
lnSuccess = loJsonToken.LoadFile("qa_data/tokens/twitter.json")

loHttp = CreateObject('Chilkat.Http')

*  Provide the OAuth 1.0a credentials:
loHttp.OAuth1 = 1
loHttp.OAuthConsumerKey = "TWITTER_CONSUMER_KEY"
loHttp.OAuthConsumerSecret = "TWITTER_CONSUMER_SECRET"
loHttp.OAuthToken = loJsonToken.StringOf("oauth_token")
loHttp.OAuthTokenSecret = loJsonToken.StringOf("oauth_token_secret")

loReq = CreateObject('Chilkat.HttpRequest')
loReq.HttpVerb = "POST"
loReq.ContentType = "multipart/form-data"
loReq.Path = "/1.1/media/upload.json"

loReq.AddHeader("Expect","100-continue")

*  Add a JPEG image file to the upload.
loFac = CreateObject('Chilkat.FileAccess')

loJpgBytes = loFac.ReadEntireFile("qa_data/jpg/starfish.jpg")
loReq.AddBytesForUpload("media","starfish.jpg",loJpgBytes)

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpSReq("upload.twitter.com",443,1,loReq,loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loJsonToken
    RELEASE loHttp
    RELEASE loReq
    RELEASE loFac
    RELEASE loResp
    CANCEL
ENDIF

loJsonResponse = CreateObject('Chilkat.JsonObject')
loJsonResponse.EmitCompact = 0
loJsonResponse.Load(loResp.BodyStr)

IF (loResp.StatusCode <> 200) THEN
    ? loJsonResponse.Emit()
    RELEASE loJsonToken
    RELEASE loHttp
    RELEASE loReq
    RELEASE loFac
    RELEASE loResp
    RELEASE loJsonResponse
    CANCEL
ENDIF

*  Show the successful response:
? loJsonResponse.Emit()
? "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:
? "media_id_string = " + loJsonResponse.StringOf("media_id_string")
? "size = " + STR(loJsonResponse.IntOf("size"))
? "image_type = " + loJsonResponse.StringOf("image.image_type")
? "height/width = " + STR(loJsonResponse.IntOf("image.w")) + "," + STR(loJsonResponse.IntOf("image.h"))

RELEASE loJsonToken
RELEASE loHttp
RELEASE loReq
RELEASE loFac
RELEASE loResp
RELEASE loJsonResponse