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; }
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; }
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; }