Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
Add Comment
Please, Sign In to add comment