[Visual Basic] Full Source Class Twitter VB.NET

Use Visual Basic 2010

Đây là bộ source class giúp coder tích hợp twitter với chương trình visual basic tốt nhất hiện nay, xưa có một file xnet.dll cũng giúp ít cho code tương tác với twitter nhanh :D mình cũng có lợi dụng bộ mã nguồn đó để viết chương trình tương thích với twitter rồi đó :D


Anh em bạn bè nên sữ dụng bộ mã nguồn này để giúp tích hợp cho twitter nhanh nhất nha :D để có thể quản lý dữ liệu của người dùng trên twitter or tweet trên twitter một cách nhanh nhất. Đó là nhờ sự tư duy của coder hiện tại để khỏi mất công lên website tìm kiếm này nọ :D

Imports System.Security.Cryptography
Imports System.Text
Imports System.Net
Imports System.IO
Imports System.IO.Compression
Imports System.Windows.Forms

Public Class TwitterLib

Private Api_Response_Header As WebHeaderCollection
Private Base_Format As String
Private Method() As String = {"GET", "POST"}
Public chooseMethod As Integer = "0" 'User select 0(GET) or 1(POST)
Private oauth_signKey As String
Private oauth_baseString As String
Public oauth_consumer_key As String
Public oauth_consumer_secret As String
Private oauth_nonce As String = Convert.ToBase64String(New ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString())) & "AbCdEfKg" '32 bit string
Public oauth_resource_url As String
Private oauth_signature As String
Public oauth_signature_method As String = "HMAC-SHA1"
Private oauth_timestamp As String = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds
Public oauth_token As String
Public oauth_token_secret As String
Public oauth_version As String = "1.0"
Public oauth_host As String = "api.twitter.com"
Public count = "15"
Private workType() As String = {"Retrieval", "PostStatus"}
Public chooseWorkType As Integer = 0 'User select 0(Retrieval) or 1(PostStatus)
Public updateStatus As String = " "
Public limitation As String
Public rate_limit As String
Public utc_reset As String
Private _chars(,) As String = {{"%", "%25"}, {"$", "%24"}, {"&", "%26"}, {"+", "%2B"}, {",", "%2C"}, {"/", "%2F"}, {":", "%3A"}, {";", "%3B"}, {"=", "%3D"}, {"?", "%3F"}, {"@", "%40"}, {" ", "%20"}, {"\", "%22"}, {"<", "%3C"}, {">", "%3E"}, {"#", "%23"}, {"{", "%7B"}, {"}", "%7D"}, {"|", "%7C"}, {"\", "%5C"}, {"^", "%5E"}, {"~", "%7E"}, {"[", "%5B"}, {"]", "%5D"}, {"'", "%60"}}



Private Function Create_baseString(ByVal oauth_consumer_key As String, ByVal oauth_nonce As String, ByVal oauth_signature_method As String, ByVal oauth_timestamp As String, ByVal oauth_token As String, ByVal oauth_version As String) As String
Dim baseString As String
Try
Select Case workType(chooseWorkType)
Case "Retrieval"
Base_Format = "count={6}&oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" + "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}"
baseString = String.Format(Base_Format,
oauth_consumer_key,
oauth_nonce,
oauth_signature_method,
oauth_timestamp,
oauth_token,
oauth_version,
count
)
Return String.Concat(Method(chooseMethod) & "&", Uri.EscapeDataString(oauth_resource_url), "&", Uri.EscapeDataString(baseString))
Case "PostStatus"
Base_Format = "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" + "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&status={6}"
baseString = String.Format(Base_Format,
oauth_consumer_key,
oauth_nonce,
oauth_signature_method,
oauth_timestamp,
oauth_token,
oauth_version,
Uri.EscapeDataString(updateStatus)
)
Return String.Concat(Method(chooseMethod) & "&", Uri.EscapeDataString(oauth_resource_url), "&", Uri.EscapeDataString(baseString))
Case Else
MessageBox.Show("Some parameter wrong or not complete please check your syntax !! (Er.Code : x01)")
Return "zero"
End Select

Catch ex As Exception
Return "error occured when creating basestring"
End Try
End Function

Private Function Create_signKey(ByVal oauth_consumer_secret As String, ByVal oauth_token_secret As String) As String
Try
Return Uri.EscapeDataString(oauth_consumer_secret) & "&" & Uri.EscapeDataString(oauth_token_secret)
Catch ex As Exception
Return "error occured when creating signkey"
End Try
End Function

Private Function Create_Signature(ByVal oauth_signKey As String, ByVal oauth_baseString As String) As String
Try
Dim encryption
encryption = New HMACSHA1(ASCIIEncoding.ASCII.GetBytes(oauth_signKey))
Using (encryption)
Return Uri.EscapeDataString(Convert.ToBase64String(encryption.ComputeHash(ASCIIEncoding.ASCII.GetBytes(oauth_baseString))))
End Using
Catch ex As Exception
Return "error occured when creating signature"
End Try
End Function

Private Sub generateParameter(ByRef oauth_baseString As String, ByRef oauth_signKey As String, ByRef oauth_signature As String)
Try
oauth_baseString = Create_baseString(oauth_consumer_key, oauth_nonce, oauth_signature_method, oauth_timestamp, oauth_token, oauth_version)
oauth_signKey = Create_signKey(oauth_consumer_secret, oauth_token_secret)
oauth_signature = Create_Signature(oauth_signKey, oauth_baseString)
Catch ex As Exception
End Try
End Sub

Public Function EncodeText(ByVal url As String) As String
For i As Integer = 0 To _chars.GetUpperBound(0) - 1
url = url.Replace(_chars(i, 0), _chars(i, 1))
Next i
Return (url)
End Function

'Public Function Connect_Api_Twitter(ByVal oauth_resource_url As String, ByVal oauth_consumer_key As String, ByVal oauth_nonce As String, ByVal oauth_signature As String, ByVal oauth_signature_method As String, ByVal oauth_timestamp As String, ByVal oauth_token As String, ByVal oauth_version As String, ByRef Api_Response_Header As Object) As String
Public Function Connect_Api_Twitter() As String
Dim json As String
Dim reader As StreamReader
Dim myHttpWebResponse As HttpWebResponse
Dim myHttpWebRequest As HttpWebRequest
Dim myWebHeaderCollection As WebHeaderCollection
Dim responseStream As Stream

updateStatus = updateStatus.Replace("!", "")

Try
'Generate All Parameter
generateParameter(oauth_baseString, oauth_signKey, oauth_signature)

Select Case workType(chooseWorkType)
Case "Retrieval"
myHttpWebRequest = CType(WebRequest.Create(oauth_resource_url & "?count=" & count), HttpWebRequest)
Case "PostStatus"
myHttpWebRequest = CType(WebRequest.Create(oauth_resource_url & "?status=" & EncodeText(updateStatus)), HttpWebRequest)
Case Else
myHttpWebRequest = CType(WebRequest.Create(oauth_resource_url & "?count=" & count), HttpWebRequest)
End Select

myWebHeaderCollection = myHttpWebRequest.Headers
myHttpWebRequest.Method = Method(chooseMethod)
myHttpWebRequest.Host = oauth_host
'myHttpWebRequest.UserAgent = "Personal Application Learner"
myWebHeaderCollection.Add("Authorization: OAuth oauth_consumer_key=""" & oauth_consumer_key & """, oauth_nonce=""" & oauth_nonce & """, oauth_signature=""" & oauth_signature & """, oauth_signature_method=""" & oauth_signature_method & """, oauth_timestamp=""" & oauth_timestamp & """, oauth_token=""" & oauth_token & """, oauth_version=""" & oauth_version & """")
myWebHeaderCollection.Add("Accept-Encoding:gzip")
myHttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)

responseStream = myHttpWebResponse.GetResponseStream()
If (myHttpWebResponse.ContentEncoding.ToLower().Contains("gzip")) Then
responseStream = New GZipStream(responseStream, CompressionMode.Decompress)
ElseIf (myHttpWebResponse.ContentEncoding.ToLower().Contains("deflate")) Then
responseStream = New DeflateStream(responseStream, CompressionMode.Decompress)
End If
reader = New StreamReader(responseStream, Encoding.Default)
json = reader.ReadToEnd()
Api_Response_Header = myHttpWebResponse.Headers

'Return Json and Header
If workType(chooseWorkType) = "PostStatus" Then
'if using for post twitter then no response header from server
Else
limitation = Api_Response_Header.GetValues(14)(0)
rate_limit = Api_Response_Header.GetValues(15)(0)
utc_reset = Api_Response_Header.GetValues(16)(0)
End If

Return json
Catch ex As Exception
MessageBox.Show("Error Occured, please check your connection or parameter")
json = "Error Occured please check the connection or parameter !!"
Return "error"
End Try

End Function
End Class

Đây là tất cả thư viện Class Twitter Visual Basic của Mynotework