Guest User

[VB] Full Source Class Twitter - HungVB.Com

a guest
Sep 23rd, 2021
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 8.97 KB | None | 0 0
  1. Imports System.Security.Cryptography
  2. Imports System.Text
  3. Imports System.Net
  4. Imports System.IO
  5. Imports System.IO.Compression
  6. Imports System.Windows.Forms
  7.  
  8. Public Class TwitterLib
  9.  
  10.     Private Api_Response_Header As WebHeaderCollection
  11.     Private Base_Format As String
  12.     Private Method() As String = {"GET", "POST"}
  13.     Public chooseMethod As Integer = "0" 'User select 0(GET) or 1(POST)
  14.     Private oauth_signKey As String
  15.     Private oauth_baseString As String
  16.     Public oauth_consumer_key As String
  17.     Public oauth_consumer_secret As String
  18.     Private oauth_nonce As String = Convert.ToBase64String(New ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString())) & "AbCdEfKg" '32 bit string
  19.     Public oauth_resource_url As String
  20.     Private oauth_signature As String
  21.     Public oauth_signature_method As String = "HMAC-SHA1"
  22.     Private oauth_timestamp As String = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds
  23.     Public oauth_token As String
  24.     Public oauth_token_secret As String
  25.     Public oauth_version As String = "1.0"
  26.     Public oauth_host As String = "api.twitter.com"
  27.     Public count = "15"
  28.     Private workType() As String = {"Retrieval", "PostStatus"}
  29.     Public chooseWorkType As Integer = 0 'User select 0(Retrieval) or 1(PostStatus)
  30.     Public updateStatus As String = " "
  31.     Public limitation As String
  32.     Public rate_limit As String
  33.     Public utc_reset As String
  34.     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"}}
  35.  
  36.  
  37.  
  38.     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
  39.         Dim baseString As String
  40.         Try
  41.             Select Case workType(chooseWorkType)
  42.                 Case "Retrieval"
  43.                     Base_Format = "count={6}&oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" + "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}"
  44.                     baseString = String.Format(Base_Format,
  45.                     oauth_consumer_key,
  46.                     oauth_nonce,
  47.                     oauth_signature_method,
  48.                     oauth_timestamp,
  49.                     oauth_token,
  50.                     oauth_version,
  51.                     count
  52.                     )
  53.                     Return String.Concat(Method(chooseMethod) & "&", Uri.EscapeDataString(oauth_resource_url), "&", Uri.EscapeDataString(baseString))
  54.                 Case "PostStatus"
  55.                     Base_Format = "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" + "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&status={6}"
  56.                     baseString = String.Format(Base_Format,
  57.                     oauth_consumer_key,
  58.                     oauth_nonce,
  59.                     oauth_signature_method,
  60.                     oauth_timestamp,
  61.                     oauth_token,
  62.                     oauth_version,
  63.                     Uri.EscapeDataString(updateStatus)
  64.                     )
  65.                     Return String.Concat(Method(chooseMethod) & "&", Uri.EscapeDataString(oauth_resource_url), "&", Uri.EscapeDataString(baseString))
  66.                 Case Else
  67.                     MessageBox.Show("Some parameter wrong or not complete please check your syntax !! (Er.Code : x01)")
  68.                     Return "zero"
  69.             End Select
  70.  
  71.         Catch ex As Exception
  72.             Return "error occured when creating basestring"
  73.         End Try
  74.     End Function
  75.  
  76.     Private Function Create_signKey(ByVal oauth_consumer_secret As String, ByVal oauth_token_secret As String) As String
  77.         Try
  78.             Return Uri.EscapeDataString(oauth_consumer_secret) & "&" & Uri.EscapeDataString(oauth_token_secret)
  79.         Catch ex As Exception
  80.             Return "error occured when creating signkey"
  81.         End Try
  82.     End Function
  83.  
  84.     Private Function Create_Signature(ByVal oauth_signKey As String, ByVal oauth_baseString As String) As String
  85.         Try
  86.             Dim encryption
  87.             encryption = New HMACSHA1(ASCIIEncoding.ASCII.GetBytes(oauth_signKey))
  88.             Using (encryption)
  89.                 Return Uri.EscapeDataString(Convert.ToBase64String(encryption.ComputeHash(ASCIIEncoding.ASCII.GetBytes(oauth_baseString))))
  90.             End Using
  91.         Catch ex As Exception
  92.             Return "error occured when creating signature"
  93.         End Try
  94.     End Function
  95.  
  96.     Private Sub generateParameter(ByRef oauth_baseString As String, ByRef oauth_signKey As String, ByRef oauth_signature As String)
  97.         Try
  98.             oauth_baseString = Create_baseString(oauth_consumer_key, oauth_nonce, oauth_signature_method, oauth_timestamp, oauth_token, oauth_version)
  99.             oauth_signKey = Create_signKey(oauth_consumer_secret, oauth_token_secret)
  100.             oauth_signature = Create_Signature(oauth_signKey, oauth_baseString)
  101.         Catch ex As Exception
  102.         End Try
  103.     End Sub
  104.  
  105.     Public Function EncodeText(ByVal url As String) As String
  106.         For i As Integer = 0 To _chars.GetUpperBound(0) - 1
  107.             url = url.Replace(_chars(i, 0), _chars(i, 1))
  108.         Next i
  109.         Return (url)
  110.     End Function
  111.  
  112.     '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
  113.     Public Function Connect_Api_Twitter() As String
  114.         Dim json As String
  115.         Dim reader As StreamReader
  116.         Dim myHttpWebResponse As HttpWebResponse
  117.         Dim myHttpWebRequest As HttpWebRequest
  118.         Dim myWebHeaderCollection As WebHeaderCollection
  119.         Dim responseStream As Stream
  120.  
  121.         updateStatus = updateStatus.Replace("!", "")
  122.  
  123.         Try
  124.             'Generate All Parameter
  125.             generateParameter(oauth_baseString, oauth_signKey, oauth_signature)
  126.  
  127.             Select Case workType(chooseWorkType)
  128.                 Case "Retrieval"
  129.                     myHttpWebRequest = CType(WebRequest.Create(oauth_resource_url & "?count=" & count), HttpWebRequest)
  130.                 Case "PostStatus"
  131.                     myHttpWebRequest = CType(WebRequest.Create(oauth_resource_url & "?status=" & EncodeText(updateStatus)), HttpWebRequest)
  132.                 Case Else
  133.                     myHttpWebRequest = CType(WebRequest.Create(oauth_resource_url & "?count=" & count), HttpWebRequest)
  134.             End Select
  135.  
  136.             myWebHeaderCollection = myHttpWebRequest.Headers
  137.             myHttpWebRequest.Method = Method(chooseMethod)
  138.             myHttpWebRequest.Host = oauth_host
  139.             'myHttpWebRequest.UserAgent = "Personal Application Learner"
  140.             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 & """")
  141.             myWebHeaderCollection.Add("Accept-Encoding:gzip")
  142.             myHttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
  143.  
  144.             responseStream = myHttpWebResponse.GetResponseStream()
  145.             If (myHttpWebResponse.ContentEncoding.ToLower().Contains("gzip")) Then
  146.                 responseStream = New GZipStream(responseStream, CompressionMode.Decompress)
  147.             ElseIf (myHttpWebResponse.ContentEncoding.ToLower().Contains("deflate")) Then
  148.                 responseStream = New DeflateStream(responseStream, CompressionMode.Decompress)
  149.             End If
  150.             reader = New StreamReader(responseStream, Encoding.Default)
  151.             json = reader.ReadToEnd()
  152.             Api_Response_Header = myHttpWebResponse.Headers
  153.  
  154.             'Return Json and Header
  155.             If workType(chooseWorkType) = "PostStatus" Then
  156.                 'if using for post twitter then no response header from server
  157.             Else
  158.                 limitation = Api_Response_Header.GetValues(14)(0)
  159.                 rate_limit = Api_Response_Header.GetValues(15)(0)
  160.                 utc_reset = Api_Response_Header.GetValues(16)(0)
  161.             End If
  162.  
  163.             Return json
  164.         Catch ex As Exception
  165.             MessageBox.Show("Error Occured, please check your connection or parameter")
  166.             json = "Error Occured please check the connection or parameter !!"
  167.             Return "error"
  168.         End Try
  169.  
  170.     End Function
  171. End Class
Add Comment
Please, Sign In to add comment