SEOMoz Linkscape API wrapper in VB.Net

SEOMoz have just released a Free API to get Link info & their MozRank for domains. Before you can use the API, go to SEOMoz to get your AccessID and SecretKey.

The code here borrows from the function aws_GetSignature that comes with the Amazon Webservice.


        Private Function dcMozRankGet(ByVal sWebSiteURL As String) As Decimal
                Dim sAccessID As String = "YourAccessID"
                Dim sSecretKey As String = "YourSecretKey"
                Dim lExpires As Long = DateDiff("s", DateSerial(1970, 1, 1), Now()) + 300
                Dim sSafeSignature As String
                Dim sURLToFetch As String
                Dim sResult As String

                sWebSiteURL = HttpUtility.UrlEncode(sWebSiteURL)
                sSafeSignature = Encode(sAccessID, lExpires, sSecretKey, vbLf)

                sURLToFetch = "http://lsapi.seomoz.com/linkscape/mozrank/" & _
                sWebSiteURL & "?AccessID=" & sAccessID & "&Expires=" & lExpires & _
                "&Signature=" & sSafeSignature

                sResult = sGetData(sURLToFetch)
                sResult = Mid$(sResult, InStr(sResult, """umrp"":") + 7)
                sResult = sResult.Split(",")(0)
                dcMozRankGet = CDec(sResult)
        End Function

        Public Function Encode(ByVal sAccessID As String, _
        ByVal lExpires As Long, _
        ByVal SecretAccessKey As String, ByVal Separator As String) As String

                Dim sAccessExpires As String
                sAccessExpires = sAccessID & Separator & lExpires

                Dim strSig_UTF8 As Byte()
                Dim strSignature As String
                Dim objUTF8Encoder As UTF8Encoding
                Dim objHMACSHA1 As HMACSHA1

                objUTF8Encoder = New UTF8Encoding()
                strSig_UTF8 = objUTF8Encoder.GetBytes(sAccessExpires)

                objHMACSHA1 = New HMACSHA1( _
                     objUTF8Encoder.GetBytes(SecretAccessKey))
                strSignature = Convert.ToBase64String _
                     (objHMACSHA1.ComputeHash( _
                     objUTF8Encoder.GetBytes( _
                     sAccessExpires.ToCharArray())))

                Encode = HttpUtility.UrlEncode(strSignature)

        End Function

        Public Function sGetData(ByVal sURL As String, _
Optional ByRef oCookies As CookieContainer = Nothing) As String

                Dim Writer As StreamWriter = Nothing
                Dim WebRequestObject As HttpWebRequest
                Dim sr As StreamReader
                Dim WebResponseObject As HttpWebResponse
                Dim sbResultsBuilder As New StringBuilder
                Dim sBuffer(8192) As Char
                Dim iRetChars As Integer

                WebRequestObject = CType(WebRequest.Create(sURL), HttpWebRequest)
                WebRequestObject.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"
                WebRequestObject.Method = "GET"
                WebRequestObject.Timeout = 55000
                WebRequestObject.ReadWriteTimeout = 55000
                WebRequestObject.AllowAutoRedirect = True

                If Not (oCookies Is Nothing) Then
                        WebRequestObject.CookieContainer = oCookies
                End If

                WebResponseObject = CType(WebRequestObject.GetResponse(), HttpWebResponse)

                sr = New StreamReader(WebResponseObject.GetResponseStream)

                Do
                        iRetChars = sr.Read(sBuffer, 0, sBuffer.Length)
                        If iRetChars > 0 Then
                                sbResultsBuilder.Append(sBuffer, 0, iRetChars)
                        End If
                Loop While iRetChars > 0
                sGetData = sbResultsBuilder.ToString

        End Function

An example call is:

dcYourRank = dcMozRankGet("www.seomoz.org")

This post brought to you by WeGotDomain.com - Over 10,000 Aged domains for sale!

Related posts:

  1. Getting Flights info from the Kayak API in ASP.Net
  2. Allowing special characters (forward slash, hash, asterisk etc) in ASP.Net MVC URL parameters
  3. Automate FireFox with ASP.net