Register  Login
OO Cobol Examples » Web 2.0 » Twitter+Cobol
 

Sponsors


Twitter + Cobol (OO Cobol)

Microblogging popularity is going up like a rocket, but what about use it as a handy tool for business? For instance, what if your apps could tell you that something went wrong during a lengthy process? Or maybe your order processing system could request proposals when a product stock level is too low!

Here is an example of how to post messages on Twitter using nothing but OO Cobol.

  

 1:  CLASS-ID. TwitterPost AS "CoolThings.TwitterPost".
 2:      environment division.
 3:          configuration section.
 4:              repository.
 5:                  class     SystemWebHttpUtility      as "System.Web.HttpUtility"
 6:                  class     SystemString              as "System.String"
 7:                  class     SystemInteger             as "System.Int32"
 8:                  class     NetworkCredential         as "System.Net.NetworkCredential"
 9:                  class     NetWebRequest             as "System.Net.WebRequest"
 10:                  class     NetWebResponse            as "System.Net.WebResponse"
 11:                  class     WebHeaderCollection       as "System.Net.WebHeaderCollection"
 12:                  class     ClassByteArray            as "System.Byte[]"
 13:                  class     SystemTextEncoding        as "System.Text.Encoding"
 14:                  class     SystemIOStream            as "System.IO.Stream"
 15:                  class     SystemIOStreamReader      as "System.IO.StreamReader"
 16:                  class     ClassServicePointManager  as "System.Net.ServicePointManager"
 17:                  
 18:                  class     ClassWebException         as "System.Net.WebException"
 19:                  
 20:                  property  Credentials               as "Credentials"
 21:                  property  ContentType               as "ContentType"
 22:                  property  ContentLenght             as "ContentLength"
 23:                  property  ArrayLength               as "Length"
 24:                  property  RequestMethod             as "Method"
 25:                  property  Headers                   as "Headers"
 26:                  property  Expect100Continue         as "Expect100Continue".
 27:                  
 28:   *> Instance's data and methods
 29:      object.
 30:         data division.
 31:              working-storage section.
 32:        
 33:         procedure division.
 34:               method-id. PostRequest as "PostRequest".  
 35:              
 36:                   data division.
 37:                      
 38:                       working-storage section.
 39:                      
 40:                       01 WebHttpUtility        usage object reference SystemWebHttpUtility.
 41:                       01 servicePointManager   usage object reference ClassServicePointManager.
 42:                       01 request               usage object reference NetWebRequest.
 43:                       01 response              usage object reference NetWebResponse.
 44:                       01 requestCredential     usage object reference NetworkCredential.
 45:                       01 requestHeaders        usage object reference WebHeaderCollection.
 46:                       01 byteArray             usage object reference ClassByteArray.
 47:                       01 utf8Encoding          usage object reference SystemTextEncoding.
 48:                       01 requestStream         usage object reference SystemIOStream.
 49:                       01 responseStream        usage object reference SystemIOStream.
 50:                       01 reader                usage object reference SystemIOStreamReader.
 51:                       01 bytesLength           usage object reference SystemInteger.
 52:                      
 53:                       01 webException          usage object reference ClassWebException.
 54:                      
 55:                       01 twitterSTatus         usage object reference SystemString.
 56:                      
 57:                       linkage section.
 58:                       01 url                usage object reference SystemString.
 59:                       01 userName           usage object reference SystemString.
 60:                       01 userPassword       usage object reference SystemString.
 61:                       01 userText           usage object reference SystemString.
 62:                       01 result             usage object reference SystemString.
 63:              
 64:                   procedure division using url, userName, UserPassword, userText returning result.
 65:                  
 66:                       *> http://blogs.msdn.com/shitals/archive/2008/12/27/9254245.aspx
 67:                      
 68:                       set Expect100Continue of ClassServicePointManager   to   b"0"
 69:                      
 70:                       invoke NetWebRequest "Create" using url returning request
 71:                      
 72:                       invoke NetworkCredential "NEW" using userName, userPassword returning requestCredential
 73:                      
 74:                       set    Credentials   of request   to  requestCredential
 75:                       set    ContentType   of request   to  "application/x-www-form-urlencoded"
 76:                       set    RequestMethod of request   to  "POST"
 77:                      
 78:                       set    requestHeaders             to  Headers of request
 79:                      
 80:                       invoke requestHeaders "Add" using "X-Twitter-Client",  "OO Cobol"  
 81:                       invoke requestHeaders "Add" using "X-Twitter-Version", "1.0"  
 82:                       invoke requestHeaders "Add" using "X-Twitter-URL",     "http://www.100coolthings.net"  
 83:                      
 84:                       invoke SystemTextEncoding "GetEncoding" using n"UTF-8" returning utf8Encoding
 85:                       invoke SystemWebHttpUtility "UrlEncode" using userText returning userText
 86:                      
 87:                       set    twitterStatus  to  SystemString::"Concat"("status=", userText)
 88:                      
 89:                       invoke utf8Encoding "GetBytes" using twitterStatus returning byteArray  
 90:                      
 91:                       set    ContentLenght of request   to  ArrayLength of byteArray
 92:                       invoke request "GetRequestStream" returning requestStream
 93:                      
 94:                       set    bytesLength                to  ArrayLength of byteArray
 95:                      
 96:                       invoke requestStream "Write" using byteArray, 0, bytesLength
 97:                       try
 98:                           invoke request "GetResponse" returning response
 99:                      
 100:                       catch webException
 101:                             continue
 102:                       end-try
 103:                    
 104:                       invoke response "GetResponseStream" returning responseStream
 105:                      
 106:                       invoke SystemIOStreamReader "NEW" using responseStream returning reader
 107:                      
 108:                       invoke reader "ReadToEnd" returning result.
 109:              end method PostRequest.              
 110:      end object.
 111:  END CLASS TwitterPost.        

Download the code: http://cobolrocks.codeplex.com/sourcecontrol/changeset/view/43284?projectName=cobolRocks#751931

 
 
 
 
Creative Commons License The text of this site is licensed under a Creative Commons License.

 

 

ChtNt.Comments

 Name  
 Email
 Comment  
CAPTCHA image
Enter the code shown above

Terms Of Use | Privacy Statement | Copyright 2009-2010 by RedRailsDynnamite DotNetNuke Skins & Modules