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