Example #1
0
        public bool Extract(NetworkCredential credential, out MailContactList list)
        {
            bool result = false;
            list = new MailContactList();

            try
            {
                var rs = new RequestSettings("eStream-AspNetDating", credential.UserName, credential.Password)
                             {AutoPaging = true};

                var cr = new ContactsRequest(rs);

                Feed<Contact> f = cr.GetContacts();
                foreach (Contact e in f.Entries)
                {
                    foreach (var email in e.Emails)
                    {
                        var mailContact = new MailContact {Email = email.Address, Name = e.Title};
                        list.Add(mailContact);
                    }
                }
                result = true;
            }
            catch (Exception ex)
            {
                Global.Logger.LogError(ex);
            }

            return result;
        }
Example #2
0
        public bool Extract(NetworkCredential credential, out MailContactList list)
        {
            list = new MailContactList();

            bool result = false;

            try
            {
                var ticketAcquirer = new TicketAcquirer();
                string ticket = ticketAcquirer.GetTicket(credential);
                if (string.IsNullOrEmpty(ticket))
                {
                    return false;
                }

                var urib = new UriBuilder();
                urib.Scheme = "HTTPS";
                urib.Path = string.Format("/{0}/LiveContacts", credential.UserName);
                urib.Host = "cumulus.services.live.com";
                urib.Port = 443;

                var request = (HttpWebRequest) WebRequest.Create((Uri) urib.Uri);

                string authHeader = string.Format("WLID1.0 t=\"{0}\"", ticket);
                request.Headers.Add("Authorization", authHeader);

                WebResponse response = request.GetResponse();
                if (response.ContentLength != 0)
                {
                    var xmlDocument = new XmlDocument();
                    xmlDocument.Load(response.GetResponseStream());
                    XmlNodeList contacts = xmlDocument.SelectNodes("/LiveContacts/Contacts/Contact");
                    foreach (XmlNode node in contacts)
                    {
                        XmlNode firstName = node.SelectSingleNode("Profiles/Personal/FirstName");
                        XmlNode lastName = node.SelectSingleNode("Profiles/Personal/LastName");
                        XmlNode firstMail = node.SelectSingleNode("Emails/Email/Address");

                        var mailContact = new MailContact();
                        mailContact.Name = string.Format("{0} {1}", firstName.InnerText, lastName.InnerText);
                        mailContact.Email = firstMail.InnerText;
                        list.Add(mailContact);
                    }
                }
                result = true;
            }
            catch
            {
            }
            return result;
        }
Example #3
0
        public bool Extract(NetworkCredential credential, out MailContactList list)
        {
            bool result = false;

            list = new MailContactList();

            try
            {
                var webClient = new WebClient();
                webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent;
                webClient.Encoding = Encoding.UTF8;

                byte[] firstResponse = webClient.DownloadData(_loginPage);
                string firstRes = Encoding.UTF8.GetString(firstResponse);


                var postToLogin = new NameValueCollection();
                var regex = new Regex("type=\"hidden\" name=\"(.*?)\" value=\"(.*?)\"", RegexOptions.IgnoreCase);
                Match match = regex.Match(firstRes);
                while (match.Success)
                {
                    if (match.Groups[0].Value.Length > 0)
                    {
                        postToLogin.Add(match.Groups[1].Value, match.Groups[2].Value);
                    }
                    match = regex.Match(firstRes, match.Index + match.Length);
                }


                postToLogin.Add(".save", "Sign In");
                postToLogin.Add(".persistent", "y");

                string login = credential.UserName.Split('@')[0];
                postToLogin.Add("login", login);
                postToLogin.Add("passwd", credential.Password);

                webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent;
                webClient.Headers[HttpRequestHeader.Referer] = _loginPage;
                webClient.Encoding = Encoding.UTF8;
                webClient.Headers[HttpRequestHeader.Cookie] = webClient.ResponseHeaders[HttpResponseHeader.SetCookie];

                webClient.UploadValues(_authUrl, postToLogin);
                string cookie = webClient.ResponseHeaders[HttpResponseHeader.SetCookie];

                if (string.IsNullOrEmpty(cookie))
                {
                    return false;
                }

                string newCookie = string.Empty;
                string[] tmp1 = cookie.Split(',');
                foreach (string var in tmp1)
                {
                    string[] tmp2 = var.Split(';');
                    newCookie = String.IsNullOrEmpty(newCookie) ? tmp2[0] : newCookie + ";" + tmp2[0];
                }

                // set login cookie
                webClient.Headers[HttpRequestHeader.Cookie] = newCookie;
                byte[] thirdResponse = webClient.DownloadData(_addressBookUrl);
                string thirdRes = Encoding.UTF8.GetString(thirdResponse);

                string crumb = string.Empty;
                var regexCrumb = new Regex("type=\"hidden\" name=\"\\.crumb\" id=\"crumb1\" value=\"(.*?)\"",
                                           RegexOptions.IgnoreCase);
                match = regexCrumb.Match(thirdRes);
                if (match.Success && match.Groups[0].Value.Length > 0)
                {
                    crumb = match.Groups[1].Value;
                }


                var postDataAB = new NameValueCollection();
                postDataAB.Add(".crumb", crumb);
                postDataAB.Add("vcp", "import_export");
                postDataAB.Add("submit[action_export_yahoo]", "Export Now");

                webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent;
                webClient.Headers[HttpRequestHeader.Referer] = _addressBookUrl;

                byte[] FourResponse = webClient.UploadValues(_addressBookUrl, postDataAB);
                string csvData = Encoding.UTF8.GetString(FourResponse);

                string[] lines = csvData.Split('\n');
                foreach (string line in lines)
                {
                    string[] items = line.Split(',');
                    if (items.Length < 5)
                    {
                        continue;
                    }
                    string email = items[4];
                    string name = items[3];
                    if (!string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(name))
                    {
                        email = email.Trim('\"');
                        name = name.Trim('\"');
                        if (!email.Equals("Email") && !name.Equals("Nickname"))
                        {
                            var mailContact = new MailContact();
                            mailContact.Name = name;
                            mailContact.Email = email;
                            list.Add(mailContact);
                        }
                    }
                }

                result = true;
            }
            catch
            {
            }
            return result;
        }