Skip to content

Commit

Permalink
Merge pull request #47 from shirioko/master
Browse files Browse the repository at this point in the history
Latest updates
  • Loading branch information
perezdidac committed Aug 28, 2013
2 parents 48f95b3 + 52e3b99 commit 9c8d264
Show file tree
Hide file tree
Showing 23 changed files with 1,205 additions and 95 deletions.
25 changes: 16 additions & 9 deletions WhatsAppApi/Helper/ContactSync.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ protected string _getPostfields(string[] contacts)
foreach (string contact in contacts)
{
string con = contact;
if(!con.Contains('+'))
if (!con.Contains('+'))
{
con = "%2B" + con;
}
Expand All @@ -59,9 +59,16 @@ protected string _executeSync(string cnonce, string[] contacts)
{
writer.Write(postfields);
}
HttpWebResponse response = this.request.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream());
return reader.ReadToEnd();
try
{
HttpWebResponse response = this.request.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream());
return reader.ReadToEnd();
}
catch (Exception)
{
return null;
}
}

protected string _getSyncNonce()
Expand Down Expand Up @@ -93,7 +100,7 @@ protected static string _hash(string data)

protected static string _hash(string data, bool raw)
{
byte[] bytes = System.Text.Encoding.Default.GetBytes(data);
byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(data);
MD5 md5 = MD5.Create();
md5.ComputeHash(bytes);
if (!raw)
Expand All @@ -102,7 +109,7 @@ protected static string _hash(string data, bool raw)
}
else
{
return System.Text.Encoding.Default.GetString(md5.Hash);
return Encoding.GetEncoding("ISO-8859-1").GetString(md5.Hash);
}
}

Expand All @@ -119,7 +126,7 @@ protected static string _hexEncode(byte[] data)
protected void _setHeaders(string nonce, long contentlength)
{
this.request.Headers.Clear();
this.request.UserAgent = "WhatsApp/2.4.7 S40Version/14.26 Device/Nokia302";
this.request.UserAgent = WhatsAppApi.Settings.WhatsConstants.UserAgent;
this.request.Accept = "text/json";
this.request.ContentType = "application/x-www-form-urlencoded";
string foo = this._generateAuth(nonce);
Expand All @@ -134,7 +141,7 @@ protected string _generateAuth(string nonce)
string nc = "00000001";
string digestUri = "WAWA/s.whatsapp.net";
string credentials = this.username + ":s.whatsapp.net:";
credentials += System.Text.Encoding.Default.GetString(Convert.FromBase64String(this.password));
credentials += Encoding.GetEncoding("ISO-8859-1").GetString(Convert.FromBase64String(this.password));
string response = _hash(_hash(_hash(credentials, true) + ":" + nonce + ":" + cnonce) + ":" + nonce + ":" + nc + ":" + cnonce + ":auth:" + _hash("AUTHENTICATE:" + digestUri));
return "X-WAWA:username=\"" + this.username + "\",realm=\"s.whatsapp.net\",nonce=\"" + nonce + "\",cnonce=\"" + cnonce + "\",nc=\"" + nc + "\",qop=\"auth\",digest-uri=\"" + digestUri + "\",response=\"" + response + "\",charset=\"utf-8\"";
}
Expand All @@ -153,4 +160,4 @@ public class ContactSyncResultContainer
{
public ContactSyncResult[] c { get; set; }
}
}
}
61 changes: 61 additions & 0 deletions WhatsAppApi/Parser/PhoneNumber.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;

