PDA

Ver la Versión Completa : [Sintaxis] Twitter + OO Cobol


Kuk
22 de febrero de 2017, 12:40
Ejemplo de Eslopes de cómo Tweetear desde 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.



CLASS-ID. TwitterPost AS "CoolThings.TwitterPost".
environment division.
configuration section.
repository.
class SystemWebHttpUtility as "System.Web.HttpUtility"
class SystemString as "System.String"
class SystemInteger as "System.Int32"
class NetworkCredential as "System.Net.NetworkCredential"
class NetWebRequest as "System.Net.WebRequest"
class NetWebResponse as "System.Net.WebResponse"
class WebHeaderCollection as "System.Net.WebHeaderCollection"
class ClassByteArray as "System.Byte[]"
class SystemTextEncoding as "System.Text.Encoding"
class SystemIOStream as "System.IO.Stream"
class SystemIOStreamReader as "System.IO.StreamReader"
class ClassServicePointManager as "System.Net.ServicePointManager"

class ClassWebException as "System.Net.WebException"

property Credentials as "Credentials"
property ContentType as "ContentType"
property ContentLenght as "ContentLength"
property ArrayLength as "Length"
property RequestMethod as "Method"
property Headers as "Headers"
property Expect100Continue as "Expect100Continue".

*> Instance's data and methods
object.
data division.
working-storage section.

procedure division.
method-id. PostRequest as "PostRequest".

data division.

working-storage section.

01 WebHttpUtility usage object reference SystemWebHttpUtility.
01 servicePointManager usage object reference ClassServicePointManager.
01 request usage object reference NetWebRequest.
01 response usage object reference NetWebResponse.
01 requestCredential usage object reference NetworkCredential.
01 requestHeaders usage object reference WebHeaderCollection.
01 byteArray usage object reference ClassByteArray.
01 utf8Encoding usage object reference SystemTextEncoding.
01 requestStream usage object reference SystemIOStream.
01 responseStream usage object reference SystemIOStream.
01 reader usage object reference SystemIOStreamReader.
01 bytesLength usage object reference SystemInteger.

01 webException usage object reference ClassWebException.

01 twitterSTatus usage object reference SystemString.

linkage section.
01 url usage object reference SystemString.
01 userName usage object reference SystemString.
01 userPassword usage object reference SystemString.
01 userText usage object reference SystemString.
01 result usage object reference SystemString.

procedure division using url, userName, UserPassword, userText returning result.

*> Twitter Dishing Out 417 Word Entropy (http://blogs.msdn.com/shitals/archive/2008/12/27/9254245.aspx)

set Expect100Continue of ClassServicePointManager to b"0"

invoke NetWebRequest "Create" using url returning request

invoke NetworkCredential "NEW" using userName, userPassword returning requestCredential

set Credentials of request to requestCredential
set ContentType of request to "application/x-www-form-urlencoded"
set RequestMethod of request to "POST"

set requestHeaders to Headers of request

invoke requestHeaders "Add" using "X-Twitter-Client", "OO Cobol"
invoke requestHeaders "Add" using "X-Twitter-Version", "1.0"
invoke requestHeaders "Add" using "X-Twitter-URL", "http://www.100coolthings.net"

invoke SystemTextEncoding "GetEncoding" using n"UTF-8" returning utf8Encoding
invoke SystemWebHttpUtility "UrlEncode" using userText returning userText

set twitterStatus to SystemString::"Concat"("status=", userText)

invoke utf8Encoding "GetBytes" using twitterStatus returning byteArray

set ContentLenght of request to ArrayLength of byteArray
invoke request "GetRequestStream" returning requestStream

set bytesLength to ArrayLength of byteArray

invoke requestStream "Write" using byteArray, 0, bytesLength
try
invoke request "GetResponse" returning response

catch webException
continue
end-try

invoke response "GetResponseStream" returning responseStream

invoke SystemIOStreamReader "NEW" using responseStream returning reader

invoke reader "ReadToEnd" returning result.
end method PostRequest.
end object.
END CLASS TwitterPost.