Using System;
Using System. Net;
Namespace BLL
{
/// <Summary>
/// Download the html content class of the Information url
/// </Summary>
Public class Net
{
Public static string GetHtml (string url)
{
String html = "";
WebClient wc = new WebClient ();
Try {html = wc. DownloadString (url );}
Catch {}
Return html;
}
}
/// <Summary>
/// Retrieve the google pageran class
/// </Summary>
Public class GooglePR
{
Public static string GetPageRank (string strUrl)
{
String sURL = "http://toolbarqueries.google.com/search? Client = navclient-auto & ch = "+ GetPR (strUrl) +" & ie = UTF-8 & oe = UTF-8 & features = Rank & q = info: "+ System. web. httpUtility. urlEncode (strUrl );
String result = Net. GetHtml (sURL );
If (result! = Null)
{
Result = result. Trim ();
If (result. IndexOf (':')> 0)
{
String [] pr = result. Split (':');
If (pr. Length = 3) return pr [2]. ToString ();
}
}
Return "0 ";
}
Private static string GetPR (string url)
{
Url = "info:" + url;
String ch = GoogleCH (str_asc (url). ToString ();
Ch = "6" + ch;
Return ch;
}
Private static int [] str_asc (string str)
{
If (str = null | str = string. Empty) return null;
Int [] result = new int [str. Length];
For (int I = 0; I <str. Length; I ++) result [I] = (int) str [I];
Return result;
}
Private static long yiweitwo (long a, long B)
{
Long z = 0x80000000;
If (z & )! = 0)
{
A = (a> 1 );
A & = (~ Z );
A | = 0x40000000;
A = (int) a> (int) (B-1 ));
}
Else
{
A = (int) a> (int) B );
}
Return;
}
Private static int [] yiwei (long a, long B, long c)
{
A-= B; a-= c; a ^ = (yiweitwo (c, 13 ));
B-= c; B-= a; B ^ = (a <8 );
C-= a; c-= B; c ^ = (yiweitwo (B, 13 ));
A-= B; a-= c; a ^ = (yiweitwo (c, 12 ));
B-= c; B-= a; B ^ = (a <16 );
C-= a; c-= B; c ^ = (yiweitwo (B, 5 ));
A-= B; a-= c; a ^ = (yiweitwo (c, 3 ));
B-= c; B-= a; B ^ = (a <10 );
C-= a; c-= B; c ^ = (yiweitwo (B, 15 ));
Return new int [] {(int) a, (int) B, (int) c };
}
Private static int GoogleCH (int [] url)
{
Int length = url. Length;
Long a = 0x9E3779B9;
Long B = 0x9E3779B9;
Long c = 0xE6359A60;
Int k = 0;
Int len = length;
Int [] mid;
While (len> = 12)
{
A + = (url [k + 0] + (url [k + 1] <8) + (url [k + 2] <16) + (url [k + 3] <24 ));
B + = (url [k + 4] + (url [k + 5] <8) + (url [k + 6] <16) + (url [k + 7] <24 ));
C + = (url [k + 8] + (url [k + 9] <8) + (url [k + 10] <16) + (url [k + 11] <24 ));
Mid = yiwei (a, B, c );
A = mid [0]; B = mid [1]; c = mid [2];
K + = 12;
Len-= 12;
}
C + = length;
Switch (len)
{
Case 11:
{
C + = (url [k + 10] <24 );
C + = (url [k + 9] <16 );
C + = (url [k + 8] <8 );
B + = (url [k + 7] <24 );
B + = (url [k + 6] <16 );
B + = (url [k + 5] <8 );
B + = (url [k + 4]);
A + = (url [k + 3] <24 );
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 10:
{
C + = (url [k + 9] <16 );
C + = (url [k + 8] <8 );
B + = (url [k + 7] <24 );
B + = (url [k + 6] <16 );
B + = (url [k + 5] <8 );
B + = (url [k + 4]);
A + = (url [k + 3] <24 );
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 9:
{
C + = (url [k + 8] <8 );
B + = (url [k + 7] <24 );
B + = (url [k + 6] <16 );
B + = (url [k + 5] <8 );
B + = (url [k + 4]);
A + = (url [k + 3] <24 );
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 8:
{
B + = (url [k + 7] <24 );
B + = (url [k + 6] <16 );
B + = (url [k + 5] <8 );
B + = (url [k + 4]);
A + = (url [k + 3] <24 );
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 7:
{
B + = (url [k + 6] <16 );
B + = (url [k + 5] <8 );
B + = (url [k + 4]);
A + = (url [k + 3] <24 );
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 6:
{
B + = (url [k + 5] <8 );
B + = (url [k + 4]);
A + = (url [k + 3] <24 );
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 5:
{
B + = (url [k + 4]);
A + = (url [k + 3] <24 );
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 4:
{
A + = (url [k + 3] <24 );
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 3:
{
A + = (url [k + 2] <16 );
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 2:
{
A + = (url [k + 1] <8 );
A + = (url [k + 0]);
Break;
}
Case 1:
{
A + = (url [k + 0]);
Break;
}
}
Mid = yiwei (a, B, c );
Return mid [2];
}
}
}