namespace WhatsAppApi.Parser
{
public class PhoneNumber
{
public string Country;
public string CC;
public string Number;
public string FullNumber
{
get
{
return this.CC + this.Number;
}
}
public string ISO3166;
public string ISO639;
public string MCC;

public PhoneNumber(string number)
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("WhatsAppApi.Parser.countries.csv"))
{
using (var reader = new StreamReader(stream))
{
string csv = reader.ReadToEnd();
string[] lines = csv.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in lines)
{
string[] values = line.Split(new char[] { ',' });
//try to match
if (number.StartsWith(values[1]))
{
//matched
this.Country = values[0].Trim(new char[] { '"' });
//hook: Fix CC for North America
if (values[1].StartsWith("1"))
{
values[1] = "1";
}
this.CC = values[1];
this.Number = number.Substring(this.CC.Length);
this.ISO3166 = values[3].Trim(new char[] { '"' });
this.ISO639 = values[4].Trim(new char[] { '"' });
this.MCC = values[2];
return;
}
}
//could not match!
throw new Exception(String.Format("Could not dissect phone number {0}", number));
}
}
}
}
}
254 changes: 254 additions & 0 deletions WhatsAppApi/Parser/countries.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
"Afghanistan",93,412,"AF","ps"
"Albania",355,276,"AL","sq"
"Alberta",1403,302,"CA","en"
"Alberta",1780,302,"CA","en"
"Algeria",213,603,"DZ","ar"
"Andorra",376,213,"AD","ca"
"Angola",244,631,"AO","pt"
"Anguilla",1264,"365","AI","en"
"Antarctica (Australian bases)",6721,232,"AQ","en"
"Antigua and Barbuda",1268,"344","AG","en"
"Argentina",54,722,"AR","es"
"Armenia",374,283,"AM","hy"
"Aruba",297,363,"AW","nl"
"Ascension",247,658,"AC","en"
"Australia",61,505,"AU","en"
"Austria",43,232,"AT","de"
"Azerbaijan",994,400,"AZ","az"
"Bahamas",1242,"364","BS","en"
"Bahrain",973,426,"BH","ar"
"Bangladesh",880,470,"BD","bn"
"Barbados",1246,"342","BB","en"
"Belarus",375,257,"BY","be"
"Belgium",32,206,"BE","nl"
"Belize",501,702,"BZ","es"
"Benin",229,616,"BJ","fr"
"Bermuda",1441,"350","BM","en"
"Bhutan",975,402,"BT","dz"
"Bolivia",591,736,"BO","es"
"Bosnia and Herzegovina",387,218,"BA","bs"
"Botswana",267,652,"BW","en"
"Brazil",55,724,"BR","pt"
"British Columbia", 1250,302,"CA","en"
"British Columbia", 1604,302,"CA","en"
"British Columbia", 1778,302,"CA","en"
"British Indian Ocean Territory",246,348,"IO","en"
"British Virgin Islands",1284,"348","GB","en"
"Brunei",673,528,"BN","ms"
"Bulgaria",359,284,"BG","bg"
"Burkina Faso",226,613,"BF","fr"
"Burundi",257,642,"BI","rn"
"Cambodia",855,456,"KH","km"
"Cameroon",237,624,"CM","fr"
"Cape Verde",238,625,"CV","pt"
"Cayman Islands",1345,"346","GB","en"
"Central African Republic",236,623,"CF","sg"
"Chad",235,622,"TD","fr"
"Chile",56,730,"CL","es"
"China",86,"460|461","CN","en"
"Colombia",57,732,"CO","es"
"Comoros",269,654,"KM","fr"
"Democratic Republic of the Congo",243,630,"CD","fr"
"Republic of the Congo",242,629,"CG","fr"
"Cook Islands",682,548,"CK","en"
"Costa Rica",506,658,"CR","es"
"Cote d'Ivoire",712,"612","CI","fr"
"Croatia",385,219,"HR","hr"
"Cuba",53,368,"CU","es"
"Cyprus",357,280,"CY","el"
"Czech Republic",420,230,"CZ","cs"
"Denmark",45,238,"DK","da"
"Djibouti",253,638,"DJ","fr"
"Dominica",1767,"366","DM","en"
"Dominican Republic",1809,"370","DO","es"
"Dominican Republic",1829,"370","DO","en"
"East Timor",670,514,"TL","pt"
"Ecuador",593,740,"EC","es"
"Egypt",20,602,"EG","ar"
"El Salvador",503,706,"SV","es"
"Equatorial Guinea",240,627,"GQ","es"
"Eritrea",291,657,"ER","ti"
"Estonia",372,248,"EE","et"
"Ethiopia",251,636,"ET","am"
"Falkland Islands",500,750,"FK","en"
"Faroe Islands",298,288,"FO","fo"
"Fiji",679,542,"FJ","en"
"Finland",358,244,"FI","fi"
"France",33,208,"FR","fr"
"French Guiana",594,742,"GF","fr"
"French Polynesia",689,547,"PF","fr"
"Gabon",241,628,"GA","fr"
"Gambia",220,607,"GM","en"
"Gaza Strip",970,0,"PS","ar"
"Georgia",995,282,"GE","ka"
"Germany",49,262,"DE","de"
"Ghana",233,620,"GH","ak"
"Gibraltar",350,266,"GI","en"
"Greece",30,202,"GR","el"
"Greenland",299,290,"GL","kl"
"Grenada",1473,"352","GD","en"
"Guadeloupe",590,340,"GP","fr"
"Guam",1671,"535","GU","en"
"Guatemala",502,704,"GT","es"
"Guinea",224,611,"GN","fr"
"Guinea-Bissau",245,632,"GW","pt"
"Guyana",592,738,"GY","pt"
"Haiti",509,372,"HT","fr"
"Honduras",504,708,"HN","es"
"Hong Kong",852,454,"HK","zh"
"Hungary",36,216,"HU","hu"
"Iceland",354,274,"IS","is"
"India",91,"404|405|406","IN","hi"
"Indonesia",62,510,"ID","id"
"Iraq",964,418,"IQ","ar"
"Iran",98,432,"IR","fa"
"Ireland (Eire)",353,272,"IE","en"
"Israel",972,425,"IL","he"
"Italy",39,222,"IT","it"
"Jamaica",1876,"338","JM","en"
"Japan",81,"440|441","JP","ja"
"Jordan",962,416,"JO","ar"
"Kazakhstan",7,401,"KZ","kk"
"Kenya",254,639,"KE","sw"
"Kiribati",686,545,"KI","en"
"Kuwait",965,419,"KW","ar"
"Kyrgyzstan",996,437,"KG","ky"
"Laos",856,457,"LA","lo"
"Latvia",371,247,"LV","lv"
"Lebanon",961,415,"LB","ar"
"Lesotho",266,651,"LS","st"
"Liberia",231,618,"LR","en"
"Libya",218,606,"LY","ar"
"Liechtenstein",423,295,"LI","de"
"Lithuania",370,246,"LT","lt"
"Luxembourg",352,270,"LU","fr"
"Macau",853,455,"MO","pt"
"Republic of Macedonia",389,294,"MK","mk"
"Madagascar",261,646,"MG","mg"
"Malawi",265,650,"MW","ny"
"Malaysia",60,502,"MY","en"
"Maldives",960,472,"MV","dv"
"Mali",223,610,"ML","fr"
"Malta",356,278,"MT","mt"
"Manitoba",1204,302,"CA","en"
"Marshall Islands",692,551,"MH","mh"
"Martinique",596,340,"MQ","fr"
"Mauritania",222,609,"MR","ar"
"Mauritius",230,617,"MU","en"
"Mayotte",262,654,"YT","fr"
"Mexico",52,334,"MX","es"
"Federated States of Micronesia",691,550,"FM","en"
"Moldova",373,259,"MD","ru"
"Monaco",377,212,"MC","fr"
"Mongolia",976,428,"MN","mn"
"Montenegro",382,297,"ME","sr"
"Montserrat",1664,"354",MS,"en"
"Morocco",212,"604","MA","ar"
"Mozambique",258,643,"MZ","pt"
"Myanmar",95,414,"MM","my"
"Namibia",264,649,"NA","en"
"Nauru",674,536,"NR","na"
"Netherlands",31,204,"NL","nl"
"Netherlands Antilles",599,362,"AN","nl"
"Nepal",977,429,"NP","ne"
"New Brunswick",1506,302,"CA","en"
"New Caledonia",687,546,"NC","fr"
"New Zealand",64,530,"NZ","en"
"Newfoundland",1709,302,"CA","en"
"Nicaragua",505,710,"NI","es"
"Niger",227,614,"NE","fr"
"Nigeria",234,621,"NG","ha"
"Niue",683,555,"NU","en"
"Norfolk Island",6723,505,"NF","en"
"North Korea",850,467,"KP","ko"
"Northern Mariana Islands",1670,"534","MP","en"
"Northwest Territories",1867,302,"CA","en"
"Norway",47,242,"NO","nb"
"Nova Scotia",1902,302,"CA","en"
"Oman",968,422,"OM","ar"
"Ontario",1416,302,"CA","en"
"Ontario",1519,302,"CA","en"
"Ontario",1613,302,"CA","en"
"Ontario",1647,302,"CA","en"
"Ontario",1705,302,"CA","en"
"Ontario",1807,302,"CA","en"
"Ontario",1905,302,"CA","en"
"Pakistan",92,410,"PK","en"
"Palau",680,552,"PW","en"
"Palestine",970,425,"PS","ar"
"Panama",507,714,"PA","es"
"Papua New Guinea",675,537,"PG","ho"
"Paraguay",595,744,"PY","es"
"Peru",51,716,"PE","es"
"Philippines",63,515,"PH","fil"
"Poland",48,260,"PL","pl"
"Portugal",351,268,"PT","pt"
"Qatar",974,427,"QA","ar"
"Quebec",1418,302,"CA","en"
"Quebec",1450,302,"CA","en"
"Quebec",1514,302,"CA","en"
"Quebec",1819,302,"CA","en"
"Reunion",262,647,"RE","fr"
"Romania",40,226,"RO","ro"
"Russia",7,250,"RU","ru"
"Rwanda",250,635,"RW","rw"
"Saint-Barthelemy",590,340,"BL","fr"
"Saint Helena",290,658,"SH","en"
"Saint Kitts and Nevis",1869,"356","KN","en"
"Saint Lucia",1758,"358","LC","en"
"Saint Martin (French side)",590,340, "MF","fr"
"Saint Pierre and Miquelon",508,308,"PM","fr"
"Saint Vincent and the Grenadines",1670,"360","VC","en"
"Samoa",685,549,"WS","sm"
"Sao Tome and Principe",239,626,"ST","pt"
"Saskatchewan",1306,302,"CA","en"
"Saudi Arabia",966,420,"SA","ar"
"Senegal",221,608,"SN","wo"
"Serbia",381,220,"RS","sr"
"Seychelles",248,633,"SC","fr"
"Sierra Leone",232,619,"SL","en"
"Singapore",65,525,"SG","en"
"Slovakia",421,231,"SK","sk"
"Slovenia",386,293,"SI","sl"
"Solomon Islands",677,540,"SB","en"
"Somalia",252,637,"SO","so"
"South Africa",27,655,"ZA","xh"
"South Korea",82,450,"KR","ko"
"South Sudan",211,659,"SS","en"
"Spain",34,214,"ES","es"
"Sri Lanka",94,413,"LK","si"
"Sudan",249,634,"SD","ar"
"Suriname",597,746,"SR","nl"
"Swaziland",268,653,"SZ","ss"
"Sweden",46,240,"SE","sv"
"Switzerland",41,228,"CH","de"
"Syria",963,417,"SY","ar"
"Taiwan",886,466,"TW","cmn"
"Tajikistan",992,436,"TJ","tg"
"Tanzania",255,640,"TZ","sw"
"Thailand",66,520,"TH","th"
"Togo",228,615,"TG","fr"
"Tokelau",690,690,"TK","tkl"
"Tonga",676,539,"TO","to"
"Trinidad and Tobago",1868,"374","TT","en"
"Tunisia",216,605,"TN","ar"
"Turkey",90,286,"TR","tr"
"Turkmenistan",993,438,"TM","tk"
"Turks and Caicos Islands",1649,"376","TC","en"
"Tuvalu",688,553,"TV","tvl"
"Uganda",256,641,"UG","sw"
"Ukraine",380,255,"UA","uk"
"United Arab Emirates",971,"424|430|431","AE","ar"
"United Kingdom",44,"234|235","GB","en"
"United States of America",1,"310|311|312|313|314|315|316","US","en"
"Uruguay",598,748,"UY","es"
"Uzbekistan",998,434,"UZ","uz"
"Vanuatu",678,541,"VU","bi"
"Venezuela",58,734,"VE","es"
"Vietnam",84,452,"VN","vi"
"U.S. Virgin Islands",1340,"332","VI","en"
"Wallis and Futuna",681,543,"WF","fr"
"West Bank",970,0,"PS","ar"
"Yemen",967,421,"YE","ar"
"Zambia",260,645,"ZM","en"
"Zimbabwe",263,648,"ZW","en"
Loading

0 comments on commit 9c8d264

Please sign in to comment